mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
2.8 KiB
2.8 KiB
支持Kerberos认证的ZK
1、修改 KnowStreaming 代码
代码位置:src/main/java/com/xiaojukeji/know/streaming/km/persistence/kafka/KafkaAdminZKClient.java
将 createZKClient 的 `135行 的 false 改为 true

修改完后重新进行打包编译,打包编译见:打包编译
2、查看用户在ZK的ACL
假设我们使用的用户是 kafka 这个用户。
- 1、查看 server.properties 的配置的 zookeeper.connect 的地址;
- 2、使用
zkCli.sh -serve zookeeper.connect的地址登录到ZK页面; - 3、ZK页面上,执行命令
getAcl /kafka查看kafka用户的权限;
kafka 用户需要的权限是 cdrwa。如果用户没有 cdrwa 权限的话,需要创建用户并授权,授权命令为:setAcl
3、创建Kerberos的keytab并修改 KnowStreaming 主机
- 1、在 Kerberos 的域中创建
kafka/_HOST的keytab,并导出。例如:kafka/dbs-kafka-test-8-53; - 2、导出 keytab 后上传到安装 KS 的机器的
/etc/keytab下; - 3、在 KS 机器上,执行
kinit -kt zookeepe.keytab kafka/dbs-kafka-test-8-53看是否能进行Kerberos登录; - 4、可以登录后,配置
/opt/zookeeper.jaas文件,例子如下:
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
storeKey=false
serviceName="zookeeper"
keyTab="/etc/keytab/zookeeper.keytab"
principal="kafka/dbs-kafka-test-8-53@XXX.XXX.XXX";
};
- 5、需要配置
KDC-Server对KnowStreaming的机器开通防火墙,并在KS的机器/etc/host/配置kdc-server的hostname。并将krb5.conf导入到/etc下;
4、修改 KnowStreaming 的配置
- 1、在
/usr/local/KnowStreaming/KnowStreaming/bin/startup.sh中的47行的JAVA_OPT中追加如下设置
-Dsun.security.krb5.debug=true -Djava.security.krb5.conf=/etc/krb5.conf -Djava.security.auth.login.config=/opt/zookeeper.jaas
- 2、重启KS集群后再 start.out 中看到如下信息,则证明Kerberos配置成功;
5、补充说明
- 1、多Kafka集群如果用的是一样的Kerberos域的话,只需在每个
ZK中给kafka用户配置crdwa权限即可,这样集群初始化的时候zkclient是都可以认证; - 2、当前需要修改代码重新打包才可以支持,后续考虑通过页面支持Kerberos认证的ZK接入;
- 3、多个Kerberos域暂时未适配;


