Настройка Kerberos аутентификации (GSS)#

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

Имеется сервер контроллера домена FreeIPA:

  • имя домена astra.aaa

  • администратор домена admin@astra.aaa

  • пользователь домена user-01@astra.aaa

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

  • имя сервера dbsrv-01.astra.

  • сервер должен быть введен в домен

  • сервер имеет постоянный IP-адрес, например, 192.168.1.23

Настройка операционной системы#

Для настройки операционной системы необходимо перейти по ссылке и выполнить действия по инструкции:

Ввод в домен Freeipa#

Для ввода в домен необходимо перейти по ссылке и выполнить действия по инструкции:

Установка СУБД Postgres#

Пункт 1#

  • установить СУБД Postgres:

Предупреждение

Требования к версии СУБД Postgres: при установке на ОС Astra Linux Special Edition 1.8 следует выбирать СУБД Postgres версии 15 (входит в состав ОС).

sudo apt install -y postgresql postgresql-contrib

где: ключ -y используется для автоматической установки пакетов без подтверждения.

Настройка СУБД#

Для настройки БД следует перейти в интерфейс командной строки и выполнить:

Пункт 1#

  • переключиться на пользователя postgres:

sudo su postgres

Пункт 2#

  • запустить терминальный клиент СУБД Postgres:

psql

Предупреждение

Если после выполнения команды отображается ошибка «could not change directory to «/home/»: Отказано в доступе» и не появляется приглашение командной строки postgres=#, необходимо вместо su postgres использовать конструкцию su - postgres. Если приглашение postgres=# появилось, то сообщение об ошибке можно проигнорировать.

Если приглашение postgres=# не появляется, то вероятнее всего ОС Astra Linux Special Edition используется в более защищенном режиме, например, «Смоленск». В таком случае нужно для пользователя postgres назначить высокий уровень целостности:

sudo pdpl-user -i 63 postgres

Пункт 3#

  • используя интерактивный интерфейс терминального клиента СУБД Postgres, создать пользователя (символ ; в конце строки при работе с интерактивным интерфейсом обязателен):

postgres=# CREATE USER "user-01@astra.aaa" WITH LOGIN;

где: «user-01@astra.aaa» - доменный пользователь, соответствующий пользователю в базе данных, доменное имя указывается в нижнем регистре

  • если требуется установить пароль пользователю postgres:

postgres=# ALTER USER postgres WITH PASSWORD 'новый_пароль';

Пункт 4#

  • выйти из интерактивного интерфейса терминального клиента СУБД Postgres:

postgres=# \q

Пункт 5#

  • выйти из сеанса пользователя postgres:

exit

Пункт 6#

  • предварительно полученную таблицу ключей для службы базы данных(смотрите в разделе: настройка домена), сохранить в файле /etc/postgresql/dbsrv-01.keytab:

Пункт 7#

  • проверить таблицу ключей:

sudo kinit "postgres/dbsrv-01.astra.aaa@ASTRA.AAA" -V -k -t /etc/postgresql/dbsrv-01.keytab

Пункт 8#

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

sudo chown postgres:postgres /etc/postgresql/dbsrv-01.keytab

Пункт 9#

  • настроить параметры, файле /etc/postgresql/15/main/postgresql.conf:

listen_addresses = '*'  # выбрать универсальный вариант "использовать все сетевые интерфейсы"

krb_server_keyfile = '/etc/postgresql/dbsrv-01.keytab'  # указать расположение полученного файла ключей в параметре krb_server_keyfile

krb_caseins_users = on  # указать должна ли аутентификация Kerberos учитывать регистр символов в именах пользователей, on не учитывать регистр

Пункт 10#

  • в файле /etc/postgresql/15/main/pg_hba.conf настроить параметры доступа пользователей к базам данных, в качестве способа аутентификации указав gss (аутентификация Kerberos).

host all all  0.0.0.0/0 gss include_realm=1

Пункт 11#

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

[ifp]
allowed_uids = postgres

Пункт 12#

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

sudo systemctl restart postgresql sssd

Предупреждение

Не рекомендуется использовать правила сопоставления имен находящиеся в файле /etc/postgres/15/main/pg_ident.conf