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

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

Ключ

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

Оглавление


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

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

  • Astra Linux Common Edition 2.12


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

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

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

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

  • введённом в домен;
  • с именем имя компьютера db.astra.mta;
  • компьютер введен в домен;
  • компьютер имеет постоянный IP-адресс постоянным адресом, например, 192.168.32.4.

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

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

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

Command
kinit admin

и выполнить на контроллере домена команду:

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

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

Установка пакетов

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

Указанные ниже операции выполняются на сервере базы данных.

  1. Установить СУБД PostgreSQL

на сервере базы данных можно командой
  1. :

    Command
    sudo apt install postgresql

  1. Получить от имени суперпользователя билет Kerberos администратора домена:

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

  1. Получить таблицу ключей для

  2. сервиса
  3. службы базы данных,

  4. сохранить
  5. сохранив её в файле /etc/postgresql/

  6. 9.6/main/
  7. krb5.keytab

  8. и предоставить пользователю postgres права доступа к этому файлу
  9. :

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


  14.  Предоставить пользователю postgres права доступа к этому файлу

    Command
    sudo chown postgres:postgres /etc/postgresql
  15. /9.6/main
  16. /krb5.keytab


  17. Настроить параметры

  18. сервера
  19. службы баз данных postgresql:

    1. в файле /etc/postgresql/

  20. 9.6
    1. */main/postgresql.conf:

      Информация
      В Astra Linux Special Edition x.7 конфигурационные файлы хранятся в каталоге /etc/postgresql/11.
      В Astra Linux Special Edition 1.6 и в Astra Linux Common Edition конфигурационные файлы хранятся в каталоге /etc/postgresql/9.6.


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

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


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

  21. параметра
      1. параметре krb_server_keyfile:

        Блок кода
        krb_server_keyfile = '/etc/postgresql
  22. /9.6/main
      1. /krb5.keytab'
  23. Настроить в

    1. В файле /etc/postgresql/

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

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


  25. Для включения аутентификации добавить пользователя postgres в качестве службы в конфигурацию sssd. Для этого в конфигурационном файле /etc/sssd/sssd.conf в секцию [ifp] необходимо добавить следующую строку:

    Блок кода
    [ifp]
    allowed_uids = postgres

    Если значения для параметра allowed_uids уже заданы, то добавить имя postgres через запятую.

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

    Command
    sudo systemctl restart postgresql sssd


Проверка

Если все действия выполнены успешно, то получив билет 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 и документации PostgreSQL 11 или в русском переводе документации):

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

  • map Разрешает сопоставление имён Определяет соответствие имен пользователей системы и пользователей баз данных. Чтобы задействовать сопоставление имён, нужно указать map=имя-сопоставления В основном используется для сопоставления имен пользователей системы и имен пользователей СУБД, но может быть использован и для задания ограничений по конкретным пользователям или домену. Действующие соответствия задаются параметром map=<имя_сопоставления> в поле параметров в файле /etc/postgresql/9.6/*/main/pg_hba.conf. Сами соответствия определяются в файле /etc/postgresql/*/main/pg_ident.conf. При работе в Astra Linux с выключенным мандатным управлением доступом (МРД) достаточно подключаться к СУБД от имени пользователей баз данных, но при включенном МРД для подключения к СУБД необходимо обладать сведениями о классификационной метке пользователя, для чего необходимо создавать соответствия пользователей.

    Например: 

    Имеется доменный пользователь ipauser@astra.mta, в базе данных имеется пользователь dbuser с доступом к одноименной базе данных. Для задания соответствия между этими пользователями:

    1. В файле /etc/postgresql/*/main/pg_hba.conf указать на необходимость использовать соответствие map1:

      Блок кода
       map="map1"


    2. В файле /etc/postgresql/*/main/pg_ident.conf задать само соответствие:

      Блок кода
      # Имя соответствия Имя пользователя системы Имя пользователя СУБД
      map1               ipauser@astra.mta        dbuser

      Имя соответствия может быть произвольным, оно используется для сопоставления записи в файле pg_hba к определенной записи в pg_ident.


    3. Перезапустить службу СУБД:

      Command
      sudo systemctl restart postgresql

      После выполнения указанных действий становится возможным подключение к СУБД с использованием пользователя БД из сессии доменного пользователя ipauser@astra.mta:

      Command
      psql -h db.astra.mta -d dbuser -U dbuser



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

Правила сопоставления

имён

имен /etc/postgres/

9.6

*/main/pg_ident.conf

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