如何使用 python 模拟或委托 kerberos?

How to impersonate or delegate on kerberos with python?

我正在 python 上设置一个使用 thrift 连接到 hbase 的应用程序。这个 thrift 连接使用 kerberos 作为服务帐户的身份验证,我需要 python 应用程序连接模拟用户,因为我的公司使用带有广告组的 kerberos 来限制对 hbase 上的表的访问。

这是 linux 上的 python 2.7 flask 应用程序 运行。

我正在查看 kerberos 默认库 https://github.com/apple/ccs-pykerberos/blob/master/pysrc/kerberos.py

在第 159 行我发现了这个:

@param delegated: Optional server context containing delegated credentials

但我不熟悉如何使用此凭据。

我只想能够使用模拟连接到 hbase。 谢谢

P.S:我对 kerberos 不太熟悉,如有任何误解,请见谅。

首先,您需要熟悉委托和 constrained delegation 的概念。这些是 Kerberos 支持 "impersonation".

的 2 种不同方式

简短版本: 我推荐约束委派,因为它更受限制。我能找到的唯一 python 绝对支持约束委托的库是 python-gssapi。我用它来模拟使用约束委派的用户,效果很好。

长版本: 如果不很好地理解 Kerberos 在较高层次上的工作原理,就无法成功使用 Kerberos。它不像其他任何东西。您必须首先 familiarize yourself with the essential concepts Kerberos:票据、主体、KDC 等。然后,当您了解 Kerberos 的语言时,您需要熟悉 GSSAPI 的元素,以及它们如何映射到您的 Kerberos 概念学会了AFAIK,您在那里找到的任何 python Kerberos 库都可能是 MIT krb5 库的包装器,它实现了 GSSAPI 规范。这就是我喜欢 python-gssapi 库的原因:因为它与底层 MIT 库的映射相当紧密。这意味着我通常可以使用麻省理工学院的文档弄清楚如何做事,而且如果有必要,我通常可以从麻省理工学院的邮件列表中获得帮助。