Безопасность на уровне столбцов и строк

Управление, управление данными и совместная работа в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Проблема управления доступом на уровне таблицы

Таблица пользователей с управлением доступом на уровне таблицы

  • Таблица users Claro содержит имена, email, кредитные рейтинги и категории
  • Предоставление SELECT роли аналитика открывает все столбцы
  • Маркетинговым аналитикам не нужны сырые кредитные рейтинги
  • Управление доступом на уровне таблицы не позволяет сделать такое разграничение
Управление, управление данными и совместная работа в Snowflake

Что такое безопасность на уровне столбцов?

  • Столбец остаётся в результатах — изменяется только значение
  • Привилегированные роли видят реальные значения; остальные — маскированные
  • Маскирование происходит во время запроса на основе роли — это динамическое маскирование данных

column_security_v2.png

Управление, управление данными и совместная работа в Snowflake

Динамическое маскирование данных

Диаграмма с двумя таблицами: одна с динамическим маскированием данных, другая без

Управление, управление данными и совместная работа в Snowflake

Создание и применение политики маскирования

CREATE MASKING POLICY mask_credit_score
  AS (val NUMBER) RETURNS NUMBER ->
  CASE
    WHEN IS_ROLE_IN_SESSION('CREDIT_ADMIN') THEN val
    ELSE -9999
  END;

ALTER TABLE core.users
  MODIFY COLUMN credit_score
  SET MASKING POLICY mask_credit_score;
  • CURRENT_ROLE возвращает активную основную роль
1 https://docs.snowflake.com/en/sql-reference/sql/create-masking-policy#example-normal-masking-policy
Управление, управление данными и совместная работа в Snowflake

Внешняя токенизация

  • Альтернатива динамическому маскированию данных
  • Требует стороннего провайдера токенизации и внешней функции
  • Чувствительные значения заменяются токенами, согласованными между системами
  • Полезно, когда один и тот же токен должен распознаваться за пределами Snowflake

external_tokenization_v2.png

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Управление, управление данными и совместная работа в Snowflake

Что такое безопасность на уровне строк?

Две таблицы, показывающие, что аналитик видит только определённые строки

Управление, управление данными и совместная работа в Snowflake

Как работают политики доступа к строкам

Диаграмма: запрос от US_ANALYST проходит через политику доступа к строкам таблицы users — возвращаются только строки US; EU_ANALYST получает только строки EU

  • Политика оценивает роль запрашивающего и применяет фильтр
Управление, управление данными и совместная работа в Snowflake

Создание и применение политики доступа к строкам

CREATE ROW ACCESS POLICY region_filter
  AS (region_col VARCHAR) RETURNS BOOLEAN ->
  CASE
    WHEN IS_ROLE_IN_SESSION('US_ANALYST') THEN region_col = 'US'
    WHEN IS_ROLE_IN_SESSION('EU_ANALYST') THEN region_col = 'EU'
    ELSE FALSE
  END;

ALTER TABLE core.users
  ADD ROW ACCESS POLICY region_filter ON (region);
Управление, управление данными и совместная работа в Snowflake

Совместное использование маскирования данных и политик доступа к строкам

Динамическое маскирование данных и политики доступа к строкам

Управление, управление данными и совместная работа в Snowflake

Давайте попрактикуемся!

Управление, управление данными и совместная работа в Snowflake

Preparing Video For Download...