2016-11-04 99 views
0

我想了解Kerberos基本概念。我看了一下校长over here,通常是这样的:了解Kerberos主体

primary/[email protected] 

我想问到底什么是主,实例和领域。当然在上面的网页和互联网上的其他几个地方都有定义,但是有人可以举个例子吗?

我的理解是这样的: 主要是消费者(用户或服务)。 实例是用于访问控制的东西。主要可以是多个实例的一部分。 领域是实例的集合吗? 如果我错了,请纠正我。

如果我有一台服务器:foo.bar.com
在此我可以我有2个领域:REALM1,REALM2。这些可以这样命名吗?或者我可以在这里只有1个领域:FOO.BAR.COM
现在我说3个服务:s1,s2,s3彼此交谈。由于kerberos已启用,它们中的每一个都必须具有带有自己的密钥表文件的主体?或者由于每个服务都在与每个其他服务交谈,每个keytab文件是否需要为每个其他服务提供主体?

回答

5

在这个例子中你给:主/实例@ REALM

  1. 初级=服务名(例如,HTTP的目标服务器上运行的)

  2. 实例= FQDN(典型地),其需要是在DNS中 - 它将是 “主”(服务)运行的服务器的FQDN

  3. REALM =通常以大写(尽管不是强制性的) - 这个(尽管不是总是)与DNS域匹配其中的环境名称Kerberos身份验证将发生。它是一组共享通用名称空间和Kerberos数据库的计算机。

SPN的示例:HTTP/[email protected]。在这个例子中,假设DNS在机器环境中正确设置,它可以缩短为HTTP/server1.acme.com。

对于您的示例,foo.bar.com,领域可能是FOO.BAR.COM。它不一定是。您肯定可以拥有另一个名称的Kerberos域中存在的foo.bar.com的DNS FQDN,但该域名必须是完全限定的,您不能将其作为“REALM1”。 Kerberos严重依赖于DNS。我想在技术上可能有一个非完全合格的Kerberos领域名称,尽管我从来没有在实践中看到它。你只会要求重大的麻烦。对于您的3个服务互相交谈,是的,他们每个人都必须拥有自己的SPN,他们必须在Kerberos数据库中单独描述,否则客户如何找到它们?在这种情况下,三种不同的服务都需要各自的密钥表文件。但是每个keytab都不会有其他服务的主体。不要使用“principal”这个词,就像你自己那样。委托人是可能拥有SPN的安全对象,也可能不是。这取决于。有不同类型的安全主体,例如用户,它们具有UPN。服务是SPN。计算机是第三种类型。建议您在这里阅读更多内容,如果您在Microsoft Active Directory环境中,这是当今最流行的Kerberos版本。http://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx

+0

感谢您的解释,让它现在好多了!因此,如果对于我的服务s1(它以自己的用户身份运行 - 说** s1user **),我想让它访问服务s2,我该怎么做?说这两个都在同一个实例上。我不会为** s1user/instance @ realm **创建一个新的主体,然后将其添加到s2的keytab文件中? – rgamber

+0

这不是原始问题的一部分,是一个更先进的话题,也是我不熟悉的实现。我做了一次Google搜索,为你找到了这个:http://docs.openstack.org/developer/keystoneauth/_sources/authentication-plugins.txt –