SASL/PLAIN


前言

SASL/PLAIN是kafka中一种使用用户名/密码的身份验证机制,本文使用Kafka-Python2.02 及kafka3.2.0进行简单的整合操作。

一、配置Kafka 节点信息

1. kafka增加认证信息:

1、在Kafka每个节点的安装目录下的config下新建一个kafka_server_jaas.conf文件

并写入以下内容

JAAS文件定义了链接Kafka Broker时所需要的用户名密码及broker各个节点之间相互通信的用户名密码

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin"
user_producer="producer"
user_consumer="consumer";
};

2、config下新建一个kafka_producer_jaas.conf文件,用作生产者账号

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="producer"
password="producer";
};

3、config下新建一个kafka_consumer_jaas.conf文件用作消费者账号

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="consumer"
password="consumer";
};

4、config下修改server.properties,添加如下内容

listeners=SASL_PLAINTEXT://hadoop110:9092
log.dirs=/home/hadoop/server/kafka_3.2.0/kafka-logssecurity.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=true
super.users=User:admin

5、config下修改producer.properties,添加如下内容

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

6、config下修改consumer.properties,添加如下内容

##username 和 password 对应kafka_server_jaas.conf中的用户名密码
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin" password="admin";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

2.修改kafka脚本-添加相关配置文件内容:

1、修改启动脚本

找到bin目录下kafka-server-start.sh的最后一行并在中间添加如下内容:

-Djava.security.auth.login.config=kafka/config/kafka_server_jaas.conf
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/kafka/config/kafka_server_jaas.conf kafka.Kafka "$@"

2、修改kafka-console-consumer.sh

找到bin目录下kafka-console-consumer.sh的最后一行并在中间添加如下内容:

-Djava.security.auth.login.config=kafka/config/kafka_client_consumer_jaas.conf 
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=kafka/config/kafka_client_consumer_jaas.conf kafka.tools.ConsoleConsumer "$@"

3、修改kafka-console-producer.sh

找到bin目录下kafka-console-producer.sh的最后一行并在中间添加如下内容:

-Djava.security.auth.login.config=kafka/config/kafka_client_producer_jaas.conf 
exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=kafka/config/kafka_client_producer_jaas.conf kafka.tools.ConsoleProducer "$@"

4、修改kafka-topics.sh

找到bin目录下kafka-topics.sh,并找到export KAFKA_OPTS 添加如下内容:

-Djava.security.auth.login.config=kafka/config/kafka_server_jaas.conf
export KAFKA_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=kafka/config/kafka_server_jaas.conf"

3.启动kafka并进行测试:

启动kafka

bin/kafka-server-start.sh config/server.properties

注意:配置kafka sasl加密认证后启动脚本需要指定配置文件

启动生产者

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config config/producer.properties

启动消费者

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config config/consumer.properties

另外说一下,开启kafka sasl加密认证后 无法查看主题的情况需要添加一个配置文件并在使用​ kafka-topics.sh指向该配置文件即可

例:

在config目录下新建config.properties文件,并添加如下内容

sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN

查看主题情况

bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --command-config config.properties

Kafka-Python整合

生产者示例

from kafka import KafkaProducer
import jsonproducer = KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'),key_serializer=lambda k: json.dumps(k).encode(),bootstrap_servers=localhost:9092security_protocol = 'SASL_PLAINTEXT',sasl_mechanism = 'PLAIN',sasl_plain_username = 'username',sasl_plain_password = 'password'
)                            # 假设生产的消息为json字符串data = {'Data':'我是一条json消息'}producer.send("Test",data)
producer.close()

消费者示例

from kafka import KafkaConsumerconsumer = KafkaConsumer('Test', bootstrap_servers=localhost:9092,group_id='Test_Group',auto_offset_reset='latest',security_protocol='SASL_PLAINTEXT',sasl_mechanism='PLAIN',sasl_plain_username='consumer',sasl_plain_password='consumer',enable_auto_commit='False'
)
#
for msg in consumer:print(msg)consumer.commit()

文章有什么不对的地方希望大神多多指点~

Kafka SASL/PLAIN加密 及Kafka-Python整合相关推荐

  1. Kafka SASL/PLAIN 环境构建(Docker版)

    前言 近来,老有朋友询问Kafka SASL配置 & Demo测试 这篇文章的相关内容.近来无事,准备将所以的组件打成镜像.此处,便讲的为 Kafka SASL/PLAIN权限验证镜像模块的构 ...

  2. go kafka 配置SASL认证及实现SASL PLAIN认证功能

    用户认证功能,是一个成熟组件不可或缺的功能.在0.9版本以前kafka是没有用户认证模块的(或者说只有SSL),好在kafka0.9版本以后逐渐发布了多种用户认证功能,弥补了这一缺陷(这里仅介绍SAS ...

  3. kafka SASL认证介绍及自定义SASL PLAIN认证功能

    文章目录 kafka 2.x用户认证方式小结 SASL/PLAIN实例(配置及客户端) broker配置 客户端配置 自定义SASL/PLAIN认证(二次开发) kafka2新的callback接口介 ...

  4. Kafka配置SASL/PLAIN认证

    1.安装zk,kafka 2.配置server.properties security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inte ...

  5. Kafka—配置SASL/PLAIN认证客户端及常用操作命令

    介绍   SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程. 配置 增加jaas.properties ...

  6. Kafka SASL/SCRAM动态认证集群部署

    Kafka SASL/SCRAM动态认证集群部署 目的:配置SASL/PLAIN验证,实现了对Kafka的权限控制.但SASL/PLAIN验证有一个问题:只能在JAAS文件KafkaServer中配置 ...

  7. Kafka SASL 安全认证

    服务端 在服务器节点配置认证文件: 文件路径:kafka/config/kafka_server_jaas.conf 文件内容: KafkaServer {org.apache.kafka.commo ...

  8. kafka sasl java_Kafka 集群配置SASL+ACL

    ** Kafka 集群配置SASL+ACL 测试环境:** 系统: CentOS 6.5 x86_64 JDK : java version 1.8.0_121 kafka: kafka_2.11-1 ...

  9. kafka sasl java_Kafka安装及开启SASL_PLAINTEXT认证(用户名和密码认证)

    前些日子要封装一个kafka的客户端驱动,配置了下kafka环境,发现配置复杂度完爆rabbitmq很多倍啊,而且发布订阅模式使用起来也很麻烦,可能就胜在分布式了吧. kafka需要java环境,自行 ...

最新文章

  1. 对前端界面工程师这个职位是怎么样理解的?
  2. react native与webview通信跳转页面报错:Cannot read property 'setNativeProps' of undefiend
  3. 使用Simditor和七牛上传图片
  4. 双系统格盘后因grub无法进入xp系统问题,将linux所在分区格后启动停在grub。。。无法进入系统
  5. arthas使用示例:profiler火焰图(CPU)
  6. 服务器发送消息技术,知识科普:IM聊天应用是如何将消息发送给对方的?(非技术篇)...
  7. mysql 1130本地连接_mysql ERROR 1130 问题解决方案
  8. LCDM--商品潜在互补性发现模型
  9. 关于Vue中,$this.router.push到当前页面,只是传入参数不同,页面不刷新的问题解决
  10. 算法案例之有效字母异位词
  11. 6、tcp_wrapper
  12. 7月6号奥特曼服务器维护中,泰迦奥特曼:7月6号开播,泰迦是泰罗儿子,优幸可变为三个奥特曼...
  13. python mql4跟单_MT4软件本地跟单方法的实现 -
  14. chrome浏览器使用console代码让115网盘免扫二维码登陆
  15. python3.5安装scipy_Python3上的Scipy安装
  16. 数学模型(对各种模型以及应用范围做一个了解)
  17. 海底捞无人餐厅上线,万人失业潮又要到来?
  18. 初级会计最后一个月稳过秘籍
  19. 几种主要的神经网络----全连接神经网络、前馈神经网络、卷积神经网络、循环神经网络
  20. 什么是UNIX时间戳? 时间戳有什么用?

热门文章

  1. 五种蓝牙耳机,到底谁才是你的菜
  2. 世界杯流量大作战,来看各路品牌如何玩转世界杯营销?
  3. maven本地仓库设置
  4. 数学证明凸透镜成像原理
  5. 设置非阻塞socket收发数据
  6. Linux locale命令
  7. 五大经典算法之四贪心算法
  8. Spring Boot 2.0 配置图文教程
  9. AutoJs学习-读取手机短信
  10. ZooKeeper Commands: The Four Letter Words