目录
以下以kafka集成zookeeper为例。
本文仅介绍基于以上已开启SASL/SCRAM认证的前提下,追加ACL权限控制的介绍。
本文基于Kafka最新的3系版本展开介绍,已淘汰的命令不再赘述。
Kafka配置SASL
为生产消费授权
创建生产者用户
bin/kafka-configs.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --alter --add-config 'SCRAM-SHA-256=[password=prod@123],SCRAM-SHA-512=[password=prod@123]' --entity-type users --entity-name producer --command-config config/jaas.properties
创建消费者用户
bin/kafka-configs.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --alter --add-config 'SCRAM-SHA-256=[password=cons@123],SCRAM-SHA-512=[password=cons@123]' --entity-type users --entity-name consumer --command-config config/jaas.properties
为生产者授权
bin/kafka-acls.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --add --allow-principal User:producer --allow-host 10.8.15.35 --allow-host 10.8.15.36 --allow-host 10.8.15.37 --producer --topic '*' --command-config ./config/jaas.properties
注:当--topic使用通配符为所有主题授权时,必须要加上单引号('*')。
为消费者授权
bin/kafka-acls.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --add --allow-principal User:consumer --allow-host 10.8.15.35 --allow-host 10.8.15.36 --allow-host 10.8.15.37 --consumer --topic '*' --group '*' --command-config ./config/jaas.properties
注:当--topic或--group使用通配符为所有主题或组授权时,必须要加上单引号('*')。
查看授权信息
bin/kafka-acls.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --list --command-config ./config/jaas.properties
测试基于SASL_SCRAM认证的ACL权限控制
以下内容仅测试验证使用,实际生产环境可不配置。
修改生产者配置文件
- 增加生产者认证使用配置信息
- 进入kafka配置目录
cd /opt/tools/kafka_2.13-3.2.1/config
- 修改producer.properties文件
vim producer.properties
添加如下内容:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="prod@123";
- 复制配置文件到每个节点
scp producer.properties root@big3:/opt/tools/kafka_2.13-3.2.1/config
修改消费者配置文件
增加生产者认证使用配置信息
- 进入kafka配置目录
cd /opt/tools/kafka_2.13-3.2.1/config
- 修改consumer.properties文件
vim consumer.properties
添加如下内容:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="consumer" password="cons@123";
- 复制配置文件到每个节点
scp consumer.properties root@big3:/opt/tools/kafka_2.13-3.2.1/config
开始测试
- 进入kafka家目录
cd /opt/tools/kafka_2.13-3.2.1/
- 查看topic 列表
./bin/kafka-topics.sh --list --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --command-config ./config/jaas.properties
- 创建topic
./bin/kafka-topics.sh --create --topic sasl-test --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --partitions 3 --replication-factor 3 --config retention.ms=259200000 --command-config ./config/jaas.properties
- 生产
./bin/kafka-console-producer.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --topic sasl-test --producer.config ./config/producer.properties
- 消费(在集群中其他节点上创建消费)
./bin/kafka-console-consumer.sh --bootstrap-server 10.8.15.35:19092,10.8.15.36:19092,10.8.15.37:19092 --topic sasl-test --consumer.config ./config/consumer.properties
- 此时在生产端输入内容,到消费端查看内容,消费端可查看到生产端输入的内容,则表示基于kafka scram的acl认证成功实现。