首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于密钥管理的Kerberos?

用于密钥管理的Kerberos?
EN

Software Engineering用户
提问于 2014-08-07 01:16:19
回答 1查看 660关注 0票数 2

在我们的开发商店里,我们已经实施了一半的正确的密钥管理。我们有一个SOAP服务(密钥管理web服务),它可以用于检索其他系统的密码。因此,例如,我可能会向该服务请求密码,比如生产PostgreSQL DB。我使用AD凭证访问web服务,它决定我是否被授权接收DB密码。如果是的话,它就会在回复中被发送。然后,我可以跨所有其他软件组件使用此服务,而不是将DB密码存储在静态配置文件中(如Tomcat的context.xml等)。

当然,问题是,在自动化过程中,传递到web服务的AD凭据需要存储在某个地方。因此,要向DB (或任何其他安全资源)获取密码,只需访问用于存储AD凭据的内容,然后将它们提交到此web服务,web服务将对它们进行身份验证/授权,并返回所请求的资源的密码。经典密钥管理问题。

因此,我试图找出一种方法来保护用于访问服务的AD凭据。有人向我提过Kerberos的事,我开始有点钻研了。

我的理解是,对于Kerberos,将有三个组件:

  • 密钥管理web服务的客户端
  • 密钥管理web服务
  • Kerberos (票证授予,TGT)服务器

我的理解是:

  1. 客户机(不知何故)从Kerberos获得一个TGT。
  2. 然后,客户端向密钥管理web服务发出对某些资源(例如DB )的请求,但不提供任何AD凭据,而是提供TGT。
  3. 然后将密钥管理web服务重新配置为接受此TGT,并使用“此TGT有效吗?”-type请求对Kerberos服务器进行ping操作。
  4. Kerberos服务器响应并说“是”(或“否”)并响应对DB密码的请求,将其发送回响应中的客户端。

因此,首先,如果我的理解是不正确的,请从纠正我开始!

假设我或多或少是正确的,那么我有一些关于这个设置的问题:

  1. 客户端将如何首先从Kerberos获得TGT?
  2. Kerberos TGT有到期日吗?那么客户如何“重新请求”一个新的TGT?
  3. 密钥管理web服务需要实现任何特定的TCP协议才能与Kerberos对话,还是HTTP足够了?如果Kerberos有自己的协议,那么是否有实现它的Java库呢?(我知道谷歌"java“很容易,但不确定具体要寻找什么,因为我不确定我是否理解这里的体系结构)。
EN

回答 1

Software Engineering用户

发布于 2014-08-11 09:50:54

客户端通过向kerberos服务器发送凭据获得TGT (=票证授予票证)。

现在,我看到了第一个主要问题。你需要一些证件。拥有凭据A真的有足够的优势吗?这样您就可以请求实际需要的凭据B,而不是首先拥有凭据B?一种凭据或其他凭据。我不认为它能解决任何问题。

好的,您向Kerberos服务器发送凭据并收到您的票证。然后在另一个协议中使用GSSAPI来使用您的票证对自己进行身份验证,服务将询问kerberos它应该授予您什么样的权限。

那么,现在您有了凭据A,您传递给服务W (kerberos),获得凭据B(票证),将它传递给服务X,获得凭据C(大概是用户名和密码),并使用它请求实际的服务Y。现在这是一个额外的步骤,并没有真正带来任何好处。幸运的是,你可以摆脱这额外的一步。几乎可以肯定的是,Y服务也可以实现GSSAPI。PostgreSQL当然会做任何微软的事情,因为Active Domain的认证部分是kerberos。所以你可以用kerberos代替X。您向kerberos索取一张票证,然后使用该票证访问数据库。

因此,我们回到了使用证书A要求证书B,刚刚取代了您的内部事务与行业标准。如果您在应用程序配置中需要凭据A,那么我们就什么也得不到了。根据其他条件,可能有两种好处:

  • 您可以对多个服务使用相同的凭据。这对于存储在配置文件中的凭据没有任何真正的好处,但是对于用户提供的凭据,它有很大的优势。因此,如果凭据A来自用户,则需要这样做,因此用户只需要一个用户名和密码。
  • 密码不会以明文形式发送到数据库服务器。如果连接没有加密,并且有被监听的风险,那么它就是一个点。但在这种情况下,您可能也希望避免对数据进行嗅探,在这种情况下,您无论如何都需要SSL,而SSL中的明文密码也不是问题。

技术细节太宽泛了。要么您需要具体询问(使用库Y在X语言中设置kerberos身份验证,等等;这类问题应该属于堆栈溢出,而不是这里),要么您需要阅读文件

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/252567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档