Kafka 认证配置实践笔记

1,880 阅读2分钟

今天我们来实践 Kafka 安全配置,通过本篇教程,我们将配置一个需要使用用户名、密码访问的 Kafka。

本文使用 SASL/SCRAM 认证机制,是 Kafka 0.10.2 版本引入的。

测试环境: MacOs mojave,kafka_2.12-2.4.0

第一步,创建用户

说明:

admin 用于 broker 之间通信,writer 用于生产者,reader 用于消费者。

bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin]' --entity-type users --entity-name admin


bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=writer]' --entity-type users --entity-name writer


bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=reader]' --entity-type users --entity-name reader

第二步,创建 JAAS 文件

说明:

这个文件用于启动 broker,文件可以命名为 kafka-broker.jaas,broker 启动时需要指定该文件。


KafkaServer {
org.apache.kafka.common.security.scram.ScramLoginModule required
username="admin"
password="admin";
};

第三步,配置 server.properties 文件

说明:

既然要进行认证,server.properties 文件是要进行配置的,参考下面的配置。

sasl.enabled.mechanisms=SCRAM-SHA-256

sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256

security.inter.broker.protocol=SASL_PLAINTEXT

listeners=SASL_PLAINTEXT://localhost:9092

第四步,启动 broker

说明:

启动 broker 时,指定 jaas 文件,及修改后的 server.properties 文件。

KAFKA_OPTS=-Djava.security.auth.login.config=<yourPath>/kafka-broker.jaas bin/kafka-server-start.sh config/server.properties

第五步,发送消息

说明:

开启了认证后,我们的生产者,需要提供用户名、密码,因此需要配置一个文件,启动时指定,内容如下:可以命名为 producer.conf

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="writer" password="writer";
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test  --producer.config <yourPath>/kafka_2.12-2.4.0/producer.conf

第六步,接收消息

说明:

消费者和生产者一样,启动时,需要指定配置文件,配置文件的内容和生产者类似,只有用户名、密码不一致。内容如下:可以命名为 consumer.conf


security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="reader" password="reader";
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning --consumer.config <yourPath>/kafka_2.12-2.4.0/consumer.conf

总结

我们配置了一个简单的 Kafka 认证,使用 SASL/SCRAM 认证机制。首先创建用户,设置密码,然后修改 server 配置文件,最后,producer 、consumer 在启动时,均需要提供用户名、密码。

这样一个简单的安全访问的 Kafka 就配置完成了。下篇继续介绍,如何进行授权配置。

参考文档及推荐阅读

Kafka核心技术与实战

Apache Kafka