了解 Kerberos 主体

Understanding Kerberos principals

我想了解 Kerberos 的基本概念。我阅读了有关校长 over here 的信息,通常看起来像:

primary/instance@REALM

我想问一下primary、instance和realm到底是什么。当然上面的页面和互联网上其他几个地方都给出了定义,但是有人可以举个例子吗?

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

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

在你给出的例子中:primary/instance@REALM

  1. primary = 服务名称(例如目标服务器上的 HTTP 运行)

  2. instance = FQDN(通常)需要在 DNS 中 - 它将是 "primary"(服务)在

  3. 上运行的服务器的 FQDN
  4. 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 都没有其他服务的主体。不要像您那样单独使用 "principal" 这个词。主体是一个安全对象,它可能有 SPN,也可能没有。这取决于。有不同类型的安全主体,例如用户,它们有 UPN。服务是 SPN。计算机是第三类。如果您在 Microsoft Active Directory 环境中,建议您在这里阅读更多内容,这是当今最流行的 Kerberos 实施版本。 http://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx