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;