我试图了解Kerberos的基本概念。我读到了主要over here,通常看起来像:
primary/instance@REALM
我想问一下什么是主要,实例和领域。当然,上面的页面和互联网上的其他几个地方都有定义,但有人可以给出一个例子吗?
我的理解是这样的: 主要是消费者(用户或服务)。 实例是用于访问控制的东西。主要可以是多个实例的一部分。 Realm是实例的集合? 如果我错了,请纠正我。
如果我有服务器: foo.bar.com
在这个我可以有2个领域: REALM1,REALM2 。这些可以这样命名吗?或者我可以在这里只有1个领域 FOO.BAR.COM ?
现在我说3个服务: s1,s2,s3 相互交谈。由于启用了kerberos,它们中的每一个都必须拥有一个带有自己的keytab文件的主体?或者由于每个服务都与其他服务进行通信,每个keytab文件是否需要为其他服务都有主体?
答案 0 :(得分:6)
在您给出的示例中:primary / instance @ REALM
primary =服务名称(例如,在目标服务器上运行的HTTP)
instance = FQDN(通常)需要在DNS中 - 它会是 服务器的FQDN即" primary" (服务)在
SPN示例:HTTP /server1.acme.com@ACME.COM。在这个例子中,它可以简化为HTTP / server1.acme.com,假设在机器的环境中设置了DNS。
对于你的例子,foo.bar.com,这个领域很可能是FOO.BAR.COM。但事实并非必须如此。您肯定可以在另一个名称的Kerberos领域中存在foo.bar.com的DNS FQDN,但该领域名称必须是完全合格的,您不能将其作为" REALM1&# 34 ;. Kerberos严重依赖DNS。我认为技术上可能有一个非完全限定的Kerberos领域名称虽然我从未在实践中看到它。你只是要求遇到重大麻烦。对于您的3个服务相互交流,是的,每个服务都必须拥有自己的SPN,它们必须在Kerberos数据库中单独描述,否则客户将如何找到它们?在这种情况下,三个不同的服务都需要自己的keytab文件。但是每个keytab都没有其他服务的主体。不要像你自己喜欢的那样使用" principal"这个词。委托人是可能拥有SPN的安全对象,也可能不是。这取决于。有不同类型的安全主体,例如用户,而不是UPN。服务是SPN。计算机是第三类。如果您在Microsoft Active Directory环境中,建议您在此处阅读更多内容,这是目前最流行的Kerberos实施版本。 http://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx