
# 资源粒度授权
#### 可授权的资源类型
资源粒度授权指的是能够指定用户对哪些资源具有执行操作的能力。弹性云服务器部分API支持资源粒度授权，即表示针对资源粒度授权的ECS操作，控制何时允许用户执行操作或是允许用户使用的特定资源。在权限策略中可授权的资源类型如[表1]所示。
 表1可授权的资源类型 
| 资源类型 | 权限策略中的资源唯一标识                               |
|:---|:---|
| 实例相关 | ECS:$region:$domainId:instance:$instanceId |
   
设置资源唯一标识时，您需要将$region、$domainId、$instanceId等变量参数修改为实际的参数信息，或者直接使用\*通配符。
![](https://support.huaweicloud.com/api-ecs/public_sys-resources/note_3.0-zh-cn.png)
在[生命周期管理](https://support.huaweicloud.com/api-ecs/ecs_06_0002.html)\~[FPGA逻辑文件管理](https://support.huaweicloud.com/api-ecs/ecs_06_0020.html)中，实例授权中被标记为"×"的即表示该API不支持对资源粒度授权。针对不支持资源粒度授权的ECS API，您仍可以向用户授予该操作的权限，但权限策略语句中的Resource必须指定为\*。
策略示例：如果将如下策略授权给用户A，表示用户A只具有虚拟机9e0263ee-542a-4114-bf4a-5dd14d3f8a18的开机、关机和重启权限。
```
{
    "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。
1. 使用主账号登录IAM控制台。
2. 创建自定义策略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操作资源上绑定的标签，避免用户因修改标签导致没有权限。      |
      
   
3. 将自定义策略授权给您希望控制访问的IAM用户或组，本步骤中将自定义策略policyTest授权给IAM用户A。
**步骤二：主账号为已有资源绑定特定标签**
您可以为已有的ECS实例绑定特定标签，实现对已有ECS实例的访问控制。
1. 登录管理控制台。
2. 进入弹性云服务器详情页，单击"标签"。
3. 单击"添加标签"，创建team:dev标签，并绑定至已有ECS实例。
**步骤三：IAM子用户访问带标签的ECS实例**
用户A登录ECS控制台，操作带标签的ECS实例。
1. 登录ECS管理控制台。
2. 选择地域后，查看该地域全部ECS实例列表。
3. 根据标签过滤出有操作权限的ECS实例。
4. 对有操作权限的ECS实例进行开机、关机或重启。
![](https://support.huaweicloud.com/api-ecs/public_sys-resources/note_3.0-zh-cn.png)
在[生命周期管理](https://support.huaweicloud.com/api-ecs/ecs_06_0002.html)\~[FPGA逻辑文件管理](https://support.huaweicloud.com/api-ecs/ecs_06_0020.html)中，标签授权中被标记为"×"的即表示该API不支持使用标签对资源进行访问控制。针对不支持标签授权的ECS API，您仍可以向用户授予该操作的权限，但权限策略语句中的Condition不能通过g:ResourceTag指定标签键值。
