Wan*_*rer 5 postgresql kerberos gssapi
我正在尝试通过 GSSAPI 使 postgres 和 kerberos 协同工作。在这一点上遇到麻烦。我真的是这两种技术的新手,这无济于事。我让 postgres 和 kerberos 分别按预期工作,并且正在使用它们(但不是一起使用)。
我在这里找到了说明: postressql-and-kerberos,并没有真正找到任何更详细地解释它的东西。
我在 postgresql.conf 文件中设置了这两行:
krb_server_keyfile = '/var/lib/pgsql/data/krb5.keytab'
krb_srvname = 'postgres'
Run Code Online (Sandbox Code Playgroud)
我已经通过使用该信息运行“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
Run Code Online (Sandbox Code Playgroud)
我重新启动服务器并尝试通过远程客户端连接...
kinit freddyboy
<enter password>
Run Code Online (Sandbox Code Playgroud)
这是成功的,如果我做'klist',我可以看到细节。
然后我尝试通过以下方式连接到 postgres:
psql -l -h postgresserver.hotdog.com
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
pgql: GSSAPI continuation error: Unspecified GSS failure. Minor code may provide more information
GSSAPI continuation error: Server not found in Kerberos database
Run Code Online (Sandbox Code Playgroud)
如果我查看服务器日志文件 (postgresql-Tue.log)……我看到的只是“致命:用户“fred”的 GSSAPI 身份验证失败。
好吧,“fred”是我的 linux 登录名……“freddyboy”是我的用户主体。因此,它看起来就像 postgresql 客户端没有像它应该的那样发送 kerberos 身份验证。我试图向用户发送:
psql -l -h postgresserver.hotdog.com -U freddyboy
Run Code Online (Sandbox Code Playgroud)
日志文件现在显示“用户“freddyboy”的 GSSAPI 身份验证失败,但很明显,它仍然失败。我有一个拥有一些数据库的“freddyboy”的 postgres 用户。我可以在没有 GSSAPI 的情况下在本地正常登录,但似乎无法远程安全地获取。
我怀疑我的客户没有任何地方指定我要使用 GSSAPI。由于这只是一个客户端,因此 conf 文件不存在......所以我猜这可能是一个问题。
还有一点,kerberos 服务器是 ActiveDirectory。我已经看到一些迹象表明主体应该是大写的。我已经尝试制作服务主体(“POSTGRES”)和我的用户主体“FREDDYBOY”,但仍然没有爱。
非常感谢任何帮助。我在客户端和服务器上使用 Postgres 8.4.13。
弗雷德
该错误表明您没有为 Postgres 服务器创建服务主体。krb5.keytab这是存储在服务器本身的文件中的主体。
如何执行此操作可以在 PostgreSQL 文档20.3.3 中找到。GSSAPI 身份验证方法。
如果您已正确创建此主体,则可能发生的情况是您的 DNS 反转无法正常工作。如果你host在 Postgres 服务器的 IP 地址上运行,你应该会回来postgresserver.hotdog.com。如果不这样做,Kerberos 身份验证将不起作用。
| 归档时间: |
|
| 查看次数: |
10264 次 |
| 最近记录: |