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

时间:2019-07-15 14:03:19

标签: python kerberos impersonation

我正在python上建立一个可以节俭地连接到hbase的应用程序。这种节俭的连接使用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不太熟悉,因此对任何误解表示歉意。

1 个答案:

答案 0 :(得分:1)

首先,您需要熟悉委托和constrained delegation的概念。 Kerberos支持“模拟”的两种不同方式。

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

长版:在没有很好地了解Kerberos如何工作的情况下,无法成功使用Kerberos。没别的了。您必须首先familiarize yourself with the essential concepts使用Kerberos:票证,委托人,KDC等。然后,当您了解Kerberos的语言时,需要熟悉GSSAPI的元素以及它们如何映射到Kerberos概念。已经学到了。 AFAIK,您在那里找到的用于Kerberos的任何python库都可能是MIT krb5库的包装器,这些库实现了GSSAPI规范。这就是为什么我喜欢python-gssapi库:因为它相当紧密地映射到基础MIT库。这意味着我通常可以弄清楚如何使用MIT文档进行操作,并且通常可以在必要时从MIT邮件列表中获得帮助。