Kafka 配置 ACL
注意事项
Kafka v3.9.1,支持配置 ACL。用户可在 Kafka 客户端,进行以下配置操作。这里以配置青云 Kafka 集群自带的客户端为例,说明详细操作。行文中,提及到的命令以及相关参数详情,可参考 Kafka 官方文档。
操作步骤
步骤一:修改集群的 SASL 配置
-
通过 Web 浏览器,成功登录管理控制台。
-
修改目标 Kafka 集群的配置参数
sasl.type
为SCRAM-SHA-256
或SCRAM-SHA-512
。详细操作可参考修改集群配置参数。 -
登录 Kafka 集群的客户端节点,详情可参考 VNC 登录客户端节点。
-
创建
admin
用户的客户端配置文件admin.properties
,内容如下所示。其中sasl.mechanism
与页面配置参数sasl.type
保持一致。security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="k$o83*_!@%^*(help)Jk3&H0ve$a34!;j"; key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
步骤二:添加用户
-
登录 Kafka 集群的客户端节点,详情可参考 VNC 登录客户端节点。
-
执行以下命令行,添加用户
alice
,并设置密码为222222
。<kafka_dir>/bin/kafka-configs.sh --bootstrap-server 192.168.0.8:9092 --command-config admin.properties --alter --add-config 'SCRAM-SHA-512=[password=222222]' --entity-type users --entity-name alice
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--command-config
前文创建的
admin.properties
文件目录,需根据实际情况进行修改。--add-config
按照示例格式进行填写,其中
SCRAM-SHA-512
为前文设置的 Kafka 集群的配置参数sasl.type
,222222
为待创建用户的密码,均需根据实际情况进行填写。--entity-name
待创建的用户,需根据实际情况进行修改。
-
执行以下命令行,可查看新添加的用户信息。
<kafka_dir>/bin/kafka-configs.sh --bootstrap-server 192.168.0.8:9092 --command-config admin.properties --describe --entity-type users
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--command-config
前文创建的
admin.properties
文件目录,需根据实际情况进行修改。 -
创建新用户
alice
的客户端配置文件alice.properties
,内容如下所示。security.protocol=SASL_PLAINTEXT sasl.mechanism=SCRAM-SHA-512 sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="alice" password="222222"; key.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer value.deserializer=org.apache.kafka.common.serialization.ByteArrayDeserializer
-
alice
为上一步创建的新用户,需根据实际情况进行修改。如上一步创建的新用户为alice_test
,则此处创建的配置文件为alice_test.properties
。 -
配置参数
sasl.mechanism
为创建用户时,指定参数,需根据实际情况进行填写。 -
配置参数
sasl.jaas.config
中的username="alice" password="222222"
为创建用户时指定的用户名与密码,需根据实际情况进行修改。
-
步骤三:通过新添加的用户向 Topic 写入消息
-
延续前文步骤,登录 Kafka 集群的客户端节点。
-
执行以下命令行,以管理员
admin
用户创建 Topic。<kafka_dir>/bin/kafka-topics.sh --bootstrap-server 192.168.0.8:9092 --command-config admin.properties --create --topic acltest
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--command-config
前文创建的
admin.properties
文件目录,需根据实际情况进行修改。--topic
待创建的 Topic。
-
执行以下命令行,以前文创建的
alice
用户朝 Topic 写入数据。<kafka_dir>/bin/kafka-console-producer.sh --bootstrap-server 192.168.0.8:9092 --producer.config alice.properties --topic acltest
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--producer.config
前文创建的用户配置文件
alice.properties
目录,需根据实际情况进行修改。--topic
待写入数据的 Topic,需根据实际情况进行修改。
-
如下图所示,写入数据失败。
步骤四:为用户配置 ACL
-
延续前文步骤,登录 Kafka 集群的客户端节点。
-
执行以下命令行,以管理员
admin
用户设置 ACL。<kafka_dir>/bin/kafka-acls.sh --bootstrap-server 192.168.0.8:9092 --command-config admin.properties --add --allow-principal User:alice -operation Write --topic acltest
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--command-config
前文创建的
admin.properties
文件目录,需根据实际情况进行修改。--allow-principal
命令行示例中的
alice
为目标用户名,需根据实际情况进行修改。--topic
待设置 ACL 的 Topic,需根据实际情况进行修改。
-
执行以下命令行,查看指定 Topic 已配置的 ACL 规则。
<kafka_dir>/bin/kafka-acls.sh --bootstrap-server 192.168.0.8:9092 --command-config admin.properties --list --topic acltest
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--command-config
前文创建的
admin.properties
文件目录,需根据实际情况进行修改。--topic
待查看 ACL 的 Topic,需根据实际情况进行修改。
步骤五:再次通过新添加的用户向 Topic 写入消息
-
延续前文步骤。
-
执行以下命令行,再次使用前文创建的用户
alice
朝 Topic 写入数据。<kafka_dir>/bin/kafka-console-producer.sh --bootstrap-server 192.168.0.8:9092 --producer.config alice.properties --topic acltest
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--producer.config
前文创建的用户配置文件
alice.properties
目录,需根据实际情况进行修改。--topic
待写入数据的 Topic,需根据实际情况进行修改。
-
如下图所示,写入数据成功。
-
执行以下命令行,再次使用管理员
admin
用户,读取 Topic 中的数据。<kafka_dir>/bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.8:9092 --consumer.config admin.properties --topic acltest --from-beginning
命令行参数说明
参数 说明 <kafka_dir>
Kafka 安装目录,需根据实际情况进行修改。
--bootstrap-server
可设置一个或多个 Kafka 节点,格式为
<node1_ip>:9092,<node1_ip>:9092,<node1_ip>:9092
,其中<node1_ip>
为 Kafka 节点 IP,均需根据实际情况进行填写。--producer.config
前文创建的客户端配置文件
alice.properties
目录,需根据实际情况进行修改。--topic
待查看数据的 Topic,需根据实际情况进行修改。
-
如下图所示,用户
alice
成功将数据写入 Topic。