Kafka设置SASL认证

打印 上一主题 下一主题

主题 868|帖子 868|积分 2604

Kafka加密

Kafka认证方式


   在本博客中我们使用SASL/PLAIN的方式来举行Kafka加密
  环境预备



  • Kafka集群环境 请参考之前的Kafka集群搭建

    • kafka-broker1
    • kafka-broker2

集群设置SASL/PLAIN认证

用户校验

   修改server.properties 让其支持Kafka的认证(每一个broker节点都需要修改这些设置)
  修改server.properties设置

  1. # 备份server.properties
  2. cp /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak
  3. vim /opt/module/kafka/config/server.properties
  4. #添加如下内容
  5. ########## Kafka SASL认证
  6. ###注意:如果外网也要支持SASL advertised也要同步修改
  7. listeners=SASL_PLAINTEXT://:9092
  8. advertised.listeners=SASL_PLAINTEXT://kafka-broker1:9092
  9. security.inter.broker.protocol=SASL_PLAINTEXT
  10. sasl.mechanism.inter.broker.protocol=PLAIN
  11. sasl.enabled.mechanisms=PLAIN
复制代码
添加SASL认证设置

  1. vim /opt/module/kafka/config/kafka_server_jaas.conf
  2. # 增加如下配置
  3. KafkaServer {
  4.      org.apache.kafka.common.security.plain.PlainLoginModule required
  5.      username="admin"
  6.      password="123456"
  7.      user_admin="123456"
  8.      user_user2="123456";
  9. };
  10. #分发文件到不同的机器节点
  11. xsync kafka_server_jaas.conf
复制代码
  解释:
  此设置界说了两个用户(admin和user2)。KafkaServer中的username、password设置的用户和密码,是用来broker和broker毗连认证。在本例中,admin是代理broker间通信的用户。user_userName设置为毗连到broker的全部用户界说密码,broker使用这些验证全部客户端毗连,包括来自其他broker的毗连。
  请注意,username是服务端毗连的账号,password为密码,此中下面的user_admin就是为了集群间通信时候使用的
  将JAAS设置文件位置作为JVM参数传递给每个Kafka broker
  修改kafka-run-class.sh


  1. #修改kafka-run-class.sh
  2. KAFKA_OPTS="-Djava.security.auth.login.config=/opt/module/kafka/config/kafka_server_jaas.conf"
  3. #分发到其他机器节点
  4. cd/opt/module/kafka/bin
  5. xsync kafka-run-class.sh
复制代码
启动集群服务

  1. ./cluster.sh start
复制代码
验证权限


   集群权限已经启动 以是这个命令是没有任何效果的
  为了满足我们的权限列表 我们需要把用户user2作为我们的设置添加进去
  

  • 实行以下脚本
  1. vim /root/user2.conf
  2. # 输入如下内容
  3. security.protocol=SASL_PLAINTEXT
  4. sasl.mechanism=PLAIN
  5. sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="user2" password="123456";
复制代码
  此中的用户名必须是admin 123456 或者是 user2 123456
  这个时候,我们已经可以看到 权限是认证通过的

   测试消耗端和生产端(添加设置 验证成功)
  

权限校验

   admin是超级用户
user2是普通用户
我们如今编写权限校验的目的是
1:user2可以自己新建/修改/删除topic
2:只用于user2操作某一个topic 其他topic不允许操作
  修改server.properties设置

  1. # 修改server.properties 增加如下配置
  2. authorizer.class.name=kafka.security.authorizer.AclAuthorizer
  3. super.users=User:admin
复制代码
  使用权限设置而且超级用户是admin,这个用户和我们在上面设置的列表中的admin用户相互映射
  每个机器都举行设置
  重启全部的节点,这个时候已经开启了权限
  1. # 配置用户认证文件信息
  2. vim /root/admin.conf
  3. # 输入如下内容
  4. security.protocol=SASL_PLAINTEXT
  5. sasl.mechanism=PLAIN
  6. sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="123456";
复制代码
修改kafka-acls.sh

   此脚本主要用户给指定的用户设置权限
  参数/选项描述--add增加权限--remove删除权限--allow-host允许操作的主机--deny-host拒绝的主机--allow-principal允许操作的用户(通常为User:ClientID)--deny-principal拒绝的用户(通常为User:ClientID)--bootstrap-serverKafka集群地址,用于毗连到Kafka集群--command-config认证文件信息,如JAAS设置文件的路径--group可以消耗特定topic的消耗者组--list查询全部权限--operation指定操作权限,大概的值包括:Describe, DescribeConfigs, Alter, Read, Delete, Create, All, Write, AlterConfigs--topic指定要操作的topic 基本命令



  • 查询topic的全部权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --list --command-config /root/admin.conf




  • 删除全部权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --command-config /root/admin.conf

  • 当前用户没有权限,如今给user用户赋值权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation all --command-config /root/admin.conf

  • 回收权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --allow-principal User:user2 --operation all --command-config /root/admin.conf

  • 给生产者添加Write权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Write --command-config /root/admin.conf

  • 给消耗者添加Read权限
    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Read --group user2 --command-config /root/admin.conf

  • 测试生产者
    kafka-console-producer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --producer.config /root/user2.conf

  • 测试消耗者
    kafka-console-consumer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --from-beginning --consumer.config /root/user2.conf --group user2


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

风雨同行

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表