1.文档编写目的
本篇文章主要介绍如何在CDP 7.1.7集群中为Kafka集成OpenLDAP
1.前置环境配置及验证
2.集成OpenLDAP
3.验证
1.操作系统Redhat7.6
2.CDP7.1.7
3.使用root用户操作
4.集群已启用Kerberos
5.集群OpenLDAP服务正常运行
6.集群OpenLDAP服务未启用SSL&&TLS
2.前置环境配置
1.这里是Fayson在集成kafka&OpenLDAP前的环境信息
为Kafka启用了Kerberos认证,并且已经集成了Ranger服务
2.验证目前环境是否正常
登陆服务器,正常kinit认证Kerberos凭据
kinit kafka
klist
设置KAFKA_OPTS环境变量
$ export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_kb/jass.conf"
Jass.conf
内容
KafkaClient{
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true;
};
运行Kafka Producer
kafka-console-producer --broker-list hadoop99.macro.com:9092 --topic test1 --producer.config client.properties
新开机器连接,连接Kakfa Consumer,测试是否正常实时消费
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_kb/jass.conf"
kafka-console-consumer --topic test1 --from-beginning --bootstrap-server hadoop99.macro.com:9092 --consumer.config client.properties
环境检测正常
3.集成LDAP
1.进入CM>Kafka>配置>sasl,选择LDAP。
2.进入CM>Kafka>配置>LDAP,输入信息。
3.进入CM>Kafka>配置> Inter Broker Protocol,选择SASL_PLAINTEXT
4.保存配置后重启服务即可
4.验证
user.ldif
dn: uid=kafka_test,ou=People,dc=macro,dc=com
uid: kafka_test
cn: kafka_test
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: 12345678
shadowLastChange: 15678
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /usr/bash
uidNumber: 12346
gidNumber: 12346
homeDirectory: /home/kafka_test
group.ldif
dn: cn=kafka_test,ou=Group,dc=macro,dc=com
objectClass: posixGroup
objectClass: top
cn: kafka_test
userPassword: {crypt}x
gidNumber: 20010
导入新增的测试用户
ldapadd -D "cn=Manager,dc=macro,dc=com" -W -x -f user.ldif
ldapadd -D "cn=Manager,dc=macro,dc=com" -W -x -f group.ldif
ldapsearch -b "dc=macro,dc=com" -D "cn=Manager,dc=macro,dc=com" -W | grep dn
2.登陆Ranger服务,为新增的用户赋权,这里为了方便测试,直接赋权all
注意:这里的all-topic和all-consumergroup都需要赋权
3.回到机器,编写登陆文件
jass.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="kafka_test"
password="12345678";
};
ldap-client.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
4.验证登陆
producer
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_user/jaas.conf"
kafka-console-producer --bootstrap-server hadoop99.macro.com:9092 --topic kafka_test --producer.config ./ldap-client.properties
Consumer
export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_user/jaas.conf"
kafka-console-consumer --bootstrap-server hadoop99.macro.com:9092 --topic kafka_test --consumer.config ./ldap-client.properties
5.总结
1.在 Ranger中对于LDAP用户赋权的时候,topic和consumergroup都需要赋权,不然会出现报错Not authorized to aceess group:console-consumer-xxxx
2.集成LDAP的时候,需要注意ranger.ldap.bind.dn属性需要与自己的环境对应
3.如果LDAP启用了SSL或者TLS的话,则需要额外配置CA证书才行