Kafka ACL(SASL/SCRAM-SHA-256)動(dòng)態(tài)權(quán)限管理【windows】
以下所有命令行命令都使用 Shift+鼠標(biāo)右鍵 打開(kāi) Powershell
窗口執(zhí)行
1. 使用版本
-
Version
Scala 2.13 - kafka_2.13-3.4.0.tgz
2. 安全概述
驗(yàn)證方式 | Kafka版本 | 特點(diǎn) |
---|---|---|
SASL/PLAIN | 0.10.0.0 | 不能動(dòng)態(tài)增加用戶(hù) |
SASL/SCRAM-SHA-256 | 0.10.2.0 | 可以動(dòng)態(tài)增加用戶(hù) |
SASL/Kerberos | 0.9.0.0 | 需要獨(dú)立部署驗(yàn)證服務(wù) |
SASL/OAUTHBEARER | 2.0.0 | 需自己實(shí)現(xiàn)接口實(shí)現(xiàn)token的創(chuàng)建和驗(yàn)證,需要額外Oauth服務(wù) |
3.啟動(dòng)zookeeper
首先啟動(dòng)kafka項(xiàng)目中的zookeeper,執(zhí)行命令
./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties
4. 創(chuàng)建SCRAM憑證
Kafka 中的 SCRAM 實(shí)現(xiàn)使用 Zookeeper 作為憑證存儲(chǔ)。 使用kafka-configs.bat在zookeeper中創(chuàng)建憑證,對(duì)于啟用的每個(gè) SCRAM 機(jī)制,必須通過(guò)添加具有機(jī)制名稱(chēng)的配置來(lái)創(chuàng)建憑據(jù)。**必須在啟動(dòng) Kafka 代理之前創(chuàng)建代理間通信的憑證,否則kafka服務(wù)啟動(dòng)會(huì)報(bào)錯(cuò)。**可以動(dòng)態(tài)創(chuàng)建和更新客戶(hù)端憑證,更新后的憑證將用于驗(yàn)證新連接。
# 創(chuàng)建管理員用戶(hù)
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin
# 創(chuàng)建producer用戶(hù)
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=123456],SCRAM-SHA-512=[password=123456]' --entity-type users --entity-name producer
# 創(chuàng)建consumer用戶(hù)
./kafka-configs.bat --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=123456],SCRAM-SHA-512=[password=123456]' --entity-type users --entity-name consumer
可以使用--describe
選項(xiàng)列出現(xiàn)有憑證:
# 查看所有用戶(hù)
./kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type users
# 指定用戶(hù)
./kafka-configs.bat --zookeeper localhost:2181 --describe --entity-type users --entity-name admin
可以使用--delete
選項(xiàng)刪除一個(gè)或多個(gè) SCRAM 機(jī)制的憑證:
kafka-configs.bat --zookeeper localhost:2181 --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name admin
5. 修改server.properties
找到config目錄中的server.properties文件,添加以下配置信息
注意:authorizer.class.name
舊版本使用的是kafka.security.auth.SimpleAclAuthorizer
listeners=SASL_PLAINTEXT://localhost:9092
#使用的認(rèn)證協(xié)議
security.inter.broker.protocol=SASL_PLAINTEXT
#SASL機(jī)制
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256
advertised.listeners=SASL_PLAINTEXT://localhost:9092
# 如果沒(méi)有找到ACL(訪(fǎng)問(wèn)控制列表)配置,則允許任何操作。
allow.everyone.if.no.acl.found=false
#超級(jí)管理員權(quán)限用戶(hù)
super.users=User:admin
# 完成身份驗(yàn)證的類(lèi),舊版本使用的是kafka.security.auth.SimpleAclAuthorizer
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
6. 配置kafka_server_jaas.conf
在config目錄中添加一個(gè)kafka_server_jaas.conf
文件,主要注意花括號(hào)后和花括號(hào)內(nèi)最后一行都需要分號(hào)。配置內(nèi)容如下
KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin";
};
7. 修改kafka-server-start.bat
找到bin/windows目錄下的kafka-server-start.bat文件,設(shè)置上條信息中的kafka_server_jaas.conf文件
set KAFKA_OPTS=-Djava.security.auth.login.config=file:%~dp0../../config/kafka_server_jaas.conf
示例:
IF [%1] EQU [] (
echo USAGE: %0 server.properties
EXIT /B 1
)
SetLocal
IF ["%KAFKA_LOG4J_OPTS%"] EQU [""] (
set KAFKA_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../config/log4j.properties
)
IF ["%KAFKA_HEAP_OPTS%"] EQU [""] (
rem detect OS architecture
wmic os get osarchitecture | find /i "32-bit" >nul 2>&1
IF NOT ERRORLEVEL 1 (
rem 32-bit OS
set KAFKA_HEAP_OPTS=-Xmx512M -Xms512M
) ELSE (
rem 64-bit OS
set KAFKA_HEAP_OPTS=-Xmx1G -Xms1G
)
)
set KAFKA_OPTS=-Djava.security.auth.login.config=file:%~dp0../../config/kafka_server_jaas.conf
"%~dp0kafka-run-class.bat" kafka.Kafka %*
EndLocal
8. 啟動(dòng)Kafka
啟動(dòng)kafka
之前需要保證zookeeper
已經(jīng)啟動(dòng)
./kafka-server-start.bat ../../config/server.properties
9. SASL下topic的使用
- 新建
adminclient-configs.conf
文件,文件名可自定義,這里后綴名使用properties或conf都可以security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 # 用戶(hù)名密碼配置為上述步驟創(chuàng)建的管理員賬戶(hù) sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
- 創(chuàng)建topic
.\kafka-topics.bat --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 1 --topic topic-business-test --command-config ..\..\config\adminclient-configs.conf
- 查看topic列表
.\kafka-topics.bat --bootstrap-server localhost:9092 --list --command-config ..\..\config\adminclient-configs.conf
10. 使用ACL對(duì)group、topic進(jìn)行賦權(quán)
對(duì)組進(jìn)行賦權(quán)與以下格式一致,使用
--group 組名
即可,可以通知針對(duì)某個(gè)組某個(gè)主題進(jìn)行設(shè)置
-
在
config
目錄創(chuàng)建認(rèn)證配置文件adminclient-configs.conf
,這里使用的是超級(jí)管理員用戶(hù)security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin";
-
給producer用戶(hù)配置發(fā)送到test_topic這個(gè)主題的消息發(fā)送權(quán)限
.\kafka-acls.bat --bootstrap-server localhost:9092 --add --allow-principal User:producer --operation Write --topic topic-test --command-config ..\..\config\adminclient-configs.conf
-
給consumer用戶(hù)配置消費(fèi)test_topic消息的權(quán)限
.\kafka-acls.bat --bootstrap-server localhost:9092 --add --allow-principal User:consumer --operation Read --topic topic-test -- command-config ..\..\config\adminclient-configs.conf
-
查看權(quán)限認(rèn)證列表
.\kafka-acls.bat --authorizer-properties zookeeper.connect=localhost:2181 --list
11. 客戶(hù)端生產(chǎn)者、消費(fèi)者使用
-
修改
producer.properties
、consumer.properties
配置文件,需要注意sasl.jaas.config
參數(shù)值末尾的分號(hào)不加會(huì)報(bào)錯(cuò)- producer.properties
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="123456";
- consumer.properties
security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-256 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="producer" password="123456";
-
生產(chǎn)者和消費(fèi)者的使用(需要啟動(dòng)kafka)
- producer
.\kafka-console-producer.bat --bootstrap-server localhost:9092 --topic topic-test --producer.config ..\..\config\producer.properties
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-735855.html
- consumer
.\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic-test --consumer.config ..\..\config\consumer.properties
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-735855.html
到了這里,關(guān)于Kafka ACL(SASL/SCRAM-SHA-256)動(dòng)態(tài)權(quán)限管理【windows】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!