16.2. Установка дополнительно поставляемых модулей

Postgres Pro поставляется с набором дополнительных серверных расширений, или модулей. В Linux они распространяются в отдельном пакете postgrespro-contrib. В Windows они устанавливаются вместе с серверными компонентами.

Установив двоичные файлы, вы должны развернуть в базе данных дополнительные нужные вам расширения. В большинстве случае для этого достаточно выполнить команду CREATE EXTENSION. Однако для некоторых расширений также требуется, чтобы при запуске сервера загружались определённые разделяемые библиотеки. Если вы хотите использовать такие расширения, вам нужно настроить параметр

shared_preload_libraries = 'lib1, lib2, lib3'

в файле postgresql.conf вашего экземпляра Postgres Pro и перезапустить сервер, а затем выполнить команду CREATE EXTENSION.

Более конкретные инструкции по установке и настройке определённого расширения вы можете найти в его документации в разделе Приложение F.

Чтобы получить список расширений, доступных в вашей инсталляции Postgres Pro, просмотрите системный каталог pg_available_extensions.

16.2.1. Установка новых расширений в сертифицированной редакции

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

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

В этой процедуре участвуют администратор инфраструктуры и администратор СУБД:

Действия, которые администраторам следует выполнить для установки нового расширения, показаны на Рисунке 16.1.

Рисунок 16.1. Действия администраторов для установки расширения


16.2.1.1. Администратор инфраструктуры: необходимые действия

Файлы конфигурации расширений в каталоге share/extension разрешено изменять только администратору инфраструктуры.

Файл .sql расширения содержит объявление SQL-функций. По умолчанию вызывать их могут только суперпользователи. В ходе процедуры установки расширения администратор инфраструктуры выполняет следующие действия:

  1. Добавляет предложения GRANT в файл .sql, как показано ниже, что позволяет администратору СУБД использовать эти функции без необходимости запрашивать доступ у суперпользователя:

    -- Создание новых версий объектов
    CREATE FUNCTION pg_proaudit_show()
    RETURNS TABLE(db_name text,
      event_type text,
      object_type text,
      object_oid oid,
      role_name text)
    AS 'MODULE_PATHNAME', 'pg_proaudit_show_conf'
    LANGUAGE C VOLATILE;
    REVOKE ALL ON FUNCTION pg_proaudit_show() FROM public;

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

    -- Создание новых версий объектов
    CREATE FUNCTION pg_proaudit_show()
    RETURNS TABLE(db_name text,
      event_type text,
      object_type text,
      object_oid oid,
      role_name text)
    AS 'MODULE_PATHNAME', 'pg_proaudit_show_conf'
    LANGUAGE C VOLATILE;
    REVOKE ALL ON FUNCTION pg_proaudit_show() FROM public;
    GRANT ALL ON FUNCTION pg_proaudit_show() TO PGPRO_DBMS_ADMIN;
  2. Позволяет обычному пользователю установить расширение, изменяя или добавляя свойство trusted в файле .control расширения, и тем самым предоставляя временное разрешение на установку:

    trusted = true

Для использования обёрток сторонних данных ролью PGPRO_DBMS_ADMIN требуется специальное разрешение безопасности. Чтобы предоставить такое разрешение, администратор инфраструктуры добавляет команду GRANT USAGE ON FOREIGN DATA WRAPPER в соответствующий файл .sql расширения. Ниже приведён пример для postgres_fdw:

GRANT USAGE ON FOREIGN DATA WRAPPER postgres_fdw TO PGPRO_DBMS_ADMIN;

16.2.1.2. Администратор СУБД: необходимые действия

Администратору СУБД разрешено изменять файлы конфигурации Postgres Pro, за исключением pg_hba.conf, в котором хранится информация, относящаяся к безопасности. Изменять файл конфигурации pg_hba.conf разрешено только администратору инфраструктуры. В рамках процедуры установки расширения администратор СУБД выполняет следующие действия:

  1. Добавляет файл соответствующей библиотеки в переменную shared_preload_libraries в файле конфигурации postgresql.conf и перезагружает сервер баз данных для применения изменений.

  2. Создаёт расширение, используя команду CREATE EXTENSION.

16.2.1.3. Администратор инфраструктуры: последний шаг

Чтобы обеспечить безопасность во время использования расширения, администратор инфраструктуры возвращает свойство trusted в исходное состояние:

  • Если свойство не было указано, удаляет его.

  • Если свойство имело значение FALSE, возвращает ему значение FALSE.