借助访问控制RAM的RAM用户,您可以实现权限分割的目的,按需为RAM用户赋予不同权限,并避免因暴露阿里云账号密钥造成的安全风险。

注意 消息队列Kafka版授权策略升级,支持更细粒度的自定义授权策略,并兼容老版的Pub/Sub权限策略。旧版RAM用户授权,请参见RAM用户授权(作废)

使用场景

某企业开通了消息队列Kafka版服务,该企业需要员工操作消息队列Kafka版服务所涉及的资源。由于每个员工的工作职责不一样,需要的权限也不一样。该企业的需求:

  • 出于安全或信任的考虑,不希望将云账号密钥直接透露给员工,而希望能给员工创建相应的用户账号。
  • 用户账号只能在授权的前提下操作资源,不需要对用户账号进行独立的计量计费,所有开销都计入企业账号名下。
  • 随时可以撤销用户账号的权限,也可以随时删除其创建的用户账号。

使用说明

在使用RAM授权前,需要注意以下事项:

  • RAM用户授权只针对控制台和OpenAPI的操作,利用SDK收发消息跟RAM是否授权无关。
  • SDK收发消息与开源客户端行为一致,利用SASL进行身份验证。详情请参见SASL用户授权

步骤一:创建RAM用户

首先需要使用阿里云账号登录RAM控制台并创建RAM用户。

  1. 登录RAM控制台
  2. 在左侧导航栏,选择人员管理 > 用户
  3. 用户页面,单击创建用户
  4. 创建用户页面的用户账号信息区域,输入登录名称显示名称
  5. (可选)如需一次创建多个用户,则单击添加用户,并重复上一步。
  6. 访问方式区域中,勾选控制台密码登录编程访问,并单击确定
    说明 为提高安全性,请仅勾选一种访问方式。
    • 如果勾选控制台密码登录,则完成进一步设置,包括自动生成默认密码或自定义登录密码、登录时是否要求重置密码,以及是否开启MFA认证。
    • 如果勾选编程访问,则RAM会自动为RAM用户创建AccessKey ID(API访问密钥)。
    注意 出于安全考虑,RAM控制台只提供一次查看或下载AccessKey Secret的机会,即创建AccessKey ID时,因此请务必将AccessKey Secret记录到安全的地方。
  7. 手机验证对话框,单击获取验证码,输入收到的手机验证码,然后单击确定

步骤二:为RAM用户添加权限

在使用RAM用户之前,需要为其添加相应权限。

  1. 登录RAM控制台
  2. 左侧导航栏,选择人员管理 > 用户
  3. 用户页面,找到需要授权的用户,单击操作列中的添加权限
  4. 添加权限页面的选择权限区域,选择权限策略类型 ,在文本框中输入要添加的权限策略,单击搜索到的权限策略,然后单击确定
    • 系统权限策略

      消息队列Kafka版目前支持两种粗粒度的系统权限策略:

      权限策略名称 说明
      AliyunKafkaFullAccess 管理消息队列Kafka版的权限,等同于阿里云账号的权限,被授予该权限的RAM用户具有所有消息收发权限且有控制台所有功能操作权限。
      AliyunKafkaReadOnlyAccess 消息队列Kafka版的只读权限,被授予该权限的RAM用户具有阿里云账号所有资源的只读权限。
      说明 建议给运维人员授予AliyunKafkaFullAccess权限策略,由运维人员去创建和删除资源。给开发人员授予AliyunKafkaReadOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。 如果想更细粒度地控制开发人员的权限,您可使用以下自定义权限策略。
    • 自定义权限策略

      如果您需要更细粒度地授权,您可以通过创建自定义策略来进行访问控制。

      创建自定义策略的具体步骤,请参见创建自定义策略

      为了方便您自定义RAM权限策略,本文提供了消息队列Kafka版的授权映射表。

      表 1. 消息队列Kafka版自定义授权映射
      Action名称 权限说明 是否为只读类权限
      ReadOnly 所有资源的只读权限,复合型权限
      ListInstance 查看实例
      StartInstance 部署实例
      UpdateInstance 更新实例配置
      ReleaseInstance 释放实例
      ListTopic 查看Topic
      CreateTopic 创建Topic
      UpdateTopic 更新Topic配置
      DeleteTopic 删除Topic
      ListGroup 查看ConsumerGroup
      CreateGroup 创建ConsumerGroup
      UpdateGroup 更新ConsumerGroup配置
      DeleteGroup 删除ConsumerGroup
      QueryMessage 查询消息
      SendMessage 发送消息
      DownloadMessage 下载消息
      CreateDeployment 创建Connector任务
      DeleteDeployment 删除Connector任务
      ListDeployments 查看Connector任务
      UpdateDeploymentRemark 修改Connector任务说明
      GetDeploymentLog 获取Connector任务运行日志
      EnableAcl 开启ACL
      CreateAcl 创建ACL
      DeleteAcl 删除ACL
      ListAcl 查询ACL
      CreateSaslUser 创建SASL用户
      DeleteSaslUser 删除SASL用户
      ListSaslUser 查询SASL用户

      示例一:授予RAM用户对实例alikafka_post-cn-xxx的只读权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                    "alikafka:ReadOnly"
                             ],
                  "Resource": "acs:alikafka:*:*:alikafka_post-cn-xxx",
                  "Effect": "Allow"
              }
          ]
      }

      示例二:授予RAM用户对实例alikafka_post-cn-xxx的查看实例、查看Topic、查看Consumer Group、查询消息、下载消息的权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                    "alikafka:ListInstance",
                    "alikafka:ListTopic",
                    "alikafka:ListGroup",
                    "alikafka:QueryMessage",
                    "alikafka:DownloadMessage"
                             ],
                  "Resource": "acs:alikafka:*:*:alikafka_post-cn-xxx",
                  "Effect": "Allow"
              }
          ]
      }

      示例三:授予RAM用户对实例alikafka_post-cn-xxx的所有权限。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                    "alikafka:*Instance",
                    "alikafka:*Topic",
                    "alikafka:*Group",
                    "alikafka:*Message"
                             ],
                  "Resource": "acs:alikafka:*:*:alikafka_post-cn-xxx",
                  "Effect": "Allow"
              }
          ]
      }
  5. 添加权限授权结果页面上,查看授权信息摘要,并单击完成

后续步骤

使用阿里云账号创建好RAM用户后,即可将RAM用户的登录名称及密码或者AccessKey信息分发给其他用户。其他用户可以按照以下步骤使用RAM用户登录控制台或调用API。

  • 登录控制台
    1. 打开RAM用户登录页面。
    2. RAM用户登录页面,输入RAM用户登录名称,单击下一步,并输入RAM用户密码,然后单击登录
      说明 RAM用户登录名称的格式为<$username>@<$AccountAlias><$username>@<$AccountAlias>.onaliyun.com<$AccountAlias>为账号别名,如果没有设置账号别名,则默认值为阿里云账号的ID。
    3. 在阿里云控制台首页,单击有权限的产品,即可访问控制台。
  • 调用API

    使用RAM用户的AccessKey调用API。

    在代码中使用RAM用户的AccessKey ID和AccessKey Secret即可。

更多信息