zl程序教程

您现在的位置是:首页 >  Java

当前栏目

0898-7.1.7-如何在CDP中为Kafka集成OpenLDAP

2023-02-18 16:29:01 时间

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证书才行