我试图在动物园管理员和卡夫卡之间建立一个kerberos的身份证明。
我遵循了这里可用的配置步骤:gssapi.html#sasl-gssapi-broker。
kafka代理成功地连接到动物园管理员团队,并且代理程序正在znodes上设置ACL。
在中,我可以看到znodes /brokers/I,但是ACL的设置如下:
'world,'anyone
: r
'sasl,'kafka/kafka-broker-01.c.aesthetic-way-193809.internal@MYREALM.COM
: cdrwa第一个代理创建znode,放置它的ACL,并使它对于所有想要添加it的节点都不可修改。
docs说,我们应该对所有代理使用相同的主体,但是文档的示例不符合这一建议:
// ZooKeeper client authentication
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=true
keyTab="/etc/security/keytabs/kafka_server.keytab"
principal="kafka/kafka1.hostname.com@EXAMPLE.COM";
};我应该创建一个主体(如kafka_zk_cli@MYREALM.COM ),并将它作为JAAS文件在每个代理上的客户端部分使用吗?如果是,我可以在每个代理上共享这个用户的keytab吗?
谢谢你的帮助。
发布于 2018-06-14 01:38:20
您可以将主机从主体中删除,并对所有代理使用相同的主机,您可以手动设置all (并不理想),也可以将它们添加到动物园管理员配置中。
kerberos.removeHostFromPrincipal = true
kerberos.removeRealmFromPrincipal = true这三种选择中的任何一种都会对此有所帮助。
发布于 2019-08-19 14:48:15
属性kerberos.removeHostFromPrincipal,kerberos.removeRealmFromPrincipal不是为我工作的。在查看了ZooKeepversion3.4.14的源代码之后,我将上面的属性作为JVM参数传递,如
-Dzookeeper.kerberos.removeHostFromPrincipal=true
-Dzookeeper.kerberos.removeRealmFromPrincipal=true同样,在我的例子中,由于跨域票证的情况,我添加了如下的auth规则:
-Dzookeeper.security.auth_to_local=RULE:[2:$1](.*)现在我的主题ACLS看起来像这样
getAcl /kafka-cluster/config/topics/test20
'world,'anyone
: r
'sasl,'zookeeper
: cdrwahttps://stackoverflow.com/questions/50822948
复制相似问题