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

Задание 1: Управление функциональностью

Управление функциональностью делится на два аспекта:

  • управление параметрами осуществляется путем изменения значений loading_control.check_allow_list и loading_control.check_hash.
  • управление списком разрешенных модулей и хешами.

Список разрешенных модулей и их характеристики (включая хеш-сумму) хранятся в специальном конфигурационном файле в директории $PGDATA/pg_integrity.

Поскольку эта функциональность тесно интегрирована с общим механизмом контроля целостности конфигурации и объектов БД, управление списком разрешенных объектов (файлов, каталогов) и генерацией для них хеш-сумм осуществляется административными функциями.

Например, для добавления файлов под контроль (в рамках механизма контроля целостности) используется функция pg_integrity_add_file. При обновлении конфигурационного файла этот список считается эталонным, и система ожидает, что администратор СУБД при необходимости будет принудительно обновлять контрольные суммы объектов.

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

Для этого необходимо для каждой созданной БД, каждой схемы, находящихся в ней запретить использование всех доверенных процедурных языков для роли пользователей БД: REVOKE USAGE ON LANGUAGE plpgsql FROM public;. Не доверенные языки может использовать только superuser.

При добавлении нового доверенного языка, администратор должен отозвать права на использование этого языка у роли public, разрешить роли public использование существующих объектов:

GRANT USAGE ON SCHEMA <schema> TO public;

GRANT ALL ON ALL TABLES IN SCHEMA <schema> TO public;

GRANT ALL ON ALL ROUTINES IN SCHEMA <schema> TO public;

GRANT ALL ON ALL SEQUENCES IN SCHEMA <schema> TO public;

Изменить привилегии по умолчанию:

ALTER DEFAULT PRIVILEGES REVOKE ALL ON SCHEMAS FROM public;

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON TABLES TO public;

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO public;

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON ROUTINES TO public;

ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON TYPES TO public;

Подведем итоги​

Вопрос 1

Вопрос 1: Где располагается список разрешенных модулей?

Вопрос 2

Вопрос 2: Какими параметрами управляется функциональность контроля загрузки модулей?