Возможность полного отключения СЗИ
Функциональность позволяет администраторам безопасности полностью отключить три функциональности безопасности базы данных:
- «Прозрачное защитное преобразование данных (TDE)»;
- «Защита данных от привилегированных пользователей»;
- «Защита параметров конфигурации сервера Pangolin».
Отключение защиты данных от привилегированного пользователя может выполняться в двух режимах: pause (временное отключение) и full (полное отключение). В обоих случаях требуется аутентификация и авторизация администратора безопасности. Право использования соответствующих утилит предоставляется исключительно пользователю kmadmin_pg.
Общие ограничения
Ограничения, обеспечивающие управление и безопасность процесса отключения защиты, и минимизирующие риски ошибок и несанкционированного доступа:
- Перед выполнением каждой утилиты необходимо остановить СУБД Pangolin на мастере и на реплике.
- Утилиты могут использовать только пользователи
kmadmin_pg. - Утилита отключения защиты данных от привилегированного пользователя требует аутентификации и авторизации.
- После отключения защиты данных от привилегированного пользователя необходимо запустить кластер для синхронизации данных.
- В случае использования KMS-заменителя отключить прозрачное защитное преобразование данных (TDE) и защиту конфигурации невозможно, утилиты
tde_disablerиsecure_config_disablerработают только с хранилищами секретов HashiCorp Vault и ОдинКлюч. - Для переноса табличных пространств при отключении TDE требуется достаточный объем свободного места — не менее 110% от размера засекреченных данных.
- Перед использованием
tde_disablerнеобходимо:
- выполнить команду
CHECKPOINTна первом узле; - убедиться, что WAL передан на реплику (
SELECT replay_lsn = pg_current_wal_insert_lsn() FROM pg_stat_replicationвозвращаетtrue); - выполнить команду
CHECKPOINTна втором узле.
- Утилита
tde_disablerпереносит данные с засекреченных табличных пространств на незасекреченные, отключив фоновые процессы, генерирующие данные.
В кластерной конфигурации необходимо соблюдать следующий порядок выполнения утилит:
- Остановка обоих узлов: оба узла кластера должны быть остановлены перед началом выполнения утилит.
- Если включена функциональность «Защита данных от привилегированного пользователя», то в первую очередь выполняется утилита
admin_protection_disablerна мастере. - После этого выполняется запуск кластера для синхронизации данных.
- Когда данные синхронизированы, кластер останавливается.
- Следующим шагом должна выполняться утилита
tde_disablerна обоих узлах. Это связано с необходимостью рассекречивания существующих WAL и установки параметраis_tde_onв локальных файлах конфигурации. - Последним шагом выполняется утилита
secure_config_disablerна обоих узлах. Утилита переименовывает файлы/etc/pangolin-security-utilities/enc_connection_settings.cfg, добавляя к исходному имени файла текущее время. Таким образом выполняется копия этих файлов.
Во время работы утилита tde_disabler переносит данные с преобразованных табличных пространств на непреобразованные. Поэтому целевой каталог должен иметь свободное пространство объемом не менее 110% от размера преобразованных данных. Рекомендуется также отключить программы, генерирующие большие объемы данных, чтобы избежать переполнения диска.
При отключении СЗИ необходимо удалять из session_preload_libraries secret_dump, чтобы не производилось проверки защиты от привилегированных пользователей и не блокировалась работа бэкендов. Если этого не сделать появится сообщение об ошибке:
ERROR: Protection is not set
Описание решения
Разработаны три консольных приложения, каждое из которых предназначено для отключения определенной функциональности системы безопасности.
Отключение функциональности «Защита данных от привилегированного пользователя»
За отключение функциональности «Защита данных от привилегированного пользователя» отвечает утилита admin_protection_disabler.
Утилита поддерживает два режима:
- временное отключение с сохранением всех настроек;
- полное удаление всех объектов и ролей, связанных с защитой (списки защищенных объектов, политики, роли администратора безопасности).
Обязательные аргументы в консольном приложении для отключения функциональности «Защита данных от привилегированного пользователя»:
-u,--username: имя пользователя – администратора безопасности;-p,--password: пароль пользователя – администратора безопасности;-D,--data: каталогPGDATA.
Необязательные аргументы:
--force: режим работы без подтверждений. Необходим для использования утилиты в скриптах;--dry-run: режим отображения предполагаемых действий без фактического выполнения операций;--full: режим отключения с полным удалением всех данных функциональности «Защита данных от привилегированного пользователя»: списки защищенных объектов, политики, роли администратора безопасности.
Алгоритм отключения функциональности «Защита данных от привилегированного пользователя»
-
Временная замена оригинального файл
pg_hba.confдля безопасного отключения защиты:-
сохраняется оригинальный файл
pg_hba.confв каталогеPGDATAпод именемpg_hba.conf.Y.m.d.H.M.S, гдеY– год,m– месяц,d– день,H– час,M– минуты,S– секунды; -
создается временный файл
pg_hba.conf, позволяющий подключаться к СУБД только пользователю, входящему в рольsec_admin_role.host all sec_admin 0.0.0.0/0 scram-sha-256
-
-
Запуск СУБД Pangolin.
-
Подключение под администратором безопасности (например,
sec_admin): -
Вызов функции
PM_DISABLE_PROTECTION()- при режиме
pauseсохраняются политики и роли; - при режиме
fullудаляются данные из таблицpr_object,pr_object_attr,pr_policy,pr_policy_attr,pr_rule,pr_grant,pr_object_kind.
- при режиме
-
Остановка кластера и запуск в single-режиме.
-
Восстановление оригинальной версии файла
pg_hba.confпосле успешного завершения процесса отключения защиты. -
Завершение работы утилиты.
-
Результатом работы утилиты является отсутствие настроек, связанных с функциональностью «Защита данных от привилегированного пользователя».
Если необходимо включить функциональность «Защита данных от привилегированного пользователя», выполните команду initprotection. Команда initprotection инициализирует функциональность и проверяет, полностью ли она выключена или временно.
Если функциональность выключена временно, initprotection предложит включить ее (снять режим паузы).
В консоли появится запрос:
Protection in pause mode. Resume protection? [yes/no]
Пользователь должен выбрать, включить ли функциональность, введя yes или no.
Отключение функциональности «Прозрачное защитное преобразование данных (TDE)»
За отключение функциональности «Прозрачное защитное преобразование данных (TDE)» отвечает поставляемая утилита tde_disabler.
Обязательные аргументы в консольном приложении для отключения функциональности «Прозрачное защитное преобразование данных (TDE)»:
-D,--data: каталогPGDATA;-M,--pangolin-manager-config: конфигурация для кластеров (по умолчанию/etc/pangolin-manager/postgres.yml);-T,--tablespaces: список табличных пространств видаsrc_ts:dst_ts:/location.
Особенности:
- При пустом
-Tв конфигурации standalone: автоматический перенос в текущие каталоги. - В кластерной конфигурации пустой аргумент
-Tозначает: все объекты уже расположены в незасекреченных табличных пространствах и необходимо выполнить только рассекречивание WAL файлов. При наличии объектов на засекреченных табличных пространствах необходимо указать исходные табличные пространства, целевые табличные пространства и каталоги целевых табличных пространств. - Каталоги целевых табличных пространств должны быть созданы заранее.
- Целевые табличные пространства должны отсутствовать. Они создаются в процессе работы утилиты.
Пример использования обязательных аргументов:
tde_disabler -D /pgdata/08/data -T "src_ts1:dst_ts1:/dst/location1;src_ts2:dst_ts2:/dst/location2;src_ts3:dst_ts3:/dst/location3"
Необязательные аргументы:
--force: режим работы без подтверждений. Необходим для использования утилиты в скриптах;--dry-run: режим отображения предполагаемых действий без фактического выполнения операций.
Алгоритм отключения функциональности «Прозрачное защитное преобразование данных (TDE)»
Автоматический режим возможен только в конфигурациях standalone. Его использование в кластерной конфигурации может привести к неработоспособности кластера.
- Проверка функциональности защиты: разрешено ли перемещение объектов.
- Перенос данных в ручном или автоматическом режиме.
- Обновление параметра
is_tde_on = off. - Рассекречивание WAL в single-режиме.
- При успешном отключении функциональности «Прозрачное защитное преобразование данных (TDE)» выводится сообщение
TDE is disabled successfully, в журнале сообщений при включенном классе событийMISCбудет отражена запись аудитаAUDIT: SESSION,1,1,MISC,SET,PARAMETER,is_tde_on,SET is_tde_on = off,<not logged>.
Отключение функциональности «Защита параметров конфигурации сервера»
За отключение функциональности «Защита параметров конфигурации сервера» отвечает утилита secure_config_disabler.
Обязательным аргументом утилиты является – -D, --data (каталог PGDATA).
Необязательным аргументом является – --force: режим работы без подтверждений. Необходим для использования утилиты в скриптах.
Алгоритм отключения функциональности «Защита параметров конфигурации сервера»
-
Запуск утилиты отключения функциональности «Защита параметров конфигурации сервера Pangolin».
-
Запуск СУБД Pangolin в single-режиме.
-
Проверка, включен ли параметр
is_tde_on:- удаление файла конфигурации
/etc/pangolin-security-utilities/enc_connection_settings.cfg, если параметрis_tde_onвыключен; - завершение работы, если параметр
is_tde_onвключен.
- удаление файла конфигурации
-
При успешном отключении функциональности «Защита параметров конфигурации сервера» выводится сообщение
Secure config is disabled successfully, в журнале сообщений при включенном классе событийMISCбудет отражена запись аудитаAUDIT: SESSION,1,1,MISC,SET,PARAMETER,secure_config,SET secure_config = off,<not logged>.
Каждое из этих консольных приложений помогает администраторам безопасности управлять безопасностью данных в системе, отключая избыточные или ненужные механизмы защиты.