我有两个名为app-cluster和data-cluster的ambari集群。两者都由kerberos担保。两个群集都有自己的KDC服务器。但是相同的域名(由管理团队配置)。
现在我想从app-cluster访问数据集群的名称节点。但是app-cluster没有数据集群的名称节点主体。所以kerberos投掷错误就像
TGS请求结果:-1765328377 / Kernos数据库中找不到服务器nn / machine @ REALM。
我检查了跨领域身份验证。它说两个领域名称应该是不同的。
如何使用具有相同领域名称的两个不同的主kdc服务器实现跨群集kerberos身份验证?
答案 0 :(得分:0)
当我有两个具有相同领域名称的KDC主服务器时,我看到的问题是每个主服务器有两个不同的kerberos数据库,这意味着它们具有不同的数据,使用不同的主密钥加密,使用不同的盐,它们可能甚至使用不同的加密类型(例如,如果从不同的发行版安装)。
例如,您可以通过在两个主服务器上执行以下命令来确保数据不同,然后比较输出:
kdb5_util tabdump keydata
跨领域身份验证的正确情况是,当有两个或至少两个KDC主服务器负责不同域中的不同领域时,您仍然希望来自一个领域的用户在另一个领域中进行身份验证:
https://web.mit.edu/KERBEROS/krb5-1.5/krb5-1.5.4/doc/krb5-admin/Cross_002drealm-Authentication.html
如果在一个领域和一个领域中有两个KDC,那么将其中一个作为主KDC而另一个是奴隶是有意义的。这引出了一个问题 - 首先拥有第二个KDC大师的原因是什么?
app-cluster
和data-cluster
都是?那么拥有不同的领域是有意义的。如果到目前为止还没有高可用性问题(例如,这两个集群仍处于开发阶段),另一种选择可能是仅使用一个没有任何从站的KDC主站,并在所有集群中配置节点以与此通信KDC。
关于领域配置的一般建议:
https://web.mit.edu/kerberos/krb5-1.12/doc/admin/realm_config.html