为了账号安全,请及时绑定邮箱和手机立即绑定

使用 kerberos 使用 golang pq 连接到 postgres 时如何指定密钥表文件?

使用 kerberos 使用 golang pq 连接到 postgres 时如何指定密钥表文件?

Go
慕慕森 2022-12-05 16:37:41
我目前正在使用 golang pq 库连接到 postgres 数据库。我使用 kerberos 主体成功连接,但我无法弄清楚我可以在哪里指定要使用的 keytab 文件。在源代码中,它有点神奇地发生了,使用了一些第三方库。它确实有效,但我需要确定它如何知道我的密钥表存储在哪里,以便它可以请求初始票证。
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

通常 Kerberos 客户端不直接使用密钥表;他们希望初始票已经获得并存在于环境中。也就是说,您应该kinit在运行程序之前,然后客户端的 GSSAPI 库查找KRB5CCNAME环境变量,该变量指向包含 kinit 留下的票证缓存的文件。

(通常对于 MIT Kerberos 或 Heimdal,它可能是除文件之外的许多其他东西......但是'pq'库使用非常小的纯 Go Kerberos 实现,它只接受传统的基于文件的 ccache。所以如果 Krb5 on您的发行版设置为使用“DIR”或“KEYRING”或“KCM”缓存类型,这些在此处不起作用。)

如果初始票KRB5_CLIENT_KTNAME存在,如果环境变量指向一个,MIT Krb5 实现实际上将自动使用密钥表来获取票。不幸的是,'pq' 库不使用系统 Kerberos 库,因此它在这里也不起作用。(但如果您的操作系统使用的是 Heimdal Kerberos,它也不会工作;它是 MIT 特定的扩展。)

因此,始终有效的方法是将KRB5CCNAME 设置为临时路径,然后在运行程序之前使用kinitk5start从密钥表获取票证。(k5start 工具还会在票过期之前自动续订或重新获取票,无需使用 cron。)


真的,整个krb_unix.go文件都令人失望。如果他们可以在 Windows 上调用本机 SSPI,那么他们当然可以在 Linux 上调用本机 GSSAPI ...



查看完整回答
反对 回复 2022-12-05
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号