Не могу заставить 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 не будет работать.