鉴权kafka生产端(SCRAM)
前言
kafka官网关于sasl_scram
鉴权Kafka消费端配置
创建SCRAM Credentials
依赖zk,需要先启动zk,然后在zk中创建存储SCRAM 凭证:
cd kafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh --zookeeper zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --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 zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --describe --entity-type users --entity-name admin
删除
bin/kafka-configs.sh --zookeeper zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name admin
存在问题
确认命令无误
zk创建目录
进入客户端:zk操作
KAFKA服务配置
创建Server的JAAS文件
在每个Kafka broker的config目录中添加一个类似下面的JAAS文件,我们称之为kafka_server_jaas.conf,这个文件我们用于启动Kafka服务端:
KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="admin"password="admin-secret";
};
修改启动命令kafka-server-start.sh
追加下面的内容,将配置注入运行环境:
#exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=$base_dir/../config/kafka_server_jaas.conf kafka.Kafka "$@"
$@
$@
:打印所有的参数(一份数据
);
$*
:打印所有的参数(参数个数个数据
);
$#
: 打印参数个数;
[cbry@localhost test]$ sh test.sh arg0 arg2 arg3
print each param from “∗"arg0arg2arg3printeachparamfrom"*" arg0 arg2 arg3 print each param from "∗"arg0arg2arg3printeachparamfrom"@”
arg0 arg2 arg3
print each param from “$#”
3
修改服务启动配置文件server.properties
vim config/server.properties
#鉴权
# 必须使用真实ip地址
listeners=SASL_PLAINTEXT://localhost:9092#使用的认证协议
security.inter.broker.protocol=SASL_PLAINTEXT#SASL机制
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
SCP分发集群
scp -r /realtime/cbry/software/kafka/ appuser@ip:/realtime//software/
重启kafka
ps -ef | grep server.properties,手动停止或者
./bin/kafka-server-stop.sh./bin/kafka-server-start.sh -daemon config/server.properties
值得注意的是:-daemon
使用守护进程启动,会只启动一个KAFKA进程
。我在搭建不同端口的kafka的集群的时候遇到过这个问题,尽管他们的brokeId和端口不同。
多个不同端口的集群:
nohup sh kafka-server-start.sh ../config/server.properties >server.log 2>&1 &
配置生产者和消费者
consumer.properties和producer.properties
config下consumer.properties和producer.properties添加命令,里面默认是localhost:9092,改端口的这里也要改。
#security
security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
配置生产者和消费者启动命令
不配置则报错:
配置sh文件, kafka-console-producer-admin.sh,该命令指定conf文件认证, 用于账号密码认证, 此处使用管理员账号进行sasl认证, 可以生产所有主题:
cp bin/kafka-console-producer.sh bin/kafka-console-producer-admin.shvim bin/kafka-console-producer-admin.sh
kafka-console-producer-admin.sh追加内容
#exec $(dirname $0)/kafka-run-class.sh kafka.tools.ConsoleProducer "$@"exec $(dirname $0)/kafka-run-class.sh -Djava.security.auth.login.config=$(dirname $0)/../config/kafka_client_jaas_admin.conf kafka.tools.ConsoleConsumer "$@"
同理生成:kafka-console-consumer-admin.sh
如果使用其它命令比如说:kafka-consumer-groups.sh
,则也需要加上Client的验证信息:
新增配置文件:kafka_client_jaas_admin.conf
KafkaClient {org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin-secret";
};
启动生产者和消费者
sh bin/kafka-console-producer-admin.sh --broker-list kafkaIP:port --topic test --producer.config config/producer.properties
sh bin/kafka-console-consumer-admin.sh --bootstrap-server kafkaIP:port --topic test --consumer.config config/consumer.properties
配置鉴权后用鉴权启动
使用原先的provider和consumer会,必须用鉴权的provider/consumer-admin.sh和指定配置文件启动:
服务端部署
在IDE的控制台我们运行是没有问题的,但是在服务端部署的时候遇到:
这里需要我们在java程序的依赖目录lib下添加一个jdk的依赖:
nohup java -Djava.ext.dirs=/realtime/cbry/test/lib/ -cp /realtime/cbry/test/DataSourceAccessPage.jar com.cbry.adapter.JsonAdapter "" "" ""
依赖位于JDK的目录:JDK\jre\lib\ext\sunjce_provider.jar
,引入即可。
不同权限账户
不同的权限账户,在第一节的创建SCRAM凭证的时候,添加不同的账户并进行赋予读写赋权:
读赋权
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --add --allow-principal User:"cbry" --consumer --operation Read --topic 'Tecdata_test' --group '*'
写赋权
./bin/kafka-acls.sh --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka --add --allow-principal User:"cbry" --producer --operation Write --topic 'Tecdata_test' --group '*'
查看权限
./bin/kafka-acls.sh --list --authorizer-properties zookeeper.connect=zkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka
鉴权kafka生产端(SCRAM)相关推荐
- 写号 全国 电信 三码 五码 CDMA鉴权码 局端 Akey an 3码 5码
关于AN/AAA的特别说明 EVDO共有2种鉴权认证方式--CAVE和MD5,CAVE方式和1X时代一样,通过AKEY等信息进行鉴权,所以能向前兼容,正因为如此目前广东电信采用的就是CAVE认证,用户 ...
- OAuth 及 移动端鉴权调研
OAuth OAuth是一个解决用户无需向第三方应用提供用户名密码,让第三方应用访问用户私密资源的授权方案. 举例: 用户a,在网站B存有私密信息(年龄.邮箱.头像),而a在访问第三方网站C时,为了让 ...
- Tornado做鉴权服务性能实践
一. Torado实现鉴权服务 使用python的第三方jwt做鉴权服务, 生产token代码: def create_token(self, userId, product, level):payl ...
- Kong 优雅实现微服务网关鉴权,登录场景落地实战篇
目录 登录实现 B 端登录之后,浏览器存 cookie 登录代码实现细节,cookie设计 网关介绍 API 网关是什么 为什么需要网关 从技术角度来看,什么是Kong? 为什么使用 Kong Kon ...
- onvif 客服端鉴权
Onvif Windows下客服端鉴权 终于把鉴权问题搞定了,上上下下不少于一周时间.趁着这份喜悦,好好的总结一下,给自己留下点东西以后来看,同时也希望对后面的开发者有用.同时也谢谢不少网友的帮助. ...
- 实战美团Nuxt +Vue全家桶,服务端渲染,邮箱验证,passport鉴权服务,地图API引用,mongodb,redis等技术点
koa koa-generator 直接创建koa项目,不需要自己配置 全局安装 npm i -g koa-generator 创建项目 koa2 -e project 其中-e 表示以ejs为模板 ...
- js获取session_学习后端鉴权系列: 基于Cookie, Session认证
说起鉴权大家应该都很熟悉, 不过作为前端开发来讲, 鉴权的流程大头都在后端小哥那边, 但是作为一个有志气的开发者肯定要好好学习整个鉴权流程以及方案, 不然怎么跟后端合作. 常见的鉴权方案 基于Cook ...
- Kerberos鉴权后Spark程序连接Redis数据库,解决No Reachable node in cluster错误
先说调测程序中遇到的问题: 1.以纯java脚本连接Redis,可以实现增删查等操作,程序如下: import com.huawei.jredis.client.KerberosUtil; impor ...
- Docker Registry部署镜像私有仓库及鉴权认证
文章目录 一.Docker Registry是什么? 二.Docker Registry部署私有仓库 2.1.Docker Registry安装 2.2.Docker Registry配置 2.3.启 ...
最新文章
- 2022-2028年中国智能制造装备产业深度调研及投资前景预测报告
- java io在文件结尾持续添加内容
- [粉丝福利]--感谢你们关注!
- Spring Boot 内置Tomcat——IntelliJ IDEA中配置模块目录设为文档根目录(DocumentRoot)解决方案
- Lua 协同程序(coroutine)
- ae saber插件_入门AE:影视特效中的黑洞是怎么做的?附带教程
- 英语期末复习unit 3-4课后习题第一题及背诵段落
- groupadd r mysql_MySQL三种安装方式大揭秘
- 电磁场仿真原理——5. 有限元法(FEM)
- react脚手架配置
- java月利率计算(等额本息贷款)
- BIGEMAP谷歌卫星地图下载器
- Spark性能优化之-资源调优
- 全国企业信用信息公示系统 查公司信息
- amd显卡用黑苹果输出黑屏_AMD锐龙Ryzen系列黑苹果教程
- jQuery+Ajax+PHP无刷新分页
- ArcGIS 实验理论基础十五 空间查询
- 8051单片机Proteus仿真与开发实例-TLC2543(A/D)转换驱动仿真
- 企业管理中,商业智能BI主要做哪些事情?
- JavaScript—数组—join()