首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Kerberos保护卡夫卡和动物园管理员

用Kerberos保护卡夫卡和动物园管理员
EN

Stack Overflow用户
提问于 2018-06-12 17:46:01
回答 2查看 2.1K关注 0票数 0

我试图在动物园管理员和卡夫卡之间建立一个kerberos的身份证明。

我遵循了这里可用的配置步骤:gssapi.html#sasl-gssapi-broker

kafka代理成功地连接到动物园管理员团队,并且代理程序正在znodes上设置ACL。

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

代码语言:javascript
复制
'world,'anyone
: r
'sasl,'kafka/kafka-broker-01.c.aesthetic-way-193809.internal@MYREALM.COM
: cdrwa

第一个代理创建znode,放置它的ACL,并使它对于所有想要添加it的节点都不可修改。

docs说,我们应该对所有代理使用相同的主体,但是文档的示例不符合这一建议:

代码语言:javascript
复制
 // 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吗?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-14 01:38:20

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

代码语言:javascript
复制
kerberos.removeHostFromPrincipal = true
kerberos.removeRealmFromPrincipal = true

这三种选择中的任何一种都会对此有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-08-19 14:48:15

属性kerberos.removeHostFromPrincipal,kerberos.removeRealmFromPrincipal不是为我工作的。在查看了ZooKeepversion3.4.14的源代码之后,我将上面的属性作为JVM参数传递,如

代码语言:javascript
复制
-Dzookeeper.kerberos.removeHostFromPrincipal=true
-Dzookeeper.kerberos.removeRealmFromPrincipal=true

同样,在我的例子中,由于跨域票证的情况,我添加了如下的auth规则:

代码语言:javascript
复制
-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

现在我的主题ACLS看起来像这样

代码语言:javascript
复制
getAcl /kafka-cluster/config/topics/test20
'world,'anyone
: r
'sasl,'zookeeper
: cdrwa
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50822948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档