更新时间:2023-04-26 GMT+08:00

资源粒度授权

可授权的资源类型

资源粒度授权指的是能够指定用户对哪些资源具有执行操作的能力。弹性云服务器部分API支持资源粒度授权,即表示针对资源粒度授权的ECS操作,控制何时允许用户执行操作或是允许用户使用的特定资源。在权限策略中可授权的资源类型如表1所示。

表1 可授权的资源类型

资源类型

权限策略中的资源唯一标识

实例相关

ECS:$region:$domainId:instance:$instanceId

设置资源唯一标识时,您需要将$region、$domainId、$instanceId等变量参数修改为实际的参数信息,或者直接使用*通配符。

生命周期管理~标签管理中,实例授权中被标记为“×”的即表示该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实例进行开机、关机或重启。

生命周期管理~标签管理中,标签授权中被标记为“×”的即表示该API不支持使用标签对资源进行访问控制。针对不支持标签授权的ECS API,您仍可以向用户授予该操作的权限,但权限策略语句中的Condition不能通过g:ResourceTag指定标签键值。