注意事项

Kafka v3.9.1,支持配置 ACL。用户可在 Kafka 客户端,进行以下配置操作。这里以配置青云 Kafka 集群自带的客户端为例,说明详细操作。行文中,提及到的命令以及相关参数详情,可参考 Kafka 官方文档

操作步骤

步骤一:修改集群的 SASL 配置

  1. 通过 Web 浏览器,成功登录管理控制台。

  2. 修改目标 Kafka 集群的配置参数 sasl.typeSCRAM-SHA-256SCRAM-SHA-512。详细操作可参考修改集群配置参数

  3. 登录 Kafka 集群的客户端节点,详情可参考 VNC 登录客户端节点

  4. 创建 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

步骤二:添加用户

  1. 登录 Kafka 集群的客户端节点,详情可参考 VNC 登录客户端节点

  2. 执行以下命令行,添加用户 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.type222222 为待创建用户的密码,均需根据实际情况进行填写。

    --entity-name

    待创建的用户,需根据实际情况进行修改。

  3. 执行以下命令行,可查看新添加的用户信息。

    <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 文件目录,需根据实际情况进行修改。

  4. 创建新用户 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 写入消息

  1. 延续前文步骤,登录 Kafka 集群的客户端节点。

  2. 执行以下命令行,以管理员 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。

  3. 执行以下命令行,以前文创建的 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,需根据实际情况进行修改。

  4. 如下图所示,写入数据失败。

    kafka_acl_1

步骤四:为用户配置 ACL

  1. 延续前文步骤,登录 Kafka 集群的客户端节点。

  2. 执行以下命令行,以管理员 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,需根据实际情况进行修改。

  3. 执行以下命令行,查看指定 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 写入消息

  1. 延续前文步骤。

  2. 执行以下命令行,再次使用前文创建的用户 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,需根据实际情况进行修改。

  3. 如下图所示,写入数据成功。

    kafka_acl_2
  4. 执行以下命令行,再次使用管理员 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,需根据实际情况进行修改。

  5. 如下图所示,用户 alice 成功将数据写入 Topic。

    kafka_acl_3