Использование postgresql_anonymizer в Managed Service for PostgreSQL
Расширение postgresql_anonymizer позволяет замаскировать или заменить в базе данных PostgreSQL персональные данные или информацию, составляющую коммерческую тайну.
Для анонимизации используется декларативный подход: можно объявить правила маскирования с помощью DDL и задать стратегию анонимизации в определении таблицы.
Способы анонимизации данных:
- Статическое маскирование
— заменяет конфиденциальные данные другими в соответствии с правилами маскирования. Восстановить исходные данные невозможно. - Обобщение
— заменяет значение (число или дату) диапазоном, который содержит это значение.
Установить расширение postgresql_anonymizer в кластер PostgreSQL
Чтобы установить расширение postgresql_anonymizer в кластер PostgreSQL:
-
Подключите к кластеру библиотеку общего пользования с именем
anon. -
Добавьте расширение
anonк базе данных. -
Назначьте владельцу этой базы данных роль
mdb_admin, если это еще не сделано.Имя владельца можно запросить со списком баз данных в кластере.
Подробнее о расширении postgresql_anonymizer см. в официальной документации
Пример использования
В примере используется статическое маскирование: данные заменяются другими по правилам маскирования.
-
Подключитесь к базе данных с помощью утилиты
psql. -
Создайте таблицу
employeesи наполните ее данными:CREATE TABLE employees ( id SERIAL, name TEXT, company TEXT, code TEXT ); INSERT INTO employees VALUES (111,'Maria Belova','Bank of Saratov','405-657'), (222,'Pavel Petrov','Head and Hands','601-245') ; -
Проверьте результат:
SELECT * FROM employees;id | name | company | code ----+------------------+-----------------+----------- 111 | Maria Belova | Bank of Saratov | 405-657 222 | Pavel Petrov | Head and Hands | 601-245 -
Объявите правила маскирования:
SECURITY LABEL FOR anon ON COLUMN employees.company IS 'MASKED WITH FUNCTION anon.fake_company()'; SECURITY LABEL FOR anon ON COLUMN employees.code IS 'MASKED WITH FUNCTION anon.random_zip()'; -
Замените данные в замаскированных столбцах:
SELECT anon.anonymize_database(); -
Убедитесь, что данные в столбцах
companyиcodeизменились:id | name | company | code ----+------------------+----------------------------------+--------- 111 | Maria Belova | Schneider, Phillips and Martinez | 82175 222 | Pavel Petrov | White, Hines and Ramos | 49306