资源粒度授权
可授权的资源类型
资源粒度授权指的是能够指定用户对哪些资源具有执行操作的能力。弹性云服务器部分API支持资源粒度授权,即表示针对资源粒度授权的ECS操作,控制何时允许用户执行操作或是允许用户使用的特定资源。在权限策略中可授权的资源类型如表1所示。
设置资源唯一标识时,您需要将$region、$domainId、$instanceId等变量参数修改为实际的参数信息,或者直接使用*通配符。
在生命周期管理~FPGA逻辑文件管理中,实例授权中被标记为“×”的即表示该API不支持对资源粒度授权。针对不支持资源粒度授权的ECS API,您仍可以向用户授予该操作的权限,但权限策略语句中的Resource必须指定为*。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServers:start", "ecs:cloudServers:reboot", "ecs:cloudServers:stop" ], "Resource": [ "ECS:*:*:instance:9e0263ee-542a-4114-bf4a-5dd14d3f8a18" ] } ] }
使用标签控制资源的访问
弹性云服务器ECS资源绑定标签后,您可以使用标签为资源做分类并控制访问。在策略中,您可以定义多个标签,然后将一个或多个策略附加到IAM用户或用户组。如果要控制IAM用户可以访问哪些资源,您可以创建自定义策略并使用标签来实现访问控制。
步骤一:主账号创建与授权IAM策略
本步骤将使用主账号新建一个自定义策略policyTest,并将自定义策略policyTest授权给IAM用户A。
- 使用主账号登录IAM控制台。
- 创建自定义策略policyTest,如下所示,您可以在策略主体中为ECS实例设置多个标签。
{ "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:cloudServers:start", "ecs:cloudServers:reboot", "ecs:cloudServers:stop" ], "Condition": { "StringEqualsIgnoreCase": { "g:ResourceTag/team": [ "dev" ] } } }, { "Effect": "Allow", "Action": [ "ecs:cloudServers:list", "ecs:cloudServers:showServer", "ecs:cloudServers:showServerTags" ] }, { "Effect": "Deny", "Action": [ "ecs:cloudServers:batchSetServerTags" ] } ] }
权限策略
策略内容
说明
允许带标签资源的开机/关机/重启权限
"g:ResourceTag/team":"dev"
允许用户A对带有标签“team=dev”的虚拟机进行开机/关机/重启操作。
允许查询虚拟机详情与标签的接口权限
ecs:cloudServers:list
ecs:cloudServers:showServer
ecs:cloudServers:showServerTags
ECS控制台上用户需要查看虚拟机和标签的权限。
不允许操作标签相关的接口权限
ecs:cloudServers:batchSetServerTags
禁止用户A操作资源上绑定的标签,避免用户因修改标签导致没有权限。
- 将自定义策略授权给您希望控制访问的IAM用户或组,本步骤中将自定义策略policyTest授权给IAM用户A。
步骤二:主账号为已有资源绑定特定标签
您可以为已有的ECS实例绑定特定标签,实现对已有ECS实例的访问控制。
- 登录管理控制台。
- 进入弹性云服务器详情页,单击“标签”。
- 单击“添加标签”,创建team:dev标签,并绑定至已有ECS实例。
步骤三:IAM子用户访问带标签的ECS实例
用户A登录ECS控制台,操作带标签的ECS实例。
- 登录ECS管理控制台。
- 选择地域后,查看该地域全部ECS实例列表。
- 根据标签过滤出有操作权限的ECS实例。
- 对有操作权限的ECS实例进行开机、关机或重启。
在生命周期管理~FPGA逻辑文件管理中,标签授权中被标记为“×”的即表示该API不支持使用标签对资源进行访问控制。针对不支持标签授权的ECS API,您仍可以向用户授予该操作的权限,但权限策略语句中的Condition不能通过g:ResourceTag指定标签键值。