借助访问控制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用户。
- 登录RAM控制台,在左侧导航栏中选择 ,并在用户页面上单击创建用户。
- 在创建用户页面的用户账号信息区域中,输入登录名称和显示名称。 说明 登录名称中允许使用小写英文字母、数字、“.”、“_”和“-”,长度不超过128个字符。显示名称不可超过24个字符或汉字。
- (可选)如需一次创建多个用户,则单击添加用户,并重复上一步。
- 在访问方式区域中,勾选控制台密码登录或编程访问,并单击确定。 说明 为提高安全性,请仅勾选一种访问方式。
- 如果勾选控制台密码登录,则完成进一步设置,包括自动生成默认密码或自定义登录密码、登录时是否要求重置密码,以及是否开启MFA多因素认证。
- 如果勾选编程访问,则RAM会自动为RAM用户创建AccessKey(API访问密钥)。
重要 出于安全考虑,RAM控制台只提供一次查看或下载AccessKey Secret的机会,即创建AccessKey时,因此请务必将AccessKey Secret记录到安全的地方。 - 在手机验证对话框中单击获取验证码,并输入收到的手机验证码,然后单击确定。创建的RAM用户显示在用户页面上。
步骤二:为RAM用户添加权限
在使用RAM用户之前,需要为其添加相应权限。
在RAM控制台左侧导航栏中选择 。
在用户页面上找到需要授权的用户,单击操作列中的添加权限。
在添加权限面板的选择权限区域中,通过关键字搜索需要添加的权限策略 ,并单击权限策略将其添加至右侧的已选择列表中,然后单击确定。
- 系统权限
消息队列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" } ] }
参数说明如下:- Action:alikafka:PUB和alikafka: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前后都需要加星号(*)。
- 系统权限
- 在添加权限的授权结果页面上,查看授权信息摘要,并单击完成。
后续步骤
使用阿里云账号创建好RAM用户后,即可将RAM用户的登录名称及密码或者AccessKey信息分发给其他用户。其他用户可以按照以下步骤使用RAM用户登录控制台或调用API。
- 登录控制台
- 打开RAM用户登录页面。
- 在RAM用户登录页面上,输入RAM用户登录名称,单击下一步,并输入RAM用户密码,然后单击登录。 说明 RAM用户登录名称的格式为
<$username>@<$AccountAlias>
或<$username>@<$AccountAlias>.onaliyun.com
。<$AccountAlias>
为账号别名,如果没有设置账号别名,则默认值为阿里云账号的ID。 - 在子用户用户中心页面上单击有权限的产品,即可访问控制台。
- 调用API
使用RAM用户的AccessKey调用API。
在代码中使用RAM用户的AccessKey ID和AccessKey Secret即可。