已验证Kafka 3.3.2
此方案的缺点,在sasl_plaintext模式下,不能动态创建用户,或修改用户账号信息
优点是,无需在zookeeper上配置jaas
服务端
第一步:准备kafka_server_jaas.conf文件
1 | KafkaServer { |
第二步:设置kafka-server-start.sh
1 | export KAFKA_OPTS="-Djava.security.auth.login.config=/home/sasl/kafka_2.13-3.3.2/config/kafka_server_jaas.conf" |
- 注意修改路径
第三步:设置server.properties
1 | listeners=PLAINTEXT://0.0.0.0:9092,SASL_PLAINTEXT://0.0.0.0:29092 |
listeners设置了两种协议 明文连接PLAINTEXT 和 安全连接 SASL_PLAINTEXT
0.0.0.0
表示 Kafka Broker 将监听所有可用的网络接口,这意味着它将接受来自任何 IP 地址的连接请求。
注意zookeeer存储的位置 (/brokers)
设置默认副本数 default.replication.factor=3 和 num.partitions=1
测试使用
log.dirs=/home/sasl/data/kafka-logs
1 | # authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer 旧版本配置 |
第四步:设置acl-config.properties
在config目录新增acl-config.properties设置 admin信息
1 | org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="datacanvas"; = |
第五步:启动kafka server
1 | -daemon ./config/server.properties |
第六步:配置ACL授权
授权bigdata用户可以访问主题前缀为ODS的数据,且限制消费组 GROUP-BIGDATA
1
bin/kafka-acls.sh --bootstrap-server 172.20.58.93:29092 --command-config /home/sasl/kafka_2.13-3.3.2/config/acl-config.properties --add --allow-principal User:bigdata --operation Read --topic ODS --group GROUP-BIGDATA --resource-pattern-type prefixed
禁止指定用户写入、删除主题前缀为ODS的数据
1
bin/kafka-acls.sh --bootstrap-server 172.20.58.93:29092 --command-config /home/sasl/kafka_2.13-3.3.2/config/acl-config.properties --add --deny-principal User:bigdata --operation Write --operation Delete --topic ODS --resource-pattern-type prefixed
客户端
PLAINTEXT连接保持原先操作
SASL_PLAINTEXT
连接配置添加用户登录信息
1
org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="datacanvas";