kafka 认证和鉴权方式_kafka实际应用

kafka 认证和鉴权方式_kafka实际应用前言kafka官网关于sasl_scram鉴权Kafka消费端配置创建SCRAMCredentials依赖zk,需要先启动zk,然后在zk中创建存储SCRAM凭证:cdkafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh–zookeeperzkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka–alter–add-config’SCRAM-SHA-256=[password=admin-secr

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

前言

kafka官网关于sasl_scram

鉴权Kafka消费端配置

创建SCRAM Credentials

依赖zk,需要先启动zk,然后在zk中创建存储SCRAM 凭证:

cd kafkacluster/kafka_2.11-1.1.1

bin/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

Jetbrains全家桶1年46,售后保障稳定

在这里插入图片描述

查看

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 required
  username="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 “ ∗ ” a r g 0 a r g 2 a r g 3 p r i n t e a c h p a r a m f r o m ” *” 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.sh

vim 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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/222407.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IIS http 500 内部服务器错误 (解决方案)「建议收藏」

    IIS http 500 内部服务器错误 (解决方案)「建议收藏」 第一步:“开始”->“设置”->“控制面板”->“管理工具”->“组件服务”中,“控制台根目录”->“组件服务”->“计算机”->“我的电脑”->“COM+应用程序”中,有一个“IISOut-Of-ProcessPooled”鼠标右键“属性”–“标识”–把“此用户”调整为“交互式用户–目前已登录的用户”。然后“确定”,再鼠标右键“属性”–“启动”.第二步:“开始”->“管理工具”-

  • 泛型(泛型擦除)【java基础—-泛型】

    泛型(泛型擦除)【java基础—-泛型】泛型(泛型擦除)【java基础—-泛型】

    2022年10月19日
  • datax(16):源码解读AbstractReporter

    datax(16):源码解读AbstractReporter之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;一、概述AbstractReporter主要作用:Reporter的主要功能是将收集到的信息上报给上级主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)二、族谱族谱里面目前只有父子.

  • Linux系统官网下载「建议收藏」

    Linux系统官网下载「建议收藏」CentOS-6.9-x86_64-bin-DVD1.isohttp://archive.kernel.org/centos-vault/6.9/isos/x86_64/CentOS-6.9-x86_

  • Linux下LDAP统一认证解决方案「建议收藏」

    企业内部需要认证的服务很多,员工需要记住很多的密码,即使对这些服务进行相同的密码设置,也存在很大的安全隐患。笔者目前工作的企业就是如此,每一个新员工的到来管理员都要初始化很多密码,而这些密码都被设置成了“888888”等弱密码,由于各种软件的认证机制之间没有使用一个统一的标准,员工无法一次性修改所有服务的密码,这导致很多即使是入职很久的员工都还在使用这个“众所周知”的密码。另外—个比较严

  • idea如何远程debug_eclipse远程debug原理

    idea如何远程debug_eclipse远程debug原理使用IDEA进行远程debug,这个操作大家没用过也听过它的实现原理为:本机和远程主机的两个VM之间使用Debug协议通过Socket通信,传递调试指令和调试信息。其中,调试的程序常常被称为debugger,而被调试的程序称为debuggee。在Debug领域,JDK有一套规范与体系来支持,即JavaPlatformDebuggerArchitecture,JPDA体系。在JPDA体系中定义了三个角色,每个角色又对应着不同的技术模块支撑,分别为JVMTI/JDWP/J

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号