fruworg.github.io/content/posts/postgres-krb5.md
2023-10-13 03:23:27 +06:00

2.4 KiB
Raw Blame History

title description date tags
Аутентификация в Postgres Pro с помощью Kerberos Используя протокол GSSAPI 2022-11-29T16:21:00+05:00
linux
postgres
krb5

Установка Kerberos и Postgres Pro

Для начала, необходимо установить Postgres Pro и Kerberos. На машину с Postgres Pro Kerberos устанавливается также, как и на клиента.

Конфигурация сервера Kerberos

Добавление принципиала Postgres Pro

kadmin.local
addprinc <username>
addprinc postgres
addprinc postgres/<pg-hostname>
q

Экспорт субъекта-службы

ktutil
add_entry -password -p postgres/<pg-hostname>@<DOMAIN.NAME> -k 1 -e aes256-cts-hmac-sha1-96
wkt postgres.keytab
q

Перенос субъекта-службы на сервер Postgres Pro

Перенести keytab можно как угодно, главное, чтобы он находился в папке с конфигурационными файлами Postgres Pro. Я перенесу с помощью команды scp:

scp postgres.keytab postgres@<pg-hostname>:/var/lib/pgpro/std-13/data/

Конфигурация сервера Postgres Pro

Включение ранее перенесённого keytab

ktutil
read_kt postgres.keytab
q

Изменение конфигруационного файла Postgres Pro

В файл /var/lib/pgpro/std-*/data/postgresql.conf необходимо добавить следующие строки:

krb_server_keyfile = 'postgres.keytab'
listen_addresses = 'localhost, <pg-ip>'

Разрешение подключения

В файл /var/lib/pgpro/std-*/data/pg_hba.conf необходимо добавить следующие строки:

hostgssenc all        postgres	 localhost/32   gss include_realm=0
hostgssenc <database> <username> <client-ip>/32 gss include_realm=0

Получение тикета от Kerberos

kinit postgres

Конфигурация клиента

Получение тикета от Kerberos

kinit <username>

Подключение к Postgres Pro

psql -d <database> -h <pg-hostname> -U <username>