Kafka使用SASL_PLAINTEXT实现简易的用户认证及权限
SASL_PLAINTEXT 实现认证
1. server.properties中添加:
listeners=SASL_PLAINTEXT://hostname:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
2. config目录下新建三个文件:
kafka_server_jaas.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-pwd"
user_admin="admin-pwd"
user_alice="alice-pwd"
user_bob="bob-pwd";
};
kafka_cilent_jaas.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="alice"
password="alice-pwd";
};
kafka_zoo_jaas.conf
zookeeper {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-pwd";
};
3. 修改kafka各项sh脚本
zookeeper-server-start.sh中添加(要在最后一行之前添加,别添加在最后一行了):
export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_zoo_jaas.conf"
kafka-server-start.sh中添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_server_jaas.conf"
kafka-console-consumer.sh和kafka-console-producer.sh中添加:
export KAFKA_OPTS=" -Djava.security.auth.login.config=/home/ocdc/app/kafka_2.10-0.10.1.1/config/kafka_client_jaas.conf"
4.启动zookeeper 和Kafka集群
上述步骤,为集群添加了SASL_PLAINTEXT认证。Kafka Server间/Kafka和ZK间,利用admin账号互联。
同时Kafka Server还保留了两个普通用户:alice和bob,密码分别为alice-pwd,bob-pwd。
5.测试
利用kafka-console-consumer.sh和kafka-console-producer.sh,同时修改kafka_cilent_jaas.conf中的用户名和密码,测试认证机制是否生效。
Kafka-ACL实现权限控制
1. server.properties中添加:
authorizer.class.name = kafka.security.auth.SimpleAclAuthorizer
super.users=User:admin
Kafka Server间是使用admin账号互联的,使用得把admin配为超级账号
2. 重启Kafka集群
3.利用kafka-acls.sh为topic设置ACL
sh kafka-acls.sh --authorizer-properties zookeeper.connect=hostname:2181 --add --allow-principal User:alice --group test-consumer-group --topic alice-topic
这里注意,如果alice要作为消费端连接alice-topic的话,必须对其使用的group(test-consumer-group)也赋权
4. 利用kafka-acls.sh设置不同的权限,同时修改kafka_cilent_jaas.conf中的用户名和密码,验证ACL和认证机制。
JAVA producer端示例
public class NewProducer
{
public static void main(String[] args) throws IOException
{
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("security.protocol","SASL_PLAINTEXT");
props.put("sasl.mechanism","PLAIN");
props.put("key.serializer",
"org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer",
"org.apache.kafka.common.serialization.StringSerializer");
Producer<String, String> producer = new KafkaProducer<>(props);
System.out.println("send msg");
producer.send(
new ProducerRecord<String, String>("topic_name", "123123123"));
System.out.println("send one msg : 123123123");
producer.close();
}
}
————————————————
版权声明:本文为CSDN博主「wsrmzqy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wsrmzqy/article/details/72190242
Kafka使用SASL_PLAINTEXT实现简易的用户认证及权限相关推荐
- 超详细的用户认证、权限、安全原理详解(认证、权限、JWT、RFC 7235、HTTPS、HSTS、PC端、服务端、移动端、第三方认证等等)
用户认证.权限.安全 原 理 与 实 践 作者: jcLee95 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm ...
- SpringtBoot+SpringSecurity+Jwt+MyBatis整合实现用户认证以及权限控制
文章目录 前言 数据库表结构 项目结构图 核心配置类SecurityConfig 实体类 工具类 用户登录认证 Token令牌验证 获取用户权限 用户权限验证 Service层实现类 统一响应类 Co ...
- Spring Security用户认证和权限控制(默认实现)
1 背景 实际应用系统中,为了安全起见,一般都必备用户认证(登录)和权限控制的功能,以识别用户是否合法,以及根据权限来控制用户是否能够执行某项操作. Spring Security是一个安全相关的框架 ...
- 企业级项目|用Python进行web开发企业统一用户认证和权限控制平台
目前大家对Python的了解更多来源是数据分析.Ai.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...
- Samba服务器原理及实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维)
本文目录 Samba服务器概念与原理 一.引子 二.samba原理及基本概念 三.samba共享实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维) Samba服务器概念与原理 一. ...
- Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)
在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...
- Django默认用户认证系统和用户模型类
Django默认用户认证系统和用户模型类 1.Django默认用户认证系统 Django自带用户认证系统 Django认证系统位置 Django认证系统同时处理认证和授权 Django认证系统包含的内 ...
- Java-SpringBoot:用户认证(Authentication)和用户授权(Authorization)
Java-SpringBoot-2 学习视频:B站 狂神说Java – https://www.bilibili.com/video/BV1PE411i7CV 学习文档: 微信公众号 狂神说 –htt ...
- 用Python建设企业认证和权限控制平台
目前大家对Python的了解更多来源是数据分析.AI.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...
最新文章
- 返回一个二维整数数组中的最大的子数组和
- 一道简单的编程题考核你的编程功底
- 浅析Postgres中的并发控制(Concurrency Control)与事务特性(上)
- 图解使用Win8Api进行Metro风格的程序开发二----使用文件选择器访问和保存文件
- house price model
- python定义一个类savingaccount表示银行账户_c#教程之c#模拟银行atm机示例分享
- SingToken全球首款区块链智能AI音乐钱包
- 跨考大连理工大学计算机考研,如何备战大连理工大学的计算机考研_跨考网
- Android odex反编译为dex
- 内存泄露之常见问题解决「初级篇」
- XX公司信息化建设草案
- java删除表格_Java 删除Word表格/表格内容
- Mysql官方接口中文解释
- STN:Spatial Transformer Networks 空间变换网络
- java随机不重复点名_怎样用java做一个点名器,除重复,并且用键盘输入
- linux sox用法 播放,SoX——linux终端播放音频文件
- S3C2440 由ADS移植到 RealView MDK kile4
- java 限制输入两位数_Java 控制数字输入、控制输入长度的方法 | 学步园
- git 教程(12)--分支管理
- Android 全埋点方案盘点