Для настройки GSSAPI (Kerberos) аутентификации для PostgreSQL 18 требуется выполнить шаги:
- Шаг 1. Ввести сервер PostgreSQL в домен Avanpost DS.
- Шаг 2. Создать SPN (Service Principal Name) в Avanpost DS для сервера PostgreSQL.
- Шаг 3. Поместить keytab-файл на сервер PostgreSQL.
- Шаг 4. Установить права доступа на keytab-файл.
- Шаг 5. Проверить наличие SPN для PostgreSQL в keytab-файле.
- Шаг 6. Настроить конфигурационный файл "postgresql.conf".
- Шаг 7. Настроить конфигурационный файл "pg_ident.conf".
- Шаг 8. Настроить конфигурационный файл "pg_hba.conf".
- Шаг 9. Перезапустить сервис PostgreSQL.
- Шаг 10. Проверить настройку.
Шаг 1. Ввести сервер PostgreSQL в домен Avanpost DS.
Для этого требуется выполнить действия по инструкции: "6.7.1. Введение в домен рабочих станций Unix".
Шаг 2. Создать SPN (Service Principal Name) в Avanpost DS для сервера PostgreSQL.
Для этого требуется:
2.1. В разделе "Компьютеры" веб-интерфейса Avanpost DS на вкладке "Атрибуты" карточки сервера PostgreSQL нажать в строке атрибута "serviceprincipalname" в списке.
2.2. В добавившейся строке для значения атрибута "serviceprincipalname" нажать .
2.3. Указать значение для атрибута по шаблону:
postgres/[FQDN]@[REALM]
Заменить [FQDN] на полное доменное имя сервера PostgreSQL.
Заменить [REALM] на домен Avanpost DS.
postgres/t-ds-gpads04.intr.avanpost.ru@INTR.AVANPOST.RU
2.4. Нажать .
Шаг 3. Поместить keytab-файл на сервер PostgreSQL.
Для этого требуется:
3.1. Нажать в строке сервера PostgreSQL в списке в разделе "Компьютеры" веб-интерфейса Avanpost DS. Keytab-файл будет загружен на локальное устройство.
3.2. Поместить keytab-файл на сервер PostgreSQL в директорию "/etc/krb5.keytab".
Шаг 4. Установить права доступа на keytab-файл.
Для этого требуется выполнить команды на сервере PostgreSQL:
chmod 640 /etc/krb5.keytab chown postgres:postgres /etc/krb5.keytab
Шаг 5. Проверить наличие SPN для PostgreSQL в keytab-файле.
Для этого требуется выполнить команду:
klist -kt /etc/krb5.keytab
#postgres/t-ds-gpads04.intr.avanpost.ru@INTR.AVANPOST.RU (aes256-cts-hmac-sha1-96)
Шаг 6. Настроить конфигурационный файл "postgresql.conf".
Для этого требуется:
6.1. Открыть файл "/var/lib/pgsql/18/data/postgresql.conf" для редактирования:
nano /var/lib/pgsql/18/data/postgresql.conf
6.2. Указать путь к keytab-файлу в качестве значения параметра "krb_server_keyfile" (без префикса "FILE:"):
krb_server_keyfile = '/etc/krb5.keytab'
Параметр "krb_srvname" не требуется, так как он удалён в PostgreSQL 18.
Шаг 7. Настроить конфигурационный файл "pg_ident.conf".
Для этого требуется:
7.1. Открыть файл "/var/lib/pgsql/18/data/pg_ident.conf" для редактирования:
nano /var/lib/pgsql/18/data/pg_ident.conf
7.2. Добавить правило сопоставления имени пользователя из Kerberos по шаблону:
# MAPNAME SYSTEM-USERNAME DATABASE-USERNAME gssmap /^(.*)@[ДОМЕН 3 УР]\.[ДОМЕН 2 УР]\.[ДОМЕН 1 УР]$ \1
# MAPNAME SYSTEM-USERNAME DATABASE-USERNAME gssmap /^(.*)@INTR\.AVANPOST\.RU$ \1
Шаг 8. Настроить конфигурационный файл "pg_hba.conf".
Для этого требуется:
8.1. Открыть файл "/var/lib/pgsql/18/data/pg_hba.conf" для редактирования:
nano /var/lib/pgsql/18/data/pg_hba.conf
8.2. Добавить правило для GSSAPI аутентификации по шаблону:
host all all [IP-адрес сети]/[Маска] gss include_realm=1 krb_realm=[REALM] map=gssmap
Заменить [IP-адрес сети] на IP-адрес сети, из которой будет разрешено подключение.
Заменить [Маска] на маску сети, из которой будет разрешено подключение.
Заменить [REALM] на домен Avanpost DS.
host all all 10.10.16.0/24 gss include_realm=1 krb_realm=INTR.AVANPOST.RU map=gssmap
Необходимо, чтобы значение параметра "map" соответствовало имени правила из конфигурационного файла "pg_ident.conf". (В примерах используется значение "map=gssmap".
Шаг 9. Перезапустить сервис PostgreSQL.
Для этого требуется выполнить команды:
sudo systemctl restart postgresql-18 sudo systemctl status postgresql-18
Шаг 10. Проверить настройку.
Для этого требуется:
10.1. Проверить аутентификацию:
su - testbd # Пароль: # Последний вход в систему: Ср апр 29 17:34:58 MSK 2026 на pts/2 psql -h t-ds-gpads04.intr.avanpost.ru -d postgres # psql (18.1) # Соединение зашифровано GSSAPI # Введите "help", чтобы получить справку. # postgres=>
10.2. Проверить роли пользователя в PostgreSQL:
psql -h t-ds-gpads04.intr.avanpost.ru -d postgres -c "\du+"
Список ролей
Имя роли | Атрибуты | Член групп
-----------------------------------------
testbd | Создаёт БД | {}
