Вопрос:
Можно ли настроить доменный доступ к базе данных PostgreSQL на операционной системе Linux?
Ответ:
Да, такая возможность предусмотрена. Варианты решения:
Внимание! Выполнение описанных ниже рекомендаций требует полномочий и квалификации системного администратора.
Протокол 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