Kafka配置SASL身份认证及权限实现文档

本文详细介绍了如何配置Kafka和Zookeeper以实现SASL身份认证,包括Zookeeper的JAAS文件配置、Kafka集群的SASL设置以及生产者和消费者的认证配置。此外,还提供了遇到问题的解决建议和Kafka安全配置的重要性分析。
摘要由CSDN通过智能技术生成

一、 版本说明本例使用:zookeeper-3.4.10,kafka_2.11-0.11.0.0。zookeeper版本无要求,kafka必须使用0.8以后的版本

二、 zookeeper配置SASLzookeeper集群或者单节点配置相同。具体步骤如下:

1、zoo.cfg文件配置添加如下配置:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider

requireClientAuthScheme=sasl

jaasLoginRenew=3600000

2、编写JAAS文件这个文件定义需要链接到Zookeeper服务器的用户名和密码。

JAAS配置节默认为Server:

Server { 

org.apache.kafka.common.security.plain.PlainLoginModule required 

username="admin" 

password="admin-secret" 

user_kafka="kafka-sec" 

user_producer="prod-sec";

};

配置文件我命名为zk_server_jaas.conf,并放在部署目录的/usr/zookeeper/zookeeper-3.4.10/conf/下。文件中定义了身份认证类(org.apache.kafka.common.security.plain.PlainLoginModule),可以看到这个认证类是kafka命名空间,也就是需要加入kafka的插件,所以下面一步非常重要。这个文件中定义了两个用户,一个是kafka,一个是producer(user_可以定义多个用户,等于的值就是用户密码),这些用user_配置出来的用户都可以提供给生产者程序和消费者程序认证使用。还有两个属性,username和password,其中username是配置Zookeeper节点之间内部认证的用户名,password是对应的密码。

3、向zookeeper添加Kafka认证插件由于Zookeeper的认证机制是使用插件,这个插件只要支持JAAS即可。Kafka需要链接到Zookeeper,直接使用Kafka的认证插件。这个插件类也包含在kafka-clients中(Maven项目)。将依赖的几个jar加入Zookeeper启动的classpath即可。如下是kafka-clients-0.10.0.1相关jar,可能你的版本和这个不一样,没关系,只要是名字相同就可以,jar在kafka的lib中查找,不需要网上下载。包括其依赖:

kafka-clients-0.10.0.1.jar

lz4-1.3.0.jar

slf4j-api-1.7.21.jar

slf4j-log4j12-1.7.21.jar

snappy-java-1.1.2.6.jar

我的做法比较直接,在Zookeeper部署根目录下创建一个路径for_sasl,将上述所有jar文件复制到这个路径下,再修改bin/zkEnv.sh配置文件,这个文件主要负责加载一些启动Zookeeper有关的环境变量,输入参数。

for i in "$ZOOBINDIR"/../for_sasl/*.jar; 

do CLASSPATH="$i:$CLASSPATH"

done

SERVER_JVMFLAGS=" -Djava.security.auth.login.config=$ZOOCFGDIR/zk_server_jaas.conf "

逻辑比较简单,先将for_sasl目录下的所有jar文件追加到CLASSPATH变量,再设置一个JVM参数给SERVER_JVMFLAGS变量,这两个变量都会在Zookeeper启动时传给JVM。具体可以查看脚本源码。

4、配置其他节点照1到3步骤配置剩余的zookeeper节点。

5、启动所有节点将所有zookeeper节点的Quorum进程开启:bin/zkServer.sh start,查看zookeeper日志,看看之后所有节点是否都能稳定运行,再试试bin/zkCli.sh链接所有节点。是否都能通。

三、 Kafka集群配置SASL确保以上zookeeper配置成功后,开始配置Kafka。Kafka所有节点也是对等的,所以下面步骤的配置在所有节点上都相同。

1、创建JAAS配置文件定义链接Kafka Broker时所需要的用户名密码及broker各个节点之间相互通信的用户名密码,这部分配置定义在KafkaServer节,文件如下:

KafkaServer { 

org.apache.kafka.common.security.plain.PlainLoginModule required 

username="admin" 

password="admin-sec" 

user_admin="admin-sec"

 user_producer="pr

要在Kafka2.7中设置密码,您需要执行以下步骤: 1. 生成密码哈希值 使用Kafka提供的命令行工具kafka-configs.sh生成密码哈希值。该工具位于Kafka的bin目录中。以下是生成密码哈希的命令示例: ``` bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=your_password]' --entity-type users --entity-name your_username ``` 在此命令中,您需要将your_password替换为您想要设置的密码,将your_username替换为您要设置密码的用户名。此命令将在Kafka中创建一个名为your_username的用户,并为该用户设置密码哈希值。 2. 更新Kafka配置文件 打开Kafka配置文件server.properties,将以下配置添加到文件末尾: ``` # 设置认证机制为SCRAM-SHA-256 listener.security.protocol.map=PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SSL,SASL_PLAINTEXT:SCRAM-SHA-256 sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256 sasl.enabled.mechanisms=SCRAM-SHA-256 # 设置用户和密码 security.inter.broker.protocol=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="your_username" password="your_password"; ``` 在此配置文件中,您需要将your_username和your_password替换为您在第一步中创建的用户名和密码。 3. 重启Kafka 在更新配置文件后,您需要重新启动Kafka以使更改生效。您可以使用以下命令重启Kafka: ``` bin/kafka-server-stop.sh bin/kafka-server-start.sh config/server.properties ``` 在重新启动Kafka后,您应该可以使用设置的用户名和密码进行身份验证。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值