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

Контроль загрузки расширений и библиотек в адресное пространство СУБД

Описание

Функциональность предназначена для выявления и блокировки загрузки в адресное пространство системы управления базами данных программного обеспечения, не включенного в перечень (список) программного обеспечения, разрешенного для выполнения.

Список разрешенных для загрузки в адресное пространство СУБД расширений и библиотек хранится в конфигурационном файле, находящемся в каталоге /pgdata/<version>/data/pg_integrity. Конфигурационный файл может содержать хеш-сумму, рассчитанную для каждого разрешенного расширения и/или библиотеки. Формат файла и его создание описаны в разделе «Контроль целостности конфигурации и объектов БД».

Настройка

Включение функциональности

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

Параметр

Значение по умолчанию

Описание

Применение

loading_control.check_allow_list

false

Отвечает за активацию проверки расширения или плагина в списке разрешенных

Применяется после перезапуска сервера (команда restart). Если проверка проходит успешно, перезапуск завершится без ошибок. В противном случае будет выведено сообщение об ошибке и инициирована соответствующая обработка

loading_control.check_hash

false

Включает проверку контрольной суммы расширения или плагина

Применяется только при перезапуске (команда restart) и работает только в случае, если loading_control.check_allow_list также установлен в значении true. При успешной проверке сервер перезапустится без ошибок, в противном случае произойдет вывод ошибки и ее обработка

Параметры задаются:

  • на сервере KMS — в настройках самого сервера;
  • для СУБД Pangolin — в файле postgresql.conf или в /etc/pangolin-manager/postgres.yml (если используется Pangolin Manager).

Первоначальная загрузка СУБД происходит с выключенными параметрами (false). Установка параметров в true происходит после создания списка разрешенных файлов.

Управление

Алгоритм работы

При загрузке расширений и библиотек в адресное пространство СУБД:

  1. При включенном параметре loading_control.check_allow_list:

    1. Открывается и читается файл со списком разрешенных файлов (в каталоге /pgdata/<version>/data/pg_integrity).

    2. При отсутствии файла со списком разрешенных файлов или ошибках его чтения, в лог выводятся сообщения вида:

      WARNING:  Library "pg_outline.so" is not loaded, no integrity check file list

      Загрузка расширения или плагина (библиотеки) не происходит.

      Примечание

      При включенной защите параметров конфигурации, при запуске СУБД Pangolin для подключения к KMS и кодирования, используются плагины, на которые указывают символические ссылки/usr/pangolin/lib/libconnector_plugin.so и /usr/pangolin/lib/libencryption_plugin.so. Если функциональность включена локально, то выполняется проверка этих плагинов и в случае ошибок проверки, СУБД Pangolin не сможет запуститься.

      В этом случае, для запуска Pangolin:

      1. Рекомендуется переустановить Pangolin.
      2. Выключите параметр loading_control.check_allow_list и сгенерируйте файл со списком разрешенных файлов.
      3. Включите параметр loading_control.check_allow_list.
    3. Производится поиск загружаемого файла в списке разрешенных файлов.

    4. При отсутствии файла в списке разрешенных, в лог выводятся сообщения вида:

      WARNING:  Library "pg_outline.so" is not loaded, no file in list

      Загрузка расширения или плагина (библиотеки) не происходит.

    5. При наличии файла в списке разрешенных, и если параметр loading_control.check_hash выключен, проверка считается успешно пройденной.

  2. При включенном параметре loading_control.check_hash:

    1. Производится расчет хеш-суммы проверяемого файла.

    2. Рассчитанная хеш-сумма сравнивается с хеш-суммой из списка разрешенных файлов.

    3. Если хеш-суммы не совпадают, в лог выводятся сообщения вида:

      WARNING:  Library "pg_outline.so" is not loaded, file is damaged

      Загрузка расширения или плагина (библиотеки) не происходит.

    4. Если хеш-суммы совпадают, проверка считается успешно пройденной.

При ошибках выводятся сообщения в лог аудита в соответствии с решением описанным в разделе «Журналирование и аудит».