Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 使用Kerberos保护Kafka和Zookeeper_Apache Kafka_Apache Zookeeper_Kerberos - Fatal编程技术网

Apache kafka 使用Kerberos保护Kafka和Zookeeper

Apache kafka 使用Kerberos保护Kafka和Zookeeper,apache-kafka,apache-zookeeper,kerberos,Apache Kafka,Apache Zookeeper,Kerberos,我正在尝试在zookeeper和kafka之间设置kerberos标识 我遵循了此处提供的配置步骤: 卡夫卡代理成功连接到zookeeper集合,代理正在zNode上设置ACL 在Zookeeper中,我可以看到znodes/brokers/id,但ACL的设置如下: 'world,'anyone : r 'sasl,'kafka/kafka-broker-01.c.aesthetic-way-193809.internal@MYREALM.COM : cdrwa 第一个代理创建znode,放

我正在尝试在zookeeper和kafka之间设置kerberos标识

我遵循了此处提供的配置步骤:

卡夫卡代理成功连接到zookeeper集合,代理正在zNode上设置ACL

在Zookeeper中,我可以看到znodes/brokers/id,但ACL的设置如下:

'world,'anyone
: r
'sasl,'kafka/kafka-broker-01.c.aesthetic-way-193809.internal@MYREALM.COM
: cdrwa
第一个代理创建znode,放置其ACL,并使其对所有要添加其ID的节点不可修改

文件中说,我们应该对所有经纪人使用相同的委托人,但文件中的示例与此建议不符:

 // 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";
};
我应该创建一个像卡夫卡·库兹克这样的校长吗_cli@MYREALM.COM并在每个代理的JAAS文件的客户机部分使用它?如果是,我可以在每个代理上共享此用户的密钥表吗


感谢您的帮助。

您可以从主体中删除主机,并对所有代理使用相同的主机,您可以手动设置ACL(不理想),也可以将它们添加到zookeeper配置中

kerberos.removeHostFromPrincipal = true
kerberos.removeRealmFromPrincipal = true

这三个选项中的任何一个都应该有帮助。

kerberos.removeHostFromPrincipal、kerberos.removealmFromPrincipal属性对我不起作用。 在阅读zookeeper版本3.4.14的源代码之后,我将上述属性作为JVM参数传递,例如

-Dzookeeper.kerberos.removeHostFromPrincipal=true
-Dzookeeper.kerberos.removeRealmFromPrincipal=true
在我的案例中,正如跨领域票证验证一样,我添加了如下验证规则:

-Dzookeeper.security.auth_to_local=RULE:[2:$1](.*)
看一看教室

现在我的主题ACL如下所示

getAcl /kafka-cluster/config/topics/test20
'world,'anyone
: r
'sasl,'zookeeper
: cdrwa

这个参考资料有用吗?感谢您提供的文档,但它讨论的是普通身份验证。我需要用Kerberos设置它。我在JAAS配置的客户机部分中为所有kafka代理使用相同的原则,从而使其正常工作。这似乎不完全正确。谢谢。我对所有的经纪人使用了相同的原则来建立zookeeper连接,这是有效的。我使用了kerberos.removeHostFromPrincipal,但它没有改变任何东西。我应该尝试与kerberos.removeAlmFromPrincipal结合使用。