在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
- 创建JAAS配置文件
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";
- 客户端工具如