在我们的开发商店里,我们已经实施了一半的正确的密钥管理。我们有一个SOAP服务(密钥管理web服务),它可以用于检索其他系统的密码。因此,例如,我可能会向该服务请求密码,比如生产PostgreSQL DB。我使用AD凭证访问web服务,它决定我是否被授权接收DB密码。如果是的话,它就会在回复中被发送。然后,我可以跨所有其他软件组件使用此服务,而不是将DB密码存储在静态配置文件中(如Tomcat的context.xml等)。
当然,问题是,在自动化过程中,传递到web服务的AD凭据需要存储在某个地方。因此,要向DB (或任何其他安全资源)获取密码,只需访问用于存储AD凭据的内容,然后将它们提交到此web服务,web服务将对它们进行身份验证/授权,并返回所请求的资源的密码。经典密钥管理问题。
因此,我试图找出一种方法来保护用于访问服务的AD凭据。有人向我提过Kerberos的事,我开始有点钻研了。
我的理解是,对于Kerberos,将有三个组件:
我的理解是:
因此,首先,如果我的理解是不正确的,请从纠正我开始!
假设我或多或少是正确的,那么我有一些关于这个设置的问题:
发布于 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,那么我们就什么也得不到了。根据其他条件,可能有两种好处:
技术细节太宽泛了。要么您需要具体询问(使用库Y在X语言中设置kerberos身份验证,等等;这类问题应该属于堆栈溢出,而不是这里),要么您需要阅读文件。
https://softwareengineering.stackexchange.com/questions/252567
复制相似问题