Настройка 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