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

重要 消息队列Kafka版授权策略升级,支持更细粒度的自定义授权策略,并兼容老版的Pub/Sub权限策略。新版RAM用户授权,请参见RAM主子账号授权

使用场景

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

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

使用说明

在使用RAM授权时,需要注意以下几点:

  • RAM用户授权只针对控制台和OpenAPI的操作,利用SDK收发消息跟RAM是否授权无关。

    SDK收发消息与开源客户端行为一致,VPC内访问无需鉴权,公网访问利用SASL进行身份验证。如果想控制SDK收发的范围,可以在消息队列Kafka版控制台的实例详情页设置IP白名单。

  • 本文中提及的资源是指实例、Topic和Consumer Group;涉及的操作主要是指创建、删除和其它操作,其它操作包括查看Topic状态、重置位点等除创建和删除以外的操作。

步骤一:创建RAM用户

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

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

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

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

  1. RAM控制台左侧导航栏中选择人员管理 > 用户

  2. 用户页面上找到需要授权的用户,单击操作列中的添加权限

  3. 添加权限面板的选择权限区域中,通过关键字搜索需要添加的权限策略 ,并单击权限策略将其添加至右侧的已选择列表中,然后单击确定

    • 系统权限

      消息队列Kafka版目前仅支持三种系统权限策略:

      权限策略名称说明
      AliyunKafkaFullAccess管理消息队列Kafka版的权限,等同于阿里云账号的权限,被授予该权限的RAM用户具有所有消息收发权限且有控制台所有功能操作权限。
      AliyunKafkaPubOnlyAccess消息队列Kafka版的发布权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK发送消息的权限。
      AliyunKafkaSubOnlyAccess消息队列Kafka版的订阅权限,被授予该权限的RAM用户具有使用阿里云账号所有资源通过SDK订阅消息的权限。
      说明 建议给运维人员授予AliyunKafkaFullAccess权限策略,由运维人员去创建和删除资源。给开发人员授予AliyunKafkaPubOnlyAccess和AliyunKafkaSubOnlyAccess权限策略,可以查看这些资源,但是不能删除和创建。 如果想控制开发人员只能查看某个具体的实例下的资源,可使用以下自定义策略。
    • 自定义策略

      目前支持设置RAM用户只能查看某个实例ID下的Topic和Consumer Group。

       ```
       {
           "Version": "1",
           "Statement": [
               {
                   "Action": [
                       "alikafka:PUB",
                       "alikafka:SUB"
                   ],
                   "Resource": [
                       "acs:alikafka:*:*:*<yourInstanceId>*"
                   ],
                   "Effect": "Allow"
               }
           ]
       }
      参数说明如下:
      • Actionalikafka:PUBalikafka:SUB都需配上,两者的区分已无实际意义。
      • Resource: 格式acs:alikafka:*:*:*<yourInstanceId>*,例如,实例ID为alikafka_post-cn-45915douXXX,则配置为acs:alikafka:*:*:*alikafka_post-cn-45915douXXX*,代表RAM用户可以访问实例alikafka_post-cn-45915douXXX下的Topic和Consumer Group。
        重要 实例ID前后都需要加星号(*)。
  4. 添加权限授权结果页面上,查看授权信息摘要,并单击完成

后续步骤

使用阿里云账号创建好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即可。

更多信息