更新时间:2026-06-29 GMT+08:00
分享

创建Kafka权限角色

操作场景

在启用Kerberos认证(安全模式)的Kafka集群中,不同用户对Kafka的权限需求不同。如果不进行精细化的权限控制,所有用户将拥有相同的操作权限,存在安全风险和数据误操作隐患。

该任务指导MRS集群管理员在Manager创建一个角色并为用户绑定该角色,绑定该角色的用户将拥有对应角色的权限。Kafka角色可设置对Topic的创建、删除权限,或者对Topic的生产和消费权限等。

约束与限制

  • 本章节内容适用于MRS 3.x及后续版本。
  • 集群已启用Kerberos认证(安全模式)支持创建Kafka角色,集群未启用Kerberos认证(普通模式)不支持创建Kafka角色。
  • 如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Kafka的Ranger访问权限策略。

创建Kafka角色

  1. 登录MRS集群Manager。

    登录集群Manager具体操作,请参考访问MRS集群Manager。

  2. 选择“系统 > 权限 > 角色”。
  3. 单击“添加角色”,然后在“角色名称”和“描述”输入角色名字与描述。例如角色名称为“kafkarole”。
  4. 在“配置资源权限”中,选择“待操作集群的名称 > Kafka”。

    根据业务需求选择权限,具体配置项,请参见表1。
    表1 配置项说明

    任务场景

    角色授权操作

    设置Kafka管理员权限

    在“配置资源权限”的表格中勾选“Kafka Manager权限”。

    设置此权限后,拥有Topic的创建、修改、删除等权限,但是不具备任何Topic的生产和消费权限。

    设置用户对Topic的生产权限

    1. 在“配置资源权限”的表格中单击“Kafka Topic生产和消费权限”。
    2. 在指定Topic的“权限”列,勾选“Kafka生产者权限”。

    设置用户对Topic的消费权限

    1. 在“配置资源权限”的表格中单击“Kafka Topic生产和消费权限”。
    2. 在指定Topic的“权限”列,勾选“Kafka消费者权限”。

  5. 单击“确定”完成,返回“角色”页面。

    角色创建完成后,绑定该角色的用户将拥有对应权限。

创建Kafka用户并绑定角色

本操作以创建一个具有Kafka管理员权限的人机用户为例进行说明。

  1. 登录MRS集群Manager。

    登录集群Manager具体操作,请参考访问MRS集群Manager。

  2. 选择“系统 > 权限 > 用户”。
  3. 在用户列表上方,单击“添加用户”,配置如下参数。

    • 用户名:自定义,例如“kafkauser”
    • 用户类型:人机
    • 密码、确认新密码:自定义用户密码
    • 用户组:单击“添加”,选择用户组,例如选择“kafkaadmin”,单击“确定”。

      Kafka默认用户组如下表所示。

      表2 Kafka默认用户组

      用户组名称

      描述

      kafka

      Kafka普通用户组。添加入本组的用户,需要被kafkaadmin组用户授予特定Topic的读写权限,才能访问对应Topic。

      kafkaadmin

      Kafka管理员用户组。添加入本组的用户,拥有所有Topic的创建,删除,授权及读写权限。

      kafkasuperuser

      Kafka高级用户组。添加入本组的用户,拥有所有Topic的读写权限。

      kafkaui

      Kafka UI用户组。添加入本组的用户,拥有Kafka UI的查看权限。

    • 主组:根据业务实际需要选择,例如“kafkaadmin”。
    • 角色:单击“添加”,为用户绑定角色。

      可以选择系统预置的角色,如果系统预置的角色不满足需求,可以参考创建Kafka角色创建角色后在此处进行绑定。例如“kafkarole”。

  4. 单击“确定”完成用户创建。

    “人机”用户创建成功后,通常需要修改初始密码后才可以正常使用。可以单击Manager页面右上角用户名称,选择“退出登录”并单击“确定”,使用新创建的用户登录MRS集群Manager,按照界面提示重置密码即可。

  5. 检查新创建用户的权限。以下步骤以创建Topic为例进行说明。

    1. 以客户端安装用户,登录安装客户端的节点。
    2. 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,具体以实际替换。
      cd /opt/client
    3. 执行以下命令配置环境变量。
      source bigdata_env
    4. 执行以下命令,进行用户认证,该用户为新创建的用户名,例如kafkauser。(集群未启用Kerberos认证(普通模式)跳过此步骤)
      kinit kafkauser
    5. 执行以下命令进入Kafka客户端“bin”目录。
      cd Kafka/kafka/bin
    6. 执行以下命令,使用kafka-topics.sh创建Kafka主题,例如主题名称为“topic1”。
      ./kafka-topics.sh --create --topic 主题名称 --partitions 主题占用的分区数 --replication-factor 主题的备份数 --bootstrap-server Kafka集群IP:21007 --command-config ../config/client.properties
      • 如果使用的用户包含创建Topic的权限,则执行成功,例如返回结果如下:
        Created topic topic1.
        ...
      • 如果使用的用户不包含创建Topic的权限,则执行失败,例如返回结果如下:
        Error while executing topic command : Authorization failed.
        [xxx] ERROR org.apache.kafka.common.errors.TopicAuthorizationException: Authorization failed.
         (kafka.admin.TopicCommand$)
        ...

相关文档

相关文档