阅读 120

Kafka-无认证+SASL/SCRAM

说明: 最早生产环境采用kafka单节点并且没有认证方式,现在考虑到安全问题,需要增加认证。因涉及到的业务系统过多,不容易协调统一变更,所以无认证方式+认证方式并存(SCRAM可以动态增加用户)

测试环境验证

大体步骤

  1. 无认证方式启动zk+kafka

  2. 创建主题并生产

  3. 增加安全端口认证9092无认证9093端口认证

  4. 使用无认证9092端口消费/使用认证9093端口消费

实施

  • 无认证方式启动zk+kafka,创建主题并生产数据可参考其他文章

  • 我们直接从增加安全端口配置开始到测试通过

1. 修改config/server.properties文件增加9093端口及如下参数 listeners=PLAINTEXT://:9092,SASL_PLAINTEXT://:9093 security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 sasl.enabled.mechanisms=SCRAM-SHA-256 allow.everyone.if.no.acl.found=true authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer super.users=User:admin 复制代码

2. 增加如下两个文件(不用文件位置一样,只要引用时注意目录位置即可) root@fitme-System-Product-Name:~/kafka_2.12-2.8.0# cat kafka_client_jaas.conf  KafkaClient {     org.apache.kafka.common.security.scram.ScramLoginModule    required username="fitme"     password="123456"; }; root@fitme-System-Product-Name:~/kafka_2.12-2.8.0# cat config/kafka_server_scram_jaas.conf  KafkaServer {    org.apache.kafka.common.security.scram.ScramLoginModule required    username="admin"    password="admin-secret"; };  3.修改kafka启动脚本,增加如下  export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_2.12-2.8.0/config/kafka_server_scram_jaas.conf" 4. 修改消费者/生产者启动脚本,增加如下 export KAFKA_OPTS="-Djava.security.auth.login.config=/root/kafka_2.12-2.8.0/kafka_client_jaas.conf" 5. 增加认证端口后无认证9092会使用ANONYMOUS用户访问数据,我们需要增加权限 bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:ANONYMOUS --operation All --topic=*  bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --allow-principal User:ANONYMOUS --producer --topic=* --add  bin/kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=localhost:2181 --allow-principal User:ANONYMOUS --consumer --topic=* --group=* --add 复制代码

6. 增加admin用户及普通用户 bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=123456],SCRAM-SHA-512=[password=123456]' --entity-type users --entity-name fitme 7. 修改config/consumer.properties,增加保留如下 bootstrap.servers=localhost:9093 group.id=test-consumer-group security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 复制代码

8. 测试9092端口无认证消费和9093认证消费 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning bin/kafka-console-consumersh --bootstrap-server localhost:9093 --topic test --from-beginning --consumer.config config/consumer.properties 复制代码

生产环境变更

  1. 生产环境只需要增加安全端口9093

  2. 原有业务系统不受影响,新系统使用9093并推进历史系统更改认证方式

  3. 封禁9092端口(线上环境不需要移除,撤销ANONYMOUS用户权限即可


作者:Fitme
链接:https://juejin.cn/post/7017713655860969509

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐