今天我们来实践 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 就配置完成了。下篇继续介绍,如何进行授权配置。