Безпека на рівні стовпців і рядків

Керування, врядування й співпраця в Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

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

Таблиця users з доступом на рівні таблиці

  • Таблиця users Claro містить імена, email, кредитні бали та кредитний діапазон
  • Надання SELECT ролі аналітика відкриває всі стовпці
  • Кампанійним аналітикам не потрібні сирі кредитні бали
  • Керування доступом на рівні таблиці цього не розрізняє
Керування, врядування й співпраця в Snowflake

Що таке безпека на рівні стовпців?

  • Стовпець лишається в результатах — змінюється лише значення
  • Привілейовані ролі бачать реальні значення; інші — замасковані
  • Маскування відбувається під час запиту за роллю, що виконує запит = dynamic data masking

Безпека на рівні стовпців

Керування, врядування й співпраця в Snowflake

Dynamic Data Masking

Схема: дві таблиці — з динамічним маскуванням і без нього

Керування, врядування й співпраця в Snowflake

Створення та застосування Masking Policy

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

Зовнішня токенізація

  • Альтернатива Dynamic Data Masking
  • Потрібен сторонній провайдер токенізації та External Function
  • Чутливі значення замінюються токенами, узгодженими між системами
  • Корисно, коли той самий токен мають розпізнавати поза Snowflake

Зовнішня токенізація

1 https://docs.snowflake.com/en/user-guide/security-column-ext-token-use
Керування, врядування й співпраця в Snowflake

Що таке безпека на рівні рядків?

Дві таблиці показують, що аналітик бачить лише певні рядки

Керування, врядування й співпраця в Snowflake

Як працюють Row Access Policies

Схема: запит від US_ANALYST проходить через Row Access Policy для таблиці users і повертає лише рядки US; EU_ANALYST — лише EU з того ж запиту

  • Політика оцінює роль, що виконує запит, і застосовує фільтр
Керування, врядування й співпраця в Snowflake

Створення та застосування Row Access Policy

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

Спільне використання Data Masking і Row Access Policies

Dynamic data masking і row access policies

Керування, врядування й співпраця в Snowflake

Перейдемо до практики!

Керування, врядування й співпраця в Snowflake

Preparing Video For Download...