在Debian上配置Kafka的认证与授权可以通过以下步骤实现:
启用SASL认证:
server.properties
文件,修改listeners
参数以启用SASL_PLAINTEXT协议:listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512
sasl.enabled.mechanisms=SCRAM-SHA-512
kafka_server_jaas.conf
,指定用户名和密码信息:KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="root"
password="Root@123";
};
kafka-server-start.sh
中添加JVM参数,指定JAAS配置文件路径:export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
配置ACL(访问控制列表):
kafka-configs.sh
工具添加认证配置:./bin/kafka-configs.sh --zookeeper 172.16.1.102:2181 \
--alter \
--add-config "SCRAM-SHA-256=[password=Root@123],SCRAM-SHA-512=[password=Root@123]" \
--entity-type users \
--entity-name root
客户端认证:
kafka-topics.sh
需要使用JAAS配置属性,指定用户名和密码信息:./bin/kafka-topics.sh --zookeeper localhost:2181 \
--replication-factor=1 \
--partitions=3 \
--topic test1 \
--create \
--command-config config/sasl.properties
其中config/sasl.properties
文件内容如下:security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required
username="root"
password="Root@123";