LINUX.ORG.RU
ФорумAdmin

Авторизация на AD из Docker-контейнера

 , ,


0

2

Доброго времени суток.

Необходимо организовать возможность авторизации pgbouncer на AD от microsoft внутри контейнера.

Сам pgbouncer не поддерживает авторизацию на AD (по крайней мере пока). Но pgbouncer умеет авторизовать пользователей по PAM. А PAM умеет брать учетные данные в AD.

Если воспользоваться достаточно простой статьёй на habr, и добавить в /etc/pam.d/pgbouncer следующие содержимое:

auth     [success=2 default=ignore] pam_krb5.so minimum_uid=1000
...
account  [success=2 default=ignore] pam_krb5.so minimum_uid=1000
...
session  [success=2 default=ignore] pam_krb5.so minimum_uid=1000
...
password [success=2 default=ignore] pam_krb5.so minimum_uid=1000
...

то pgbouncer установленный непосредственно на хост работает. Доменные пользователи успешно авторизуются.

Но мне нужно запустить pgbouncer в Docker-контейнере. Устанавливаю в Docker-контейнер всё тоже самое, с созданием точно таких же файлов. Но в Docker-контейнере авторизация не работает. Даже команда login usernamead не работает. Хотя kinit и klist работают корректно.

Кто-нибудь делал авторизацию в AD из Docker-контенера?

★★★★★

Как запускаешь pgbouncer в контейнере? Напрямую или через init-систему внутри контейнера? Что в auth_type в конфиге pgbouncer стоит? Есть возможность временно запустить syslog внутри контейнера(или пробросить /dev/log из хостового, но тогда может быть сложно понять кто именно выдает ошибку - если у тебя pgbouncer и на хосте запущенным останется)?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

pgbouncer запускается через ENTRYPOINT ["docker-entrypoint.sh"], где последняя строка /usr/sbin/pgbouncer -u postgres /etc/pgbouncer/pgbouncer.ini с параметром auth_type = pam.

Проблема не в pgbouncer.
Сам pgbouncer прекрасно работает, если ставить в саму виртуалку.
kinit и klist, а так же login usernamead в виртуалке работают. А вот в Docker-контейнере на работает сама pam+krb5.

Возможно для корректной работы pam+krb5 нужно, что бы в Docker-контейнере работал дополнительный процесс?

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от Pinkbyte

Как альтернативу, нашел вот такой способ.
Но здесь дополнительно используют sssd, а для его функционирования необходимы УЗ для подключения к АД.

Да, с одной стороны, при использовании sssd возможностей больше, здесь и по группам можно фильтровать. Но в данном случае этого не требуется. А указывать дополнительную УЗ в конфигах, как мне кажется - не очень хорошая идея.

Для авторизации достаточно что бы pgbouncer принял подключение, и передал его дальше на СУБД, вся фильтрация проводится уже на нём.
И для этого идеально подходит указанная статья на habr - никаких УЗ в конфигах. Каждый пользователь авторизуется под своими УЗ домена.

И на виртуалке всё идеально работает. Но в Docker-контейнере логин просто не принимается.

ivanlex ★★★★★
() автор топика
Ответ на: комментарий от ivanlex

В контейнере дистрибутив тот же что и на хостовой системе? Может на хосте еще какой-нибудь winbind запущен(или другие потроха samba)?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)

Демоны для PAM не нужны.

Я правильно понял, что ты даже не пытался смотреть в логи?

pam_krb5 пишет в syslog, там и будет ответ.

Еще удостоверься, что у пользователя, пытающегося использовать PAM, есть права на чтение /etc/pam.d/pgbouncer.

bigbit ★★★★★
()