Перейти к основному содержимому

Возможность полного отключения СЗИ

Функциональность позволяет администраторам безопасности полностью отключить три функциональности безопасности базы данных:

Отключение защиты данных от привилегированного пользователя может выполняться в двух режимах: pause (временное отключение) и full (полное отключение). В обоих случаях требуется аутентификация и авторизация администратора безопасности. Право использования соответствующих утилит предоставляется исключительно пользователю kmadmin_pg.

Общие ограничения​

Ограничения, обеспечивающие управление и безопасность процесса отключения защиты, и минимизирующие риски ошибок и несанкционированного доступа:

  1. Перед выполнением каждой утилиты необходимо остановить СУБД Pangolin на мастере и на реплике.
  2. Утилиты могут использовать только пользователи kmadmin_pg.
  3. Утилита отключения защиты данных от привилегированного пользователя требует аутентификации и авторизации.
  4. После отключения защиты данных от привилегированного пользователя необходимо запустить кластер для синхронизации данных.
  5. В случае использования KMS-заменителя отключить прозрачное защитное преобразование данных (TDE) и защиту конфигурации невозможно, утилиты tde_disabler и secure_config_disabler работают только с хранилищами секретов HashiCorp Vault и ОдинКлюч.
  6. Для переноса табличных пространств при отключении TDE требуется достаточный объем свободного места — не менее 110% от размера засекреченных данных.
  7. Перед использованием tde_disabler необходимо:
  • выполнить команду CHECKPOINT на первом узле;
  • убедиться, что WAL передан на реплику (SELECT replay_lsn = pg_current_wal_insert_lsn() FROM pg_stat_replication возвращает true);
  • выполнить команду CHECKPOINT на втором узле.
  1. Утилита tde_disabler переносит данные с засекреченных табличных пространств на незасекреченные, отключив фоновые процессы, генерирующие данные.
примечание

В кластерной конфигурации необходимо соблюдать следующий порядок выполнения утилит:

  1. Остановка обоих узлов: оба узла кластера должны быть остановлены перед началом выполнения утилит.
  2. Если включена функциональность «Защита данных от привилегированного пользователя», то в первую очередь выполняется утилита admin_protection_disabler на мастере.
  3. После этого выполняется запуск кластера для синхронизации данных.
  4. Когда данные синхронизированы, кластер останавливается.
  5. Следующим шагом должна выполняться утилита tde_disabler на обоих узлах. Это связано с необходимостью рассекречивания существующих WAL и установки параметра is_tde_on в локальных файлах конфигурации.
  6. Последним шагом выполняется утилита 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: режим отключения с полным удалением всех данных функциональности «Защита данных от привилегированного пользователя»: списки защищенных объектов, политики, роли администратора безопасности.

Алгоритм отключения функциональности «Защита данных от привилегированного пользователя»​

  1. Временная замена оригинального файл 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
  2. Запуск СУБД Pangolin.

  3. Подключение под администратором безопасности (например, sec_admin):

  4. Вызов функции PM_DISABLE_PROTECTION()

    • при режиме pause сохраняются политики и роли;
    • при режиме full удаляются данные из таблиц pr_object, pr_object_attr, pr_policy, pr_policy_attr, pr_rule, pr_grant, pr_object_kind.
  5. Остановка кластера и запуск в single-режиме.

  6. Восстановление оригинальной версии файла pg_hba.conf после успешного завершения процесса отключения защиты.

  7. Завершение работы утилиты.

  8. Результатом работы утилиты является отсутствие настроек, связанных с функциональностью «Защита данных от привилегированного пользователя».

Если необходимо включить функциональность «Защита данных от привилегированного пользователя», выполните команду 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. Его использование в кластерной конфигурации может привести к неработоспособности кластера.

  1. Проверка функциональности защиты: разрешено ли перемещение объектов.
  2. Перенос данных в ручном или автоматическом режиме.
  3. Обновление параметра is_tde_on = off.
  4. Рассекречивание WAL в single-режиме.
  5. При успешном отключении функциональности «Прозрачное защитное преобразование данных (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: режим работы без подтверждений. Необходим для использования утилиты в скриптах.

Алгоритм отключения функциональности «Защита параметров конфигурации сервера»​

  1. Запуск утилиты отключения функциональности «Защита параметров конфигурации сервера Pangolin».

  2. Запуск СУБД Pangolin в single-режиме.

  3. Проверка, включен ли параметр is_tde_on:

    • удаление файла конфигурации /etc/pangolin-security-utilities/enc_connection_settings.cfg, если параметр is_tde_on выключен;
    • завершение работы, если параметр is_tde_on включен.
  4. При успешном отключении функциональности «Защита параметров конфигурации сервера» выводится сообщение Secure config is disabled successfully, в журнале сообщений при включенном классе событий MISC будет отражена запись аудита AUDIT: SESSION,1,1,MISC,SET,PARAMETER,secure_config,SET secure_config = off,<not logged>.

Каждое из этих консольных приложений помогает администраторам безопасности управлять безопасностью данных в системе, отключая избыточные или ненужные механизмы защиты.