Использование postgresql_anonymizer в Managed Service for PostgreSQL
Расширение postgresql_anonymizer
позволяет замаскировать или заменить в базе данных PostgreSQL персональные данные или информацию, составляющую коммерческую тайну.
Для анонимизации используется декларативный подход: можно объявить правила маскирования с помощью DDL и задать стратегию анонимизации в определении таблицы.
Способы анонимизации данных:
- Статическое маскирование
— заменяет конфиденциальные данные другими в соответствии с правилами маскирования. Восстановить исходные данные невозможно. - Обобщение
— заменяет значение (число или дату) диапазоном, который содержит это значение.
Установить расширение postgresql_anonymizer в кластер PostgreSQL
Чтобы установить расширение postgresql_anonymizer
в кластер PostgreSQL:
-
Подключите к кластеру библиотеку общего пользования с именем
anon
. -
Добавьте расширение
anon
к базе данных. -
Назначьте владельцу этой базы данных роль
mdb_admin
илиmdb_superuser
, если это еще не сделано.Имя владельца можно запросить со списком баз данных в кластере.
Подробнее о расширении 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