我正在尝试理解Kerberos的基本概念。我在这里读到关于主体的内容,通常看起来像:
primary/instance@REALM
我想问到底什么是primary, instance和realm。当然,在上面的页面和互联网上的其他几个地方都有给出的定义,但是有人能举个例子吗?
我所理解的是:主体是消费者(用户或服务)。实例是用于访问控制的东西。一个主节点可以是多个实例的一部分。Realm是实例的集合?如果我说错了,请纠正我。
如果我有一个服务器:foo.bar.com
在这一点上,我可以有2个领域:REALM1, REALM2。这些可以这样命名吗?或者我可以在这里只有一个领域FOO.BAR.COM?
现在我有3个服务:s1,s2,s3,它们相互通信。由于启用了kerberos,它们中的每一个都必须有一个具有自己的keytab文件的主体。或者,由于每个服务都在与其他服务通信,那么每个keytab文件是否需要具有用于其他服务的主体?
在您给出的示例中:primary/instance@REALM
-
primary =服务名称(例如HTTP在目标服务器上运行)
-
instance = FQDN(通常),它需要在DNS中-它将是
"主"(服务)运行的服务器的FQDN - REALM =通常写成大写(虽然不是强制性的)—这(虽然不总是)与要进行Kerberos身份验证的环境的DNS域名匹配。它是共享公共名称空间和Kerberos数据库的计算机集合。
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"。Kerberos严重依赖DNS。我认为在技术上可以使用非完全限定的Kerberos领域名称,尽管我在实践中从未见过这样做。你这是自找麻烦。对于3个相互通信的服务,是的,每个服务都必须有自己的SPN,它们必须在Kerberos数据库中单独描述否则客户机如何找到它们?在这种情况下,三个不同的服务都需要自己的keytab文件。但是每个keytab都没有其他服务的主体。不要单独用"校长"这个词,就像你刚才那样。主体是一个安全对象,它可能有SPN,也可能没有。视情况而定。存在不同类型的安全主体,例如用户,它们具有upn。服务是spn。计算机是第三类。建议您在Microsoft Active Directory环境中阅读更多内容,这是目前最流行的Kerberos实现版本。http://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx