Kafka SCRAM和PLAIN权限认证
目前Kafka ACL支持多种权限认证,今天笔者给大家介绍一下SCRAM和PLAIN的权限认证。验证环境如下:
JDK:
1.8
Kafka:
2.3.0
Kafka Eagle:
1.3.8
2.1 PLAIN认证
首先,在$KAFAK_HOME/config目录新建一个文本文件,名为kafka_server_plain_jaas.conf,配置内容如下:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_ke="ke";
};
接着,将脚本文件kafka-server-start.sh重命名为kafka-server-plain-start.sh,并修改最后一行的内容为:
# 添加鉴权文件
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/kafka_server_plain_jaas.conf kafka.Kafka "$@"
然后,复制server.properties文件并重命名为plain.properties,接着修改服务端配置文件plain.properties,内容如下:
# Protocol
listeners=SASL_PLAINTEXT://127.0.0.1:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
# ACL
allow.everyone.if.no.acl.found=false
super.users=User:admin
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
最后,创建客户端用户认证文件,kafka_client_plain_jaas.conf内容如下:
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="ke"
password="ke";
};
2.2 启动PLAIN认证集群
2.2.1 启动Zookeeper
# Zookeeper的配置比较简单,这里不多做介绍
zkServer.sh start
2.2.2 启动Kafka集群
# 进入到Kafka安装bin目录
./kafka-server-plain-start.sh ../config/plain.properties &
2.2.3 创建Topic
./kafka-topics.sh --create --zookeeper 127.0.0.1:2181/plain --replication-factor 1 --partitions 3 --topic test_plain
2.2.4 添加读写权限
# 添加读权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Read --topic test_plain
# 添加写权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Write --topic test_plain
# 添加消费者组权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --add --allow-principal User:ke --operation Read --group g_plain_test
# 查看权限列表
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/plain --list
2.2.5 执行结果
2.3 SCRAM认证
PLAIN认证有个问题,就是不能动态新增用户,每次添加用户后,需要重启正在运行的Kafka集群才能生效。为此,在生产环境,这种认证方式不符合实际业务场景。而SCRAM不一样,使用SCRAM认证,可以动态新增用户,添加用户后,可以不用重启正在运行的Kafka集群即可进行鉴权。
新增kafka_server_scram_jaas.conf,配置内容如下:
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};
接着,将脚本文件kafka-server-start.sh重命名为kafka-server-scram-start.sh,并修改最后一行的内容为:
# 添加鉴权文件
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/kafka_server_scram_jaas.conf kafka.Kafka "$@"
然后在$KAFKA_HOME/config目录中,复制server.properties文件并重命名为scram.properties,接着修改服务端配置文件scram.properties,内容如下:
# Protocol
listeners=SASL_PLAINTEXT://dn1:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
# ACL
allow.everyone.if.no.acl.found=false
super.users=User:admin
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
2.3.1 启动Zookeeper
# Zookeeper的配置比较简单,这里不多做介绍
zkServer.sh start
2.3.2 添加管理员权限和普通用户
# 添加管理员
./kafka-configs.sh --zookeeper 127.0.0.1:2181/scram --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin
# 添加普通用户(ke)
./kafka-configs.sh --zookeeper 127.0.0.1:2181/scram --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=ke],SCRAM-SHA-512=[password=ke]' --entity-type users --entity-name ke
2.3.3 启动SCRAM认证集群
./kafka-server-scram-start.sh ../config/scram.properties &
2.3.4 创建Topic
./kafka-topics.sh --create --zookeeper 127.0.0.1:2181/scram --replication-factor 1 --partitions 3 --topic test_scram
2.3.5 添加权限
# 添加读权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Read --topic test_scram
# 添加写权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Write --topic test_scram
# 添加消费者组权限
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Read --group g_scram_test
# 查看权限列表
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --list
2.3.6 执行结果
Kafka权限级别包含Topic、Group、Cluster、TransactionalId,每个维度涉及的权限内容如下:
Resource | Operations |
Topic | Read,Write,Describe,Delete,DescribeConfigs,AlterConfigs,All |
Group | Read,Describe,All |
Cluster | Create,ClusterAction,DescribeConfigs,AlterConfigs,IdempotentWrite,Alter,Describe,All |
TransactionalId | Describe,Write,All |
例如,统计Topic的Capacity大小时,如果抛出异常“Cluster authorization failed”,这是由于没有开启Cluster级别的Describe权限,执行如下命令即可:
./kafka-acls.sh --authorizer kafka.security.auth.SimpleAclAuthorizer --authorizer-properties zookeeper.connect=127.0.0.1:2181/scram --add --allow-principal User:ke --operation Describe --cluster
那么如何使用Kafka Eagle来集成有SCRAM认证的Kafka集群,进行监控呢?访问http://www.kafka-eagle.org/,下载安装包,解压并配置如下内容:
# 这里对启动一个拥有SCRAM认证的Kafka集群(别名为cluster1)进行配置
cluster1.kafka.eagle.sasl.enable=true
cluster1.kafka.eagle.sasl.protocol=SASL_PLAINTEXT
cluster1.kafka.eagle.sasl.mechanism=SCRAM-SHA-256
cluster1.kafka.eagle.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="ke" password="ke";
# 这里ClientId如果不需要,可以不用配置
cluster1.kafka.eagle.sasl.client.id=
然后,执行ke.sh start进行启动Kafka Eagle监控系统。
4.1 Topic预览
4.2 使用KSQL查询Topic
执行如下SQL语句,代码如下:
select * from "test_scram" where "partition" in (0) limit 1
执行结果如下:
生产环境中,用户可能随着业务需要,增加或者删除,此时动态控制用户时很有必要的。而且,生产环境Kafka集群不可能随随便便重启,因此采用SCRAM来进行Kafka鉴权非常适合。
Kafka SCRAM和PLAIN权限认证相关推荐
- Kafka SCRAM和PLAIN实战
1.概述 目前Kafka ACL支持多种权限认证,今天笔者给大家介绍一下SCRAM和PLAIN的权限认证.验证环境如下: JDK:1.8 Kafka:2.3.0 Kafka Eagle:1.3.8 2 ...
- kafka集群搭建+权限认证(SASL/SCRAM)+整合springboot
本文介绍的的是kafka集群搭建.kafka权限认证(SASL/SCRAM).整合springboot项目. 1.创建kafka日志和zookeeper文件目录: /data/kafka/kafka- ...
- Kafka配置SASL/PLAIN认证
1.安装zk,kafka 2.配置server.properties security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inte ...
- kafka动态权限认证(SASL SCRAM + ACL)
kafka动态权限认证(SASL SCRAM + ACL) 创建三个测试用户 bin/kafka-configs.sh --zookeeper 192.168.x.x:2181 --alter --a ...
- Kafka—配置SASL/PLAIN认证客户端及常用操作命令
介绍 SASL/PLAIN 是一种简单的 username/password安全认证机制,本文主要总结服务端开启该认证后,命令行客户端进行配置的操作流程. 配置 增加jaas.properties ...
- kafka权限认证ssl
2016-11-14 18:16:01 shengjk1 阅读数 18141更多 分类专栏: 工作之行 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和 ...
- kafka集群开启sasl认证
kafka集群开启sasl认证 sasl认证 sasl 是扩展C/S模式验证能力的一种认证机制.它可以规范客户端和服务端传输应答和传输内容编码,简而言之sasl决定了认证的规则,即客户端如何存储身份证 ...
- Kafka2.6版本权限认证
前言 当前Kafka security主要包含3大功能:认证(authentication).信道加密(encryption)和受权(authorization).信道加密就是为client到brok ...
- OpenLDAP + Ranger +Kerberos 三方集成实现身份、权限认证
基于OpenLDAP和Kerberos权限认证,在Ranger配置权限策略,实现三方集成.身份认证和权限管理之间又会产生什么火花~,下面将我们一步步揭开它们的神秘面. 在我们搜索时,常见的两张关于三方 ...
最新文章
- matlab练习程序(Log Polar变换)
- com.android.vivi删除,vivi命令详解
- maccms V10后门
- multi task训练torch_Multi-task Learning的三个小知识
- linux 路由器_为什么我要建立自己的自制Linux路由器
- QT+VS中ui不能声明为指针?
- 60-10-050-命令-kafka-broker-api-versions.sh
- python 状态机第三方库_Python 状态机 - osc_8g11urw7的个人空间 - OSCHINA - 中文开源技术交流社区...
- IDEA中控制台中文乱码问题
- html5新标签笔记,HTML5新标签学习笔记
- 开源大数据周刊-第90期
- 翻译《Git版本控制管理》
- K8S学习之helm
- deepin linux隐藏磁盘,Deepin 20下开机不自动挂载(隐藏)NTFS分区(Windows分区)的方法...
- mysql全文索引详解_MySql全文索引详解
- 移动机器人小众期刊Foundations and Trends in Roboics
- 1.1Vue安装以及使用(node安装)
- 前端项目使用阿里巴巴icon font的具体过程
- 两台手机通过4g网络直接通讯_手机直播只准备了一部手机?难怪直播效果不好!...
- 电脑连接打印机并共享及其他打印机连接
热门文章
- LIO-SAM:在高斯牛顿法求解过程中用SO3代替欧拉角
- oracle官网免登录下载jdk8
- 内网安全-域横向CSMSF联动及应急响应初识
- 以智慧校园为起点 西电携手新华三发掘信息化价值
- Could not load driver class org.neo4j.ogm.drivers.http.driver.HttpDriver(Neo4j连接用bolt还是http)
- python练习题15:恺撒密码 I
- windows下tomcat设置开机自启
- linux i2c dev.h freq,STM32F103ZET(基于秉火开发板)+Cubemx(F1 V1.60库)+IIC+AT24C02(修复官方例程读写死机bug)...
- 第四章:为妹子镶上璀璨的珠宝
- 【文献翻译】Network Security Entity Recognition Methods Based on the Deep Neural Network