Не могу заставить postgres и kerberos (gss) работать вместе

Я пытаюсь заставить Postgres и Kerberos, через GSSAPI, работать вместе. Возникли проблемы на этом этапе. Это не помогает, что я действительно новичок в обеих технологиях. У меня есть и postgres, и kerberos, работающие, как и ожидалось, отдельно, и я использую их обоих (но не вместе).

Я нашел здесь инструкции: postressql-and-kerberos и не нашел ничего, что объясняло бы это более подробно.

Я установил эти две строки в моем файле postgresql.conf:

krb_server_keyfile = '/var/lib/pgsql/data/krb5.keytab' 
krb_srvname = 'postgres'

Я проверил это правильно, запустив "kinit -kt" с этой информацией. Я добавил эти две записи в мой файл pg_hba.conf:

# TYPE  DATABASE  USER    CIDR-ADDRESS   METHOD
host    all       all     10.0.1.0/24    gss include_realm=0 krb_realm=HOTDOG.REALM.COM

Я перезагружаю сервер и пытаюсь подключиться через удаленный клиент...

kinit freddyboy
<enter password>

Это успешно, и я могу видеть детали, если я делаю 'klist'.

Затем я пытаюсь подключиться к postgres через:

psql -l -h postgresserver.hotdog.com

Я получаю сообщение об ошибке:

pgql: GSSAPI continuation error:  Unspecified GSS failure.  Minor code may provide more information
GSSAPI continuation error: Server not found in Kerberos database

Если я посмотрю на файл журнала сервера (postgresql-Tue.log)... все, что я вижу, это "FATAL: аутентификация GSSAPI не удалась для пользователя"fred".

Ну, "fred" - это мой вход в Linux... "freddyboy" - мой пользовательский принцип. Таким образом, он выглядит так, как будто клиент postgresql не отправляет аутентификацию kerberos, как следует. Я попытался отправить пользователю:

 psql -l -h postgresserver.hotdog.com -U freddyboy

Теперь в файле журнала говорится, что "аутентификация GSSAPI не удалась для пользователя"freddyboy", но он, очевидно, все еще не работает. У меня есть пользователь postgres для"freddyboy", которому принадлежат некоторые базы данных. Я могу нормально входить локально, без GSSAPI, но не могу показаться получить удаленно и безопасно.

Я подозреваю, что нигде на моем клиенте я не указал, что хочу использовать GSSAPI. Так как это всего лишь клиент, файлы conf отсутствуют... поэтому, я думаю, это может быть проблемой.

Еще один момент, сервер Kerberos - ActiveDirectory. Я видел некоторые признаки того, что основным должен быть верхний регистр. Я попытался сделать принципала службы ("POSTGRES") и моего принципала пользователя "FREDDYBOY", но по-прежнему не люблю.

Любая помощь с благодарностью. Я использую Postgres 8.4.13 на клиенте и сервере.

Фред

1 ответ

Ошибка предполагает, что вы не создали субъект-службу для сервера Postgres. Это основной, который хранится в них krb5.keytab файл на самом сервере.

Как это сделать, можно найти в документации PostgreSQL, 20.3.3. Метод аутентификации GSSAPI.

Если вы правильно создали этот принцип, то, вероятно, могло произойти то, что ваше обращение DNS не работает правильно. Если вы бежите host на IP-адрес сервера Postgres, вы должны получить postgresserver.hotdog.com назад. Если вы этого не сделаете, аутентификация Kerberos не будет работать.

Другие вопросы по тегам