今天我们来实践 Kafka 安全配置,通过本篇教程,我们将配置一个需要使用用户名、密码访问的 Kafka。
本文使用 SASL/SCRAM 认证机制,是 Kafka 0.10.2 版本引入的。
测试环境: MacOs mojave,kafka_2.12-2.4.0
第一步,创建用户
说明:
admin 用于 broker 之间通信,writer 用于生产者,reader 用于消费者。
1 | java复制代码bin/kafka-configs.sh --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin]' --entity-type users --entity-name admin |
第二步,创建 JAAS 文件
说明:
这个文件用于启动 broker,文件可以命名为 kafka-broker.jaas,broker 启动时需要指定该文件。
1 | java复制代码 |
第三步,配置 server.properties 文件
说明:
既然要进行认证,server.properties 文件是要进行配置的,参考下面的配置。
1 | java复制代码sasl.enabled.mechanisms=SCRAM-SHA-256 |
第四步,启动 broker
说明:
启动 broker 时,指定 jaas 文件,及修改后的 server.properties 文件。
1 | java复制代码KAFKA_OPTS=-Djava.security.auth.login.config=<yourPath>/kafka-broker.jaas bin/kafka-server-start.sh config/server.properties |
第五步,发送消息
说明:
开启了认证后,我们的生产者,需要提供用户名、密码,因此需要配置一个文件,启动时指定,内容如下:可以命名为 producer.conf
1 | java复制代码security.protocol=SASL_PLAINTEXT |
1 | java复制代码bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test --producer.config <yourPath>/kafka_2.12-2.4.0/producer.conf |
第六步,接收消息
说明:
消费者和生产者一样,启动时,需要指定配置文件,配置文件的内容和生产者类似,只有用户名、密码不一致。内容如下:可以命名为 consumer.conf
1 | java复制代码 |
1 | java复制代码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 就配置完成了。下篇继续介绍,如何进行授权配置。
参考文档及推荐阅读
本文转载自: 掘金