在Debian上配置Apache Kafka的認證和授權涉及幾個步驟。以下是一個基本的指南,幫助你在Debian系統上設置Kafka的SASL/PLAIN認證和基于角色的訪問控制(RBAC)。
Java安裝:Kafka需要Java運行時環境。你可以通過以下命令安裝OpenJDK:
sudo apt update
sudo apt install openjdk-11-jdk
Kafka安裝:你可以從Apache Kafka官方網站下載并解壓Kafka,或者使用包管理器安裝。這里我們假設你已經下載并解壓了Kafka。
Kafka使用Zookeeper進行集群管理。首先,你需要配置Zookeeper以支持SASL認證。
編輯Zookeeper配置文件(通常位于/path/to/kafka/config/zookeeper.properties
):
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000
創建JAAS配置文件(例如/etc/zookeeper/conf/jaas.conf
):
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret"
user_kafka="kafka_secret";
};
啟動Zookeeper:
bin/zookeeper-server-start.sh config/zookeeper.properties
接下來,你需要配置Kafka Broker以支持SASL認證和SSL加密。
編輯Kafka Broker配置文件(通常位于/path/to/kafka/config/server.properties
):
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret" \
user_admin="admin-secret";
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin
創建Kafka JAAS配置文件(例如/etc/kafka/conf/kafka_server_jaas.conf
):
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
啟動Kafka Broker:
bin/kafka-server-start.sh -daemon config/server.properties
最后,你需要配置Kafka客戶端以支持SASL認證。
編輯客戶端配置文件(例如/path/to/kafka/config/client.properties
):
bootstrap.servers=localhost:9092
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="admin" \
password="admin-secret";
測試客戶端連接:
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --property security.protocol=SASL_PLAINTEXT --property sasl.mechanism=PLAIN --property sasl.jaas.config="org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin-secret';"
Kafka支持基于角色的訪問控制,可以通過配置ACL來實現。
創建ACL規則:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:admin --operation All --topic test
驗證ACL規則:
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--list --topic test
通過以上步驟,你應該能夠在Debian上成功配置Kafka的認證和授權。請根據你的具體需求調整配置文件中的參數。