SMC资源绑定标签后,您可以使用标签为资源做分类并控制访问。本文介绍如何基于标签控制RAM用户以及STS(Security Token Service)角色的权限,实现不同的用户可以拥有不同云资源的访问和操作权限。
前提条件
使用阿里云账号已创建RAM用户。具体操作,请参见创建RAM用户。
背景信息
标签可用于标识云资源,实现分类管理资源;访问控制RAM可基于权限策略,控制云资源的访问和操作权限。结合标签和RAM,将标签作为权限策略的匹配条件,可以实现云资源精细化权限管理。
基于标签控制RAM用户权限(即标签鉴权)的逻辑如下:
支持绑定标签的SMC资源包括迁移源和迁移任务,迁移源仅支持创建后为其绑定标签。更多信息,请参见使用标签管理迁移源和迁移任务。
应用场景示例
本文以下述场景作为示例,说明如何实现标签鉴权。
假设您需要控制某一RAM用户只能操作特定(假设绑定了smc:test标签)的SMC资源,如下图所示:
场景示例如下:
场景1:不允许创建不带标签的迁移任务,仅当创建时为SMC迁移任务绑定
smc:test
标签才可以创建成功。场景2:只能操作带有特定标签
smc:test
的SMC资源,包括修改资源属性,删除资源,给资源打标签等操作,不允许操作其它SMC资源。
步骤一:配置自定义权限策略并授权
本步骤以在RAM控制台配置自定义为例,您也可以通过RAM API CreatePolicy创建一个自定义策略,权限策略配置请参见权限策略配置说明。
使用阿里云账号登录RAM控制台。
在左侧导航栏选择 。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。
完成权限策略的配置。
权限策略是一组访问权限的集合。权限策略的结构包括版本号和授权语句列表,每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)以及条件(Condition,可选项)。更多信息,请参见权限策略基本元素和权限策略语法和结构。
根据需要修改权限策略后,单击确定。
在权限策略的
Condition
中,您可以增加需要匹配标签的条件来限制操作权限,支持的标签条件的关键字如下表所示:标签条件关键字
说明
acs:RequestTag
限制在请求中必须传入特定的标签。
如果API请求中没有标签参数,则不能使用acs:RequestTag,否则会导致鉴权失败。
acs:ResourceTag
限制指定的资源必须包含特定的标签。
如果API请求中没有资源ID参数,则不能使用acs:ResourceTag,否则会导致鉴权失败。
说明设计权限策略时,您可以根据各操作接口特性(API请求是否需要指定资源ID、是否支持传入标签),结合实际业务需求,来设置
acs:RequestTag
或acs:ResourceTag
。更多信息,请参见API接口标签鉴权说明。{ "Statement": [ { "Action": "smc:CreateReplicationJob", "Condition": { "StringEquals": { "acs:RequestTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": "smc:*", "Condition": { "StringEquals": { "acs:ResourceTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:TagResources", "*:UntagResources" ], "Effect": "Deny", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
以上策略内容可以实现如下权限控制:
场景
权限策略
场景1:不允许创建不带标签的迁移任务,仅当创建时为SMC迁移任务绑定
smc:test
标签才可以创建成功。{ "Statement": [ { "Action": "smc:CreateReplicationJob", "Condition": { "StringEquals": { "acs:RequestTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
场景2:只能操作带有特定标签(即绑定
smc:test
标签)的SMC资源,包括修改资源属性,删除资源等操作,不允许操作其它SMC资源。{ "Statement": [ { "Action": "smc:*", "Condition": { "StringEquals": { "acs:ResourceTag/smc": "test" } }, "Effect": "Allow", "Resource": "*" }, { "Action": [ "*:TagResources", "*:UntagResources" ], "Effect": "Deny", "Resource": "*" }, { "Action": [ "*:List*", "*:Describe*" ], "Effect": "Allow", "Resource": "*" } ], "Version": "1" }
在弹出的创建权限策略对话框中,输入权限策略名称和备注后,单击确定。
将自定义策略授权给RAM用户。
在左侧导航栏选择 。
为RAM用户授予新创建的自定义权限策略。
具体操作,请参见为RAM用户授权。
步骤二:验证权限策略是否生效
API接口标签鉴权说明
为某一RAM用户授予含有标签鉴权的权限策略后,该RAM用户调用各API接口时的鉴权情况如下表所示:
接口 | 鉴权说明 |
CreateReplicationJob接口 | 该接口无需指定资源ID,匹配
|
ModifyReplicationJobAttribute接口 | 该接口必须指定资源ID,匹配
|
StartReplicationJob、StopReplicationJob、DeleteSourceServer等其他操作接口 | 该类接口必须指定资源ID,匹配
|