如何通过Cloudera Manager为Kafka启用Kerberos及使用
1.文档编写目的
在CDH集群中启用了Kerberos认证,本文主要讲述通过Clouder Manager为kafka集群启用Kerberos认证及客户端配置使用。
内容概述
- 修改kafka配置
- 配置客户端
- 客户端测试Proudcer和Consumer
测试环境
- CentOS Linux release 7.9.2009 (Core)
- CM和CDH版本为6.2.1
- 采用root用户
- Kafka2.1.0
前置条件
- Kafka2.0.x或更高版本
- Cloudera Manager5.5.3或更高版本
- Kafka集群安装且正常运行
- 集群已启用Kerberos认证
- Kafka未与Sentry集成
2.修改Kafka配置
- 登录Cloudera Manager进入Kafka服务,修改ssl.client.auth配置为none
将broker配置为要求客户端验证。如下的设置是通用的:
ssl.client.auth=required 代表要求客户端验证
ssl.client.auth=requested代表客户端验证是可选的。不像要求客户端验证,如果设置了此选项,客户机可以选择不提供关于自身的身份验证信息。
ssl.client.auth=none 这意味着不需要客户端验证.
- Kafka启用Kerberos
- 修改security.inter.broker.protocol配置为SASL_PLAINTEXT
在broker之间用于通讯的监听器名称。如果这个没有被设置,监听器名称由security.inter.broker.protocol定义。同时设置此属性和security.inter.broker.protocol属性会导致错误。
- 保存以上修改的配置后,回到主页根据提示重启Kafka Server
3.配置客户端
1.创建jass.conf文件
#安全身份验证所需票据 KafkaClient{ com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true; };
2.创建client.porperties文件,内容如下
security.protocol=SASL_PLAINTEXT #安全协议=SASL_PLAINTEXT sasl.kerberos.service.name=kafka 身份验证服务名=kafka
4.dloss1和dloss2都登录kafka.keytab用户
5.客户端测试Produce和Consumer
[root@dloss1~]# export KAFKA_OPTS="-Djava.security.auth.login.config=/root/jaas.conf"
[root@dloss1 ~]# kafka-console-producer --broker-list 10.120.21.151:9092 --topic kerberos --producer.config client.properties#生产者dloss1 [root@dloss2 ~]# kafka-console-consumer --topic kerberos --from-beginning --bootstrap-server 10.120.21.152:9092 --consumer.config client.properties消费者dloss2
以上配置文件在dloss1、dloss1中都有配置 、且登录同一账号
且不管生产还是消费都需在client.properties文件所在目录中进行
5.总结
Kafka与CDH集群中的其它组件集成Kerberos稍有不同,需要做一些额外的配置。本篇文章主要讲述了如何启用Kerberos身份认证及客户配置使用