Переход на сайт нейросети Perplexity AI для поиска информации о Business Studio. Подробнее о возможности см. по ссылке

Доменная аутентификация PostgreSQL на операционной системе Linux

Вопрос:

Можно ли настроить доменный доступ к базе данных PostgreSQL на операционной системе Linux?

Ответ:

Да, такая возможность предусмотрена. Варианты решения:

  • Протокол LDAP
  • Протокол Kerberos
  • PAM-аутентификация

Внимание! Выполнение описанных ниже рекомендаций требует полномочий и квалификации системного администратора.

Протокол LDAP

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

sudo apt-get install libpam-ldap ldap-utils

2. Настройка LDAP-аутентификации:
2.1. Добавить строку в файл pg_hba.conf, который находится в каталоге данных PostgreSQL (например, /etc/postgresql/<версия>/main/pg_hba.conf):

host all all 0.0.0.0/0 ldap ldapserver=<server> ldapprefix="<prefix>" ldapsuffix="<suffix>"

где <server> — адрес вашего LDAP-сервера,
<prefix> и <suffix> — параметры для формирования отличительного имени (Distinguished Name) пользователя.
Пример:

host all all 0.0.0.0/0 ldap ldapserver=ldap.example.com ldapprefix="cn=" ldapsuffix=",dc=example,dc=com"

2.2. Перезапустить PostgreSQL командой:

sudo systemctl restart postgresql

Протокол Kerberos

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

sudo apt-get install krb5-user libpam-krb5

2. Настройка Kerberos-аутентификации:
Отредактировать файл конфигурации сервера (/etc/krb5.conf), указав параметры вашего домена:

[libdefaults]
default_realm = <имя_домена>
dns_lookup_kdc = true

где <имя_домена> - имя домена, например, “EXAMPLE.COM”

Внимание! Далее в примерах используется “EXAMPLE.COM”. Его нужно заменить на имя вашего домена.

[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}

[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

2.2. Получить билет Kerberos:

kinit <username>@EXAMPLE.COM

где <username> - имя пользователя, зарегистрированного в домене

2.3. Проверить, что билет получен:

klist

3. Настройка pg_hba.conf:
Добавить строку для Kerberos-аутентификации в pg_hba.conf, который находится в каталоге данных PostgreSQL (например, /etc/postgresql/<версия>/main/pg_hba.conf):

host all all 0.0.0.0/0 gss include_realm=0 krb_realm=EXAMPLE.COM

4. Создание пользователя в PostgreSQL
Создать пользователя PostgreSQL, который соответствует имени пользователя в Kerberos:

CREATE USER "<username>@EXAMPLE.COM";

Перезапустить PostgreSQL:

sudo systemctl restart postgresql

PAM-аутентификация

PAM должен быть настроен для работы с вашим доменом (LDAP или Kerberos).

1. Настройка PAM
Отредактировать файл /etc/pam.d/postgresql:

auth required pam_ldap.so
account required pam_ldap.so

2. Настройка pg_hba.conf
Добавить строку для PAM-аутентификации:

host all all 0.0.0.0/0 pam

3. Перезапустить PostgreSQL:

sudo systemctl restart postgresql

Driven by DokuWiki