Перейти к содержимому

Snowflake — Динамическое маскирование данных — Рабочая сессия

Janardhan Reddy Bandi

0:00 / 0:00

Snowflake — Динамическое маскирование данных — Рабочая сессия

13 511 просмотров · 3 г. назад
Janardhan Reddy Bandi
22,4 тыс. подписчиков
13 511 просмотров · 3 г. назад
В моём курсе на Udemy вы можете получить все видеоматериалы, презентации, вопросы, вопросы для собеседований и практические файлы по Snowflake по очень низкой цене. Я буду обновлять этот контент и загружать все новые видео в этот курс. Мой курс по Snowflake на Udemy: https://www.udemy.com/course/snowflak... ----------------------- Безопасность на уровне столбцов с использованием концепции динамического маскирования данных в Snowflake. База данных SNOWFLAKE_SAMPLE_DATA теперь изменена на SFSALESSHARED_SFC_SAMPLES_VA3_SAMPLE_DATA в новых учетных записях Snowflake. Вы можете получить эти примерные данные в разделе Данные -- Частный доступ -- Получить базу данных. Со мной можно связаться по адресу jana.snowflake2@gmail.com. ================= Маскировка политик ================= USE DATABASE PUBLIC_DB; // Создание схемы для политик CREATE SCHEMA MYPOLICIES ; // Попытка клонирования из тестовых данных — мы не можем клонировать таблицы из общих баз данных CREATE TABLE PUBLIC.CUSTOMER CLONE SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER; // Создание тестовой таблицы CREATE TABLE PUBLIC.CUSTOMER AS SELECT * FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER; SELECT * FROM PUBLIC.CUSTOMER; // Предоставление доступа другим ролям GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE sales_users; GRANT USAGE ON SCHEMA PUBLIC_DB.public TO ROLE sales_users; GRANT SELECT ON TABLE PUBLIC_DB.public.CUSTOMER TO ROLE sales_users; GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE sales_admin; GRANT USAGE ON SCHEMA PUBLIC_DB.public TO ROLE sales_admin; GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE market_users; GRANT USAGE ON SCHEMA PUBLIC_DB.public TO ROLE market_users; GRANT SELECT ON TABLE PUBLIC_DB.public.CUSTOMER TO ROLE market_users; GRANT USAGE ON DATABASE PUBLIC_DB TO ROLE market_admin; GRANT USAGE ON SCHEMA PUBLIC_DB.public TO ROLE market_admin; GRANT SELECT ON TABLE PUBLIC_DB.public.CUSTOMER TO ROLE market_admin; ====================== // Хотите скрыть номер телефона и баланс счета? СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПОЛИТИКУ МАСКИРОВАНИЯ customer_phone as (val string) returns string-v CASE WHEN CURRENT_ROLE() in ('SALES_ADMIN', 'MARKET_ADMIN') THEN val ELSE '##-###-###-'||SUBSTRING(val,12,4) END; СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПОЛИТИКУ МАСКИРОВАНИЯ customer_accbal as (val number) returns number-v CASE WHEN CURRENT_ROLE() in ('SALES_ADMIN', 'MARKET_ADMIN') THEN val ELSE '####' END; CREATE OR REPLACE MASKING POLICY customer_accbal2 as (val number) returns number-v CASE WHEN CURRENT_ROLE() in ('SALES_ADMIN', 'MARKET_ADMIN') THEN val ELSE 0 END; // Применение политик маскирования к столбцам таблицы CUSTOMER ALTER TABLE PUBLIC.CUSTOMER MODIFY COLUMN C_PHONE SET MASKING POLICY customer_phone; ALTER TABLE PUBLIC.CUSTOMER MODIFY COLUMN C_ACCTBAL SET MASKING POLICY customer_accbal; // Переключиться на sales_users и посмотреть данные USE ROLE sales_users; SELECT * FROM PUBLIC.CUSTOMER; // Сбросить политику customer_accbal и установить customer_accbal2 ALTER TABLE PUBLIC.CUSTOMER MODIFY COLUMN C_ACCTBAL UNSET MASKING POLICY; ALTER TABLE PUBLIC.CUSTOMER MODIFY COLUMN C_ACCTBAL SET MASKING POLICY customer_accbal2; // Переключиться на sales_admin и посмотреть данные USE ROLE sales_admin; SELECT * FROM PUBLIC.CUSTOMER; // Изменение политик ALTER MASKING POLICY customer_phone SET body -v CASE WHEN CURRENT_ROLE() in ('SALES_ADMIN', 'MARKET_ADMIN') THEN val ELSE '##########' END; // Переключитесь на sales_users и посмотрите данные USE ROLE sales_users; SELECT * FROM PUBLIC.CUSTOMER; // Чтобы увидеть политики маскирования USE ROLE SYSADMIN; SHOW MASKING POLICIES; DESC MASKING POLICY CUSTOMER_PHONE; // Чтобы увидеть, где вы применили политику SELECT * FROM table(information_schema.policy_references(policy_name=v'CUSTOMER_PHONE')); // Применение к представлениям ALTER VIEW MYVIEWS.VW_CUSTOMER MODIFY COLUMN C_PHONE SET MASKING POLICY customer_phone; // Переключитесь на sales_users и посмотрите данные USE ROLE sales_users; SELECT * FROM MYVIEWS.VW_CUSTOMER; // Удаление политик маскирования DROP MASKING POLICY customer_phone; ALTER TABLE PUBLIC.CUSTOMER MODIFY COLUMN C_ACCTBAL UNSET MASKING POLICY; DROP MASKING POLICY customer_accbal2;