secret_dump. Создание защищенного дампа
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты:
pg_dump.Схема размещения:
pg_catalog.
Расширение входит в состав решения для формирования защищенного дампа и необходимо для его создания. Данное расширение может работать только с включенной функциональностью защиты данных от привилегированных пользователей (admin protection или AP).
Перед установкой расширения необходимо ознакомиться с разделом «Ограничения» текущего документа.
Доработка
Формирование дампа происходит в соответствии с ванильным поведением утилиты pg_dump, за исключением режимов работы:
--compress/-Z- отсутствует сжатие;--format/F- поддерживается только текстовый формат (sql);--inserts- нельзя выгружать данные в форматеinsert, поддерживается толькоCOPY.--cleanкомандыDROPдля удаления существующих объектов базы данных не генерируются при формировании защищенного дампа. Если указаны оба ключа-cи-Содновременно, командаDROP DATABASEне буден создана.
Сформированный дамп отличается от ванильного функциями:
SELECT pg_catalog.sd_load_secret_dump(\<GUID\>, \<TimeStamp\>, \<EncodingCRC\>, \<EncodingKeyDump\>); - функция с GUID и засекреченным ключом, которые будут необходимы при применении дампа;
SELECT pg_catalog.sd_protection_action(\<EncodingCRC\>, query body); - функция с sql-запросом, защищенным от изменения засекреченной контрольной суммой;
SELECT pg_catalog.sd_protection_policies(\<EncodingCRC\>, query policy); - функция для работы с политиками;
SELECT pg_catalog.sd_end_secret_dump(); - функция завершения применения защищенного дампа.
После формирования дампа этим же GUID-ом больше нельзя снять дамп второй раз.
Подробное описание этих функций, а также других объектов расширения приведено в подразделе «Управление» данного документа.
Ограничения
Требования, которые необходимо учитывать при работе с расширением:
- Нельзя добавлять расширение в
shared_preload_libraries. - Расширение возможно установить только на БД, с включенным механизмом защиты данных.
Установка
Расширение должно быть установлено в БД, на которой будет формироваться дамп:
CREATE EXTENSION secret_dump;
Настройка
Для настройки максимального количества выделяемой памяти в конфигурационный файл postgresql.conf добавлен параметр secret_dump.max_memory_allocate. Значение указывается в МБ. По умолчанию размер установлен в 1ГБ. Минимальный 1МБ, максимальный 1ТБ.
К дополнительным объектам расширения можно отнести:
-
secret_dump_schema- схема для таблицыpg_secret_backup_keys; -
secret_dump_schema.pg_secret_backup_keys(guid text not null, key text not null, crc32 integer not null,key_used bool not null)- таблица для связокGUID+KEY. Поля таблицы:guid- идентификатор GUID, соответствующий ключу засекречивания;key- ключ засекречивания в закодированном виде;use_dump- флаг использования ключа для снятия дампа;check_crc- контрольная сумма строки с рассекреченным ключом, для проверки целостности данных.
Управление
Пользователь не должен обращаться к функциям формирования дампа, так как это может привести к некорректной работе БД. В данном разделе рассматриваются функции загрузки дампа и функции работы с ключами засекречивания, с которыми может столкнуться пользователь.
Функции загрузки дампа
sd_load_secret_dump
Синтаксис: void pg_catalog.sd_load_secret_dump(<GUID>, <TimeStamp>, <EncryptedCRC>, <EncryptedKey>).
Описание: функция установки ключа в оперативную память для последующей загрузки защищенных объектов дампа в базу. Ключ либо берется из поля <EncryptedKey>, рассекреченным ключом кодирования ключей (при совпадении его контрольной суммы с полем <EncryptedCRC>), либо из таблицы secret_dump_schema.pg_secret_backup_keys, в соответствии с GUID.
sd_protection_action
Синтаксис: pg_catalog.sd_protection_action(<EncryptedCRC>, <query>).
Описание: функция применения запроса <query> к БД с предварительной проверкой совпадения его контрольной суммы с <EncryptedCRC>. Также в этом запросе возможна постановка под защиту объекта БД.
sd_protection_policies
Синтаксис: pg_catalog.sd_protection_policies(<EncryptedCRC>, <query>).
Описание: функция применения запроса <query> с заданием необходимых политик и назначение прав доступа политик к защищенным объектам. Перед выполнением запроса происходит проверка совпадения его контрольной суммы с <EncryptedCRC>.
sd_end_secret_dump
Синтаксис: pg_catalog.sd_end_secret_dump().
Описание: функция завершения загрузки защищенного дампа.
Функции работы с ключами засекречивания
Синтаксис: pg_catalog.sd_generate_guid_key_dump().
Описание: функция создания связки GUID+KEY. Возвращает значение сформированного GUID в формате base64. Доступна всем пользователям.
sd_generate_guid_key_dump
Синтаксис: pg_catalog.sd_set_guid_key_dump(<GUID>, <KEY>).
Описание: Функция загрузки связки GUID+KEY. В случае успешной загрузки возвращает true, иначе – false. Функция доступна администратору безопасности.
sd_set_guid_key_dump
Синтаксис: pg_catalog.sd_set_guid_key_dump(<GUID>, <KEY>).
Описание: функция загрузки связки GUID+KEY. В случае успешной загрузки возвращает true, иначе – false. Связка GUID+KEY после загрузки не может использоваться для формирования дампа. Функция доступна администратору безопасности.
sd_get_list_guids_dump
Синтаксис: pg_catalog.sd_get_list_guids_dump().
Описание: функция вывода таблицы secret_dump_schema.pg_secret_backup_keys, содержащей поля:
guid- идентификаторGUID, соответствующий ключу засекречивания;key- ключ засекречивания в засекреченном виде;use_dump- флаг использования ключа для снятия дампа;check_crc, контрольная сумма строки с рассекреченным ключом для проверки целостности данных.
Функция доступна администратору безопасности.
sd_get_guid_dump
Синтаксис: pg_catalog.sd_get_guid_dump(<GUID>).
Описание: функция получения ключа по GUID. Функция доступна администратору безопасности.
sd_is_valid_guid_dump
Синтаксис: pg_catalog.sd_is_valid_guid_dump(<GUID>).
Описание: функция проверки флага использования связки GUID+KEY для снятия дампа и проверки целостности информации о ключе. Функция доступна всем пользователям.
sd_drop_guid_dump
Синтаксис: pg_catalog.sd_drop_guid_dump(<GUID>).
Описание: функция удаления связки GUID+KEY из таблицы secret_dump_schema.pg_secret_backup_keys. Функция доступна администратору безопасности.
sd_put_protect_function
Синтаксис: pg_catalog.sd_put_protect_function().
Описание: функция постановки функций pg_catalog.sd_set_guid_key_dump, pg_catalog.sd_get_list_guids_dump, pg_catalog.sd_get_guid_dump, pg_catalog.sd_drop_guid_dump под защиту и создания политики sd_policy_dump. Это означает, что на данную политику будут выдано разрешение вызовов перечисленных функций с назначением политики на sec_admin_role.
Использование модуля/руководство по использованию
Использование модуля подробно описано в разделе «Выгрузка данных в дамп при включенных СЗИ» документа «Сценарии администрирования».
Ссылки на документацию разработчика
Дополнительно поставляемый модуль pg_dump.