当前位置: 首页 > 知识库问答 >
问题:

使用Kerberos保护Kafka和Zookeeper

柳宪
2023-03-14

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

我遵循了此处提供的配置步骤:https://docs.confluent.io/4.1.1/kafka/authentication_sasl_gssapi.html#sasl-gssapi经纪人。

Kafka代理成功连接到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,并使其对所有要html" target="_blank">添加其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";
};

我应该创建一个像Kafka·库兹克这样的校长吗_cli@MYREALM.COM并在每个代理的JAAS文件的客户机部分使用它?如果是,我可以在每个代理上共享此用户的密钥表吗?

谢谢你的帮助。

共有2个答案

杜俊逸
2023-03-14

属性为kerberos。从主体、kerberos中移除HostFromPrincipal。校长没有为我工作。在阅读zookeeper版本3.4.14的源代码之后,我将上述属性作为JVM参数传递,例如

-Dzookeeper.kerberos.removeHostFromPrincipal=true
-Dzookeeper.kerberos.removeRealmFromPrincipal=true

在我的案例中,正如跨领域票证验证一样,我添加了如下验证规则:

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

看看班级https://github.com/apache/zookeeper/blob/release-3.4.14/zookeeper-server/src/main/java/org/apache/zookeeper/server/auth/SaslServerCallbackHandler.java

现在我的主题ACL如下所示

getAcl /kafka-cluster/config/topics/test20
'world,'anyone
: r
'sasl,'zookeeper
: cdrwa
微生雨泽
2023-03-14

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

kerberos.removeHostFromPrincipal = true
kerberos.removeRealmFromPrincipal = true

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

 类似资料:
  • 问题内容: 在kerberosed环境中向kafka主题发送消息时出错。我们在hdp 2.3上有集群 我遵循了这个http://henning.kropponline.de/2016/02/21/secure-kafka-java-producer- with-kerberos/ 但是对于发送消息,我必须先显式地执行kinit,然后才能将消息发送到kafka主题。我试图通过java类进行编织,但是

  • 问题内容: 有什么办法可以实现安全的FTP ? 如果没有,那么Java还有哪些其他选择? 问题答案: 您可以使用org.apache.commons.net.ftp。 FTPSClient, 而不是org.apache.commons.net.ftp。 FTPClient 具有安全的ftp http://commons.apache.org/proper/commons- net/apidocs/

  • 我真的很纠结于PDFBOX的文档。对于这样一个受欢迎的图书馆来说,信息似乎有点稀薄(对我来说!)。 无论如何,Im的问题与保护PDF有关。目前我想要的只是控制用户的访问权限。具体地说,我想防止用户能够修改PDF。 如果我省略了访问权限代码,那么一切都可以正常工作。我正在阅读一个PDF从外部资源。然后我读取并填充字段,在保存新的PDF之前添加一些图像。一切正常。 当我添加这段代码时,所有的文本和图像

  • 我已经学习了本教程,它展示了如何使用几种场景来保护单页应用程序,从简单到我们自己的授权服务器(将身份验证委托给提供者)。第一个场景使用授权代码Grant将用户登录。 假设我们在本例中用自己的OAuth服务器替换Facebook的OAuth服务器,并将其配置为返回一个JWT令牌。 将@EnableResourceServer批注放在资源服务器上 使用OpenID Connect客户端实现隐式流 因此