Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:
  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

    • Astra Linux Special Edition РУСБ.10015-16 исп. 1

    • Astra Linux Common Edition 2.12


    Исходные данные

    Предполагается, что уже установлен сервер контроллера домена FreeIPA:

    • с именем домена astra.mta
    • и в этом домене имеется пользователь ipauser@astra.mta

    Сервер базы данных располагается на отдельном компьютере:

    • введённом в домен;
    • с именем db.astra.mta;
    • с постоянным адресом, например, 192.168.32.4.

    Предупреждение
    Располагать сервер базы данных непосредственно на доменном контроллере возможно, но не рекомендуется, так как это повышает уязвимость контроллера, и может негативно влиять на его производительность.

    Регистрация службы базы данных на контроллере домена

    На контроллере домена нужно зарегистрировать службу базы данных. По умолчанию имя службы postgres, соответственно имя принципала Kerberos для службы, работающей узле db.astra.mta, будет postgres/db.astra.mta@ASTRA.MTA.Зарегистрировать службу можно либо через WEB-интерфейс администратора FreeIPA, либо выполнив от имени администратора домена на контроллере домена команду:

    Command
    kinit admin
    ipa service-add postgres/db.astra.mta@ASTRA.MTA

    Дальнейшие операции выполняются на сервере базы данных.

    Установка пакетов на сервере базы данных

    Установить PostgreSQL на сервере базы данных можно командой:

    Command
    sudo apt install postgresql

    Настройка сервера базы данных

    1. Получить таблицу ключей для сервиса базы данных, сохранить её в файле /etc/postgresql/9.6/main/krb5.keytab и предоставить пользователю postgres права доступа к этому файлу:

      Command
      sudo kinit admin
      sudo ipa-getkeytab --principal=postgres/db.astra.mta@ASTRA.MTA --keytab=/etc/postgresql/9.6/main/krb5.keytab
      sudo chown postgres:postgres /etc/postgresql/9.6/main/krb5.keytab


    2. Настроить параметры сервера в файле /etc/postgresql/9.6/main/postgresql.conf:

      1. Указать параметры использования сетевых интерфейсов, изменив значение параметра listen_address. Нужное значение этого параметра зависит от конкретного применения сервера, однако можно выбрать универсальный вариант "использовать все сетевые интерфейсы":

        Блок кода
        listen_addresses = '*'


      2. Указать расположение полученного файла ключей в параметра krb_server_keyfile:

        Блок кода
        krb_server_keyfile = '/etc/postgresql/9.6/main/krb5.keytab'


    3. Настроить в файле /etc/postgresql/9.6/main/pg_hba.conf параметры доступа пользователей к базам данных, в качестве способа аутентификации указав gss, например:

      Блок кода
      host all all  192.168.32.0/4 gss


    4. Перезапустить службу базы данных:

      Command
      sudo systemctl restart postgresql


    Проверка

    Если все действия выполнены успешно, то получив билет Kerberos доменного пользователя ipauser@astra.mta:

    Command
    kinit ipauser

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

    Command
    Titlepsql -h db.astra.mta -U ipauser@ASTRA.MTA
    psql: СБОЙ: роль "ipauser@ASTRA.MTA" не существует

    Указанное выше сообщение об ошибке выводится после успешного подключения к базе данных, и говорит о том, что пользователь аутентифицирован успешно, но база данных для этого пользователя не настроена. Обратите также внимание на то, что доменная часть имени пользователя в примере задаётся как имя области Kerberos (заглавными буквами). Дальнейшие возможности настройки см. ниже.

    Дальнейшие настройки

    В зависимости от поставленных задач могут быть выполнены дальнейшие настройки работы с именами пользователей.

    Дополнительные параметры аутентификации в /etc/postgres/9.6/main/pg_hba.conf

    Для метода gss (GSSAPI) доступны следующие параметры конфигурации (подробности см. в документации PostgreSQL 9.6 или в русском переводе документации):

    • include_realm Когда этот параметр равен 0, из принципала аутентифицированного пользователя убирается область, и оставшееся имя проходит сопоставление имён Этот вариант не рекомендуется и поддерживается в основном для обратной совместимости, так как он небезопасен в окружениях с несколькими областями, если только дополнительно не задаётся параметр krb_realm. Более предпочтительный вариант — оставить значение include_realm по умолчанию (1) и задать в файле /etc/postgres/9.6/main/pg_ident.conf явные правила сопоставления для преобразования имён принципалов в имена пользователей Postgres Pro.

    • map Разрешает сопоставление имён пользователей системы и пользователей баз данных. Чтобы задействовать сопоставление имён, нужно указать map=имя-сопоставления в поле параметров в файле /etc/postgresql/9.6/main/pg_hba.conf

    • krb_realm Устанавливает область, с которой будут сверяться имена принципалов пользователей. Если этот параметр задан, подключаться смогут только пользователи из этой области. Если не задан, подключаться смогут пользователи из любой области, в зависимости от установленного сопоставления имён пользователей.

    Правила сопоставления имён /etc/postgres/9.6/main/pg_ident.conf

    Когда используется внешняя система аутентификации (GSSAPI) имя пользователя операционной системы, устанавливающего подключение, может не совпадать с именем целевого пользователя (роли) базы данных. В этом случае можно применить сопоставление имён пользователей, чтобы сменить имя пользователя операционной системы на имя пользователя БД. Чтобы задействовать сопоставление имён, укажите map=имя-сопоставления в поле параметров в pg_hba.conf. Этот параметр поддерживается для всех методов аутентификации, которые принимают внешние имена пользователей. Так как для разных подключений могут требоваться разные сопоставления, сопоставление определяется параметром имя-сопоставления в pg_hba.conf для каждого отдельного подключения. Подробности см. в  документации PostgreSQL 9.6 (см. тж. русский перевод)