更新时间:2024-10-10 GMT+08:00

设置Kafka Topic权限

Kafka实例开启密文接入后,支持对Topic进行ACL(Access Control List)权限管理,您可以在Topic中为不同的用户设置不同的生产消费消息的权限,以达到用户之间的权限隔离。

本章节主要介绍Kafka实例开启密文接入后,如何对Topic进行用户授权。

单机实例不支持设置Topic权限。

约束与限制

  • 如果“allow.everyone.if.no.acl.found”设置为“true”,且Topic未授权任何用户,此时所有的用户都可以订阅/发布此Topic。如果Topic已授权某一个或多个用户,此时只有授权的用户可以订阅/发布此Topic,其他未授权的用户不能订阅/发布此Topic。“allow.everyone.if.no.acl.found”在配置参数中修改。
  • 如果“allow.everyone.if.no.acl.found”设置为“false”,此时只有授权的用户可以订阅/发布此Topic,其他未授权的用户不能订阅/发布此Topic。“allow.everyone.if.no.acl.found”在配置参数中修改。
  • 如果Topic同时设置了“默认用户”权限和单个用户权限,取两者的并集。

前提条件

设置Topic权限

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例名称,进入实例详情页面。
  5. 在左侧导航栏单击“Topic管理”,进入Topic列表页面。
  6. 在需要设置用户权限的Topic所在行,单击“设置用户权限”,弹出“设置用户权限”对话框。
  7. 为用户设置Topic权限。

    • 如果需要为所有用户设置相同的权限,勾选“默认用户”,并设置权限。如下图所示,所有用户都拥有发布此Topic的权限。
      图1 为所有用户设置相同的权限
    • 如果需要为某个用户设置权限,不勾选“默认用户”,在“用户列表”区域,勾选需要订阅/发布/发布+订阅此Topic的用户名。如果用户过多,在搜索框中输入用户名,快速查找用户。在“已选择”区域,为用户设置不同的权限。如下图所示,此时只有“test”、“send”和“receive”用户可以订阅/发布此Topic,“send_receive”用户无法订阅/发布此Topic。
      图2 为某个用户设置权限

    同时设置了“默认用户”权限和单个用户权限时,取两者的并集。如下图所示,“test”和“receive”用户可以订阅+发布此Topic。

    图3 为用户设置Topic权限

  8. 单击“确定”,完成为用户的授权。

    完成授权后,进入Topic列表页面,在Topic名称前单击,查看已经授权的用户及其对应的权限。

    图4 查看已经授权的用户及其对应的权限

删除Topic权限

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例名称,进入实例详情页面。
  5. 在左侧导航栏单击“Topic管理”,进入Topic列表页面。
  6. 在待删除用户权限的Topic所在行,单击“设置用户权限”,弹出“设置用户权限”对话框。
  7. 在“已选择”区域,在待删除权限的用户所在行,单击“删除”,然后单击“确定”。