Задание 2: Методы обфускации
Динамическое маскирование
-
Запустите
psqlи подключитесь к БД:[postgres@ServerName ~]$ psql -U postgres -d prodPager is used for long output.Border style is 2.Line style is unicode.psql (15.5)Type "help" for help. -
Включите динамическое маскирование:
postgres@prod=# SELECT anon.start_dynamic_masking();┌───────────────────────┐│ start_dynamic_masking │├───────────────────────┤│ t │└───────────────────────┘(1 row)Убедитесь, что появилась схема
mask:postgres@prod=# \dnList of schemas┌────────┬───────────────────┐│ Name │ Owner │├────────┼───────────────────┤│ anon │ postgres ││ mask │ postgres ││ public │ pg_database_owner │└────────┴───────────────────┘(3 rows) -
Создайте пользователя и выдайте права на создание в схеме
public:postgres@prod=# CREATE ROLE dbadmin WITH LOGIN;CREATE ROLEpostgres@prod=# ALTER ROLE dbadmin WITH PASSWORD 'qwerty12';ALTER ROLEpostgres@prod=# GRANT ALL ON SCHEMA public TO dbadmin;GRANT -
Из-под пользователя
dbadminсоздайте таблицу:postgres@prod=# \c - dbadminYou are now connected to database "prod" as user "dbadmin".dbadmin@prod=# CREATE TABLE public.people(id serial NOT NULL PRIMARY key,firstname TEXT,lastname TEXT,email TEXT,city TEXT,address TEXT,phone TEXT,balance numeric(17,2));CREATE TABLEdbadmin@prod=# TABLE public.people;┌────┬───────────┬──────────┬───────┬──────┬─────────┬───────┬─────────┐│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │├────┼───────────┼──────────┼───────┼──────┼─────────┼───────┼─────────┤└────┴───────────┴──────────┴───────┴──────┴─────────┴───────┴─────────┘(0 rows) -
Заполните таблицу случайными персональными данными:
dbadmin@prod=# WITHfname AS (SELECT oid,gender,COALESCE(val,'') first_name FROM anon.first_name),lname AS (SELECT oid,gender,COALESCE(val,'') last_name FROM anon.last_name),email AS (SELECT oid,COALESCE(val,'') email FROM anon.email),city AS (SELECT oid,val as city FROM anon.city),address AS (SELECT oid,COALESCE(val,'') addres FROM anon.address)INSERT INTO public.people(firstname,lastname,email,city,address,phone,balance)SELECTfirst_name,last_name,email,city,address,format('+7 %1$s',substring(ceil(random()*1e12)::TEXT,1,10)),(random()*1e5+3e3)::numeric(17,2)FROM fnameNATURAL JOIN lnameNATURAL JOIN emailNATURAL JOIN cityNATURAL JOIN addressORDER BY random() LIMIT 1e5;INSERT 0 343Полученная таблица:
dbadmin@prod=# TABLE public.people LIMIT 5;┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤│ 1 │ Jo │ Patrick │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 ││ 2 │ Margaret │ Mccarthy │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 ││ 3 │ Tony │ Sims │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 ││ 4 │ Angel │ Duran │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 ││ 5 │ Wayne │ Ayers │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘(5 rows) -
Переключитесь на пользователя
postgres:dbadmin@prod=# \c - postgresYou are now connected to database "prod" as user "postgres". -
Выдайте необходимые права:
postgres@prod=# GRANT USAGE ON SCHEMA mask TO dbadmin;GRANTpostgres@prod=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA mask TO dbadmin;GRANTpostgres@prod=# ALTER DEFAULT PRIVILEGES IN SCHEMA mask GRANT SELECT ON TABLES TO dbadmin;ALTER DEFAULT PRIVILEGES
Далее рассмотрим конкретные примеры методов маскирования. Исходный набор данных, лежащих в схеме public:
┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Jo │ Patrick │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Margaret │ Mccarthy │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Tony │ Sims │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Angel │ Duran │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Wayne │ Ayers │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
Замаскированные данные при этом будут помещаться в одноименной таблице, но в схеме mask.
Фальсификация
Переключитесь на пользователя dbadmin и сфальсифицируем данные в поле firstname:
postgres@prod=# \c - dbadmin
You are now connected to database "prod" as user "dbadmin".
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.firstname IS 'MASKED WITH FUNCTION anon.fake_first_name()';
SECURITY LABEL
Запросим данные из маскированной таблицы:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Yesenia │ Patrick │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Bobby │ Mccarthy │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Larry │ Sims │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Sally │ Duran │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Louis │ Ayers │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
Псевдонимизация
Замаскируем поле lastname:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.lastname IS 'MASKED WITH FUNCTION anon.pseudo_last_name(lastname)';
SECURITY LABEL
Маскированная таблица:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Ricardo │ Carlson │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Harry │ Buckley │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Wanda │ Torres │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Martha │ Neal │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Preston │ Greene │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
При следующем обращении к маскированной таблице будем получать одно и то же значение:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Emily │ Carlson │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Shelby │ Buckley │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Lori │ Torres │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Randy │ Neal │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Dominique │ Greene │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
Рассмотрим пример с солью. Для этого в маскирование вводим произвольное значение, за счет чего получаем другой результат:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.lastname IS 'MASKED WITH FUNCTION anon.pseudo_last_name(lastname,$$ghdgfhd$$)';
SECURITY LABEL
Маскированная таблица изменилась:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Kyle │ Russo │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Dillon │ Boyle │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Shannon │ Frye │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Leroy │ Murray │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Terry │ Schmitt │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
При использовании другой соли получаем изменение данных:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.lastname IS 'MASKED WITH FUNCTION anon.pseudo_last_name(lastname,$$wjz,do$$)';
SECURITY LABEL
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬─────────────┬──────────┬──────────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼─────────────┼──────────┼──────────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Christopher │ Todd │ boyerkrystal@example.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Erin │ Garza │ brandon51@example.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Renee │ Cameron │ anna37@example.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Johnny │ Dunn │ millsjoseph@example.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Michaela │ Trevino │ mgates@example.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴─────────────┴──────────┴──────────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
Частичное маскирование
Выполним маскирование поля email с электронными адресами:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.email IS 'MASKED WITH FUNCTION anon.partial_email(email)';
SECURITY LABEL
Маскированная таблица:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬───────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼───────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
│ 1 │ Mark │ Todd │ bo******@ex******.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 1697687341 │ 3169.77 │
│ 2 │ Mary │ Garza │ br******@ex******.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 4185665191 │ 3418.57 │
│ 3 │ Donna │ Cameron │ an******@ex******.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 7535498786 │ 3753.55 │
│ 4 │ Ann │ Dunn │ mi******@ex******.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 9858672324 │ 3985.87 │
│ 5 │ Andrea │ Trevino │ mg******@ex******.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 1264467555 │ 4264.47 │
└────┴───────────┴──────────┴───────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴───────────────┴─────────┘
(5 rows)
Добавим маскирование номера телефона:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.phone IS 'MASKED WITH FUNCTION anon.random_phone($$+7 XX$$)';
SECURITY LABEL
Полученная таблица с применением двух методов маскирования:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬───────────────────────┬───────────────────┬─────────────────────────────────────────────────────────────────┬────────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼───────────────────────┼───────────────────┼─────────────────────────────────────────────────────────────────┼────────────────┼─────────┤
│ 1 │ Marie │ Todd │ bo******@ex******.com │ Popemouth │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 XX194163708 │ 3169.77 │
│ 2 │ Amy │ Garza │ br******@ex******.com │ Port Ashley │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 XX866869092 │ 3418.57 │
│ 3 │ Jackson │ Cameron │ an******@ex******.net │ East Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 XX927837096 │ 3753.55 │
│ 4 │ Andrew │ Dunn │ mi******@ex******.org │ East Victoriatown │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 XX121036568 │ 3985.87 │
│ 5 │ Rick │ Trevino │ mg******@ex******.org │ Monicaville │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 XX255134318 │ 4264.47 │
└────┴───────────┴──────────┴───────────────────────┴───────────────────┴─────────────────────────────────────────────────────────────────┴────────────────┴─────────┘
(5 rows)
Добавим к маскированию также фальсификацию поля с названиями городов:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.city IS 'MASKED WITH FUNCTION anon.fake_city()';
SECURITY LABEL
Результирующая таблица будет иметь вид:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬───────────────────────┬─────────────────┬─────────────────────────────────────────────────────────────────┬────────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼───────────────────────┼─────────────────┼─────────────────────────────────────────────────────────────────┼────────────────┼─────────┤
│ 1 │ Glenda │ Todd │ bo******@ex******.com │ New John │ (188,"020 Martin Springs Suite 903, Cherylville, WA 25148") │ +7 XX974897040 │ 3169.77 │
│ 2 │ Nancy │ Garza │ br******@ex******.com │ East Robertland │ (576,"6762 Wolf Stravenue Apt. 081, West Thomasport, OH 01468") │ +7 XX799830592 │ 3418.57 │
│ 3 │ Rachael │ Cameron │ an******@ex******.net │ Lake Michelle │ (433,"88378 Donald Canyon, East Roberttown, VT 31812") │ +7 XX475657071 │ 3753.55 │
│ 4 │ Autumn │ Dunn │ mi******@ex******.org │ South Ronald │ (197,"399 Giles Circles Suite 059, New Nancy, DE 15985") │ +7 XX785894658 │ 3985.87 │
│ 5 │ Claudia │ Trevino │ mg******@ex******.org │ Jamesland │ (131,"8646 Gilbert Shores Suite 151, Port Jennifer, WV 21987") │ +7 XX158361030 │ 4264.47 │
└────┴───────────┴──────────┴───────────────────────┴─────────────────┴─────────────────────────────────────────────────────────────────┴────────────────┴─────────┘
(5 rows)
Статическое маскирование
Осуществим статическую замену поля с адресами:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.address IS 'MASKED WITH VALUE $$CONFIDENTIAL$$';
SECURITY LABEL
Получена таблица:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬───────────────────────┬────────────────────┬──────────────┬────────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼───────────────────────┼────────────────────┼──────────────┼────────────────┼─────────┤
│ 1 │ Amy │ Todd │ bo******@ex******.com │ Andrewview │ CONFIDENTIAL │ +7 XX248436603 │ 3169.77 │
│ 2 │ Francisco │ Garza │ br******@ex******.com │ Herreraport │ CONFIDENTIAL │ +7 XX882242919 │ 3418.57 │
│ 3 │ Alicia │ Cameron │ an******@ex******.net │ South Vanessamouth │ CONFIDENTIAL │ +7 XX508102118 │ 3753.55 │
│ 4 │ Samantha │ Dunn │ mi******@ex******.org │ Philliphaven │ CONFIDENTIAL │ +7 XX422929663 │ 3985.87 │
│ 5 │ Dave │ Trevino │ mg******@ex******.org │ Port Kevinland │ CONFIDENTIAL │ +7 XX182747499 │ 4264.47 │
└────┴───────────┴──────────┴───────────────────────┴────────────────────┴──────────────┴────────────────┴─────────┘
(5 rows)
Маскирвоание как удаление значений из вывода
Выполните запрос:
dbadmin@prod=# SECURITY LABEL FOR anon ON COLUMN public.people.balance IS 'MASKED WITH VALUE NULL';
SECURITY LABEL
Получим таблицу:
dbadmin@prod=# SELECT * FROM mask.people LIMIT 5;
┌────┬───────────┬──────────┬───────────────────────┬───────────────┬──────────────┬────────────────┬─────────┐
│ id │ firstname │ lastname │ email │ city │ address │ phone │ balance │
├────┼───────────┼──────────┼───────────────────────┼───────────────┼──────────────┼────────────────┼─────────┤
│ 1 │ Jodi │ Todd │ bo******@ex******.com │ Alexanderside │ CONFIDENTIAL │ +7 XX954292988 │ │
│ 2 │ Loretta │ Garza │ br******@ex******.com │ Robertsberg │ CONFIDENTIAL │ +7 XX522726918 │ │
│ 3 │ Elaine │ Cameron │ an******@ex******.net │ Wheelerville │ CONFIDENTIAL │ +7 XX703474272 │ │
│ 4 │ Curtis │ Dunn │ mi******@ex******.org │ Port Kevin │ CONFIDENTIAL │ +7 XX670653208 │ │
│ 5 │ Lisa │ Trevino │ mg******@ex******.org │ Simonville │ CONFIDENTIAL │ +7 XX710116982 │ │
└────┴───────────┴──────────┴───────────────────────┴───────────────┴──────────────┴────────────────┴─────────┘
(5 rows)
Подведем итоги
Вопрос 1
Вопрос 1: Какой функцией включается динамическое маскирование?
Вопрос 2
Вопрос 2: В какой схеме располагаются замаскированные данные при динамическом маскировании?
Вопрос 3
Вопрос 3: Какой метод маскирования применяется в следующем примере?
SECURITY LABEL FOR anon ON COLUMN public.people.email IS 'MASKED WITH FUNCTION anon.fake_email()';