Паспорт проекта
- Тип
- Технические модули
- Задача
- Описанное назначение — anonymization by design: разработчики приложения определяют правила маскирования непосредственно в схеме, где известна семантика модели…
- Для кого
- Разработчики приложений, которым предлагается задавать политику в схеме, и пользователи тестовых/аналитических сценариев.
- Технологии
- PostgreSQL / SQL
- Что потребуется
- Установка расширения требует superuser, затем его необходимо загрузить и создать в базе.
- Основание
- 25 первоисточников
За 30 секунд
Описанное назначение — anonymization by design: разработчики приложения определяют правила маскирования непосредственно в схеме, где известна семантика модели данных.
Одна политика может применяться как статическое изменение данных, скрытие значений для MASKED-ролей, анонимизированный dump, реплика, отдельное представление или обработка внешних таблиц.
Выход зависит от режима: изменённые значения исходной базы; маскированная выдача роли или view; SQL dump; обновляемая логической репликацией копия.
Как это работает
На входе
Схема, таблицы и роли PostgreSQL; правила DDL/security labels; исходные значения и параметры выбранной функции. Для /dump.sh отдельно передаются SQL dump и файл правил. Правила можно импортировать/экспортировать в jsonb, однако формат зависит от версии. Foreign Data Wrappers дают вход через внешние таблицы, в том числе пример CSV.
Механизм
Одна политика может применяться как статическое изменение данных, скрытие значений для MASKED-ролей, анонимизированный dump, реплика, отдельное представление или обработка внешних таблиц. Для преобразований описаны случайные/подставные значения, частичное скрытие и другие функции. detect() помогает находить колонки по словарю имён, но требует ручного просмотра модели.
Результат
Выход зависит от режима: изменённые значения исходной базы; маскированная выдача роли или view; SQL dump; обновляемая логической репликацией копия. Динамическая маска не меняет доступ к оригиналу для остальных ролей. Общего утверждения, что любой такой результат необратимо анонимен, нет: документация отдельно различает псевдонимизацию и анонимизацию.
Что важно понять
Техническое устройство
Security labels сохраняют политику рядом с объектами базы. MASKED-роль получает изменённую выдачу, а static-функции меняют хранимые данные. При Replica Masking логическая репликация передаёт оригинальные данные подписчику, и маски применяются там: канал нуждается в защите, журналы могут содержать оригинал, а привилегированные лица могут отключить обработку. Wrappers объявляют внешние таблицы и накладывают правила на их столбцы.
Для чего создано
Описанное назначение — anonymization by design: разработчики приложения определяют правила маскирования непосредственно в схеме, где известна семантика модели данных. Это цель проекта, без автоматического подтверждения правового соответствия или гарантии отсутствия утечек.
Сценарии использования
Документация показывает CI-тесты на подставных данных, аналитику с сохранением выбранных показателей, маскированные dumps, обновляемую реплику и обработку CSV через foreign table. /dump.sh принимает только plain SQL, тогда как обычный pg_dump от masked-роли допускает custom format. Это отдельные пути; ограничения одного не перенесены на другой.
Идея решения
Отделить определение маски от способа её применения: закрепить правила в схеме и выбирать режим выдачи, разрушительной замены, экспорта или репликации под задачу. Разные режимы имеют разные границы доступа и целостности, поэтому одна политика не превращает их в одинаковые по безопасности операции.
Какую задачу описывает источник
Источник прямо называет трудность поиска прямых и косвенных идентификаторов в модели и выбора способа скрытия. Также описана потребность иметь копию production-базы, которая одновременно маскирована и обновляется; это эксплуатационная задача, без доказанного рыночного спроса.
Что известно из описания
Что потребуется
- Установка расширения требует superuser, затем его необходимо загрузить и создать в базе.
- Для Replica Masking требуется shared_preload_libraries, поскольку session_preload_libraries не читается apply workers.
- Таблица для 3.x перечисляет PostgreSQL 14–18, RHEL 8/9/10, Debian 12/13 и Ubuntu 24.04; stable рекомендован для production, latest — для тестирования новых функций.
- Для обычных masking-задач документация рекомендует выделенные роли с минимальными правами.
Что учитывать
- Статическая обработка уничтожает исходные значения и блокирует переписываемые таблицы.
- Правила таблиц не применяются автоматически к views и не наследуются партициями.
- Возможны нарушения ограничений целостности.
- detect() экспериментален и может пропускать идентификаторы.
- Псевдонимизация сохраняет связь с оригиналом; noise при динамическом доступе уязвим к повторным запросам.
- Selective Masking — тестовая beta, несовместимая с Sampling; параллельная статическая обработка неатомарна.
Из первоисточников
Редакционный обзор NeoBridge Insight по материалам источников ниже. Права на исходные тексты, код и изображения принадлежат их правообладателям. Условия использования указаны в первоисточниках.
Независимое тестирование проекта не проводилось.
gitlab.com
- dalibo/postgresql_anonymizer↗
- README.md↗
- docs/INSTALL.md↗
- docs/anonymous_dumps.md↗
- docs/concepts.md↗
- docs/configure.md↗
- docs/custom_fake_data.md↗
- docs/declare_masking_rules.md↗
- docs/detection.md↗
- docs/dynamic_masking.md↗
- docs/foreign_keys.md↗
- docs/impexp.md↗
- docs/index.md↗
- docs/links.md↗
- docs/load.md↗
- docs/masking_data_wrappers.md↗
- docs/masking_functions.md↗
- docs/masking_views.md↗
- docs/performances.md↗
- docs/privacy_by_default.md↗
- docs/replica_masking.md↗
- docs/sampling.md↗
- docs/selective_masking.md↗
- docs/static_masking.md↗
- docs/support.md↗




Комментарий NeoBridge
Общая справка
Что стоит уточнить
Основания и справочные материалы
SQL ↗