更新时间:2025-08-21 GMT+08:00

设置Kafka Topic权限

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

本章节主要介绍Kafka实例开启密文接入后,如何对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权限。
  • 批量设置Topic权限后,会覆盖Topic之前的权限。
  • 修改Topic权限过程中,可能存在权限短暂失效的情况,客户端报“AuthorizationException”错误,建议在客户端设置重试机制,具体方法请参考Kafka客户端使用建议

前提条件

查看Topic的权限信息

  1. 登录Kafka控制台
  2. 在管理控制台左上角单击,选择Kafka实例所在的区域。
  3. 单击Kafka实例名称,进入实例详情页面。
  4. 在左侧导航栏单击“实例管理 > Topic管理”,进入Topic列表页面。
  5. 单击Topic名称,进入Topic详情页面。
  6. 单击“用户权限”,进入“用户权限”页签。
  7. 查看该Topic的所有授权用户及其对应权限。

    图1 Topic的用户权限
    表1 用户权限

    参数名称

    说明

    用户名

    拥有发布/订阅Topic权限的用户。

    权限

    该用户对应的权限。

设置Topic权限

在控制台,您可为SASL用户授予发布/订阅权限,支持为单个Topic授权,也可同时为多个Topic授权。

  1. 登录Kafka控制台
  2. 在管理控制台左上角单击,选择Kafka实例所在的区域。
  3. 单击Kafka实例名称,进入实例详情页面。
  4. 在左侧导航栏单击“实例管理 > Topic管理”,进入Topic列表页面。
  5. 在待设置用户权限的Topic所在行,单击“设置用户权限”,弹出“设置权限”对话框。
  6. 通过以下任意一种方法,进入设置用户权限页面。

    • 在待设置用户权限的Topic所在行,单击“用户权限”,弹出“用户权限”对话框。
    • 单击待设置用户权限的Topic名称,进入Topic详情页面。单击右上角的“设置权限”,弹出“用户权限”对话框。
    • 单击待设置用户权限的Topic名称,进入Topic详情页面。单击“用户权限”,进入“用户权限”页签。单击“设置权限”,弹出“用户权限”对话框。

  7. 为用户设置Topic权限。

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

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

    图4 为用户设置Topic权限

  8. 在“用户权限”对话框底部,单击“一键输入”,系统自动在输入框中输入“MODIFY”,确认修改权限。然后单击“确定”,完成为用户的授权。

    图5 确认修改权限

  9. 验证权限设置是否正确。

    1. 单击已设置用户权限的Topic名称,进入Topic详情页面。
    2. 单击“用户权限”,进入“用户权限”页签。
    3. 查看已设置的用户权限。
      图6 查看已经授权的用户及其对应的权限

  1. 登录Kafka控制台
  2. 在管理控制台左上角单击,选择Kafka实例所在的区域。
  3. 单击Kafka实例名称,进入实例详情页面。
  4. 在左侧导航栏单击“实例管理 > Topic管理”,进入Topic列表页面。
  5. 在Topic名称左侧的方框中,勾选待设置用户权限的Topic,单击页面上方的“设置用户权限”,弹出“批量设置权限”对话框。
  6. 为用户批量设置Topic权限。

    批量设置权限页面不展示已设置的权限,且设置之后会覆盖之前的权限。例如:“test”用户初始拥有“发布+订阅”Topic01权限,在批量设置Topic权限时,将“test”用户设置为“发布”权限,最终“test”用户只拥有“发布”Topic01权限。
    • 如果需要为所有用户设置相同的权限,勾选“默认用户”,并设置权限。如下图所示,所有用户都拥有发布topic01和topic02的权限。
      图7 为所有用户设置相同的权限
    • 如果需要为某个用户设置权限,不勾选“默认用户”,在“用户列表”区域,勾选待授权的用户名。如果用户过多,在搜索框中输入用户名,快速查找用户。在“Topic权限”区域,为用户设置不同的权限。如下图所示,此时只有“test”、“send”和“receive”用户可以订阅/发布topic01和topic02,“send_receive”用户无法订阅/发布topic01和topic02。
      图8 为多个用户设置权限

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

    图9 为用户设置Topic权限

  7. 在“批量设置权限”对话框底部,单击“一键输入”,系统自动在输入框中输入“MODIFY”,确认修改权限。然后单击“确定”,完成为用户的授权。
  8. 验证权限设置是否正确。

    1. 单击已设置用户权限的Topic名称,进入Topic详情页面。
    2. 单击“用户权限”,进入“用户权限”页签。
    3. 查看已设置的用户权限。
      图10 查看已经授权的用户及其对应的权限

删除单个Topic权限

  1. 登录Kafka控制台
  2. 在管理控制台左上角单击,选择Kafka实例所在的区域。
  3. 单击Kafka实例名称,进入实例详情页面。
  4. 在左侧导航栏单击“实例管理 > Topic管理”,进入Topic列表页面。
  5. 通过以下任意一种方法,进入设置用户权限页面。

    • 在待删除用户权限的Topic所在行,单击“用户权限”,弹出“用户权限”对话框。
    • 单击待删除用户权限的Topic名称,进入Topic详情页面。单击右上角的“设置权限”,弹出“用户权限”对话框。
    • 单击待删除用户权限的Topic名称,进入Topic详情页面。单击“用户权限”,进入“用户权限”页签。单击“设置权限”,弹出“用户权限”对话框。

  6. 在“Topic权限”区域,在待删除权限的用户所在行,单击“删除”。
  7. 在“用户权限”对话框底部,单击“一键输入”,系统自动在输入框中输入“MODIFY”,确认修改权限。然后单击“确定”。
  8. 验证权限是否已删除。

    1. 单击已删除用户权限的Topic名称,进入Topic详情页面。
    2. 单击“用户权限”,进入“用户权限”页签。
    3. 已删除的用户不再显示在“用户权限”中,表明权限已成功删除。

相关文档

如果您希望通过API设置Topic权限,请参考设置用户权限