标签与RAM的结合使用,能够让不同的RAM用户根据标签拥有不同的云资源访问和操作权限。本文介绍如何为RAM用户授权自定义策略(Policy),使该RAM用户在创建ECS资源时必须绑定特定标签,否则无法创建。

前提条件

已使用主账号创建一个RAM用户,详情请参见创建RAM用户

背景信息

云服务器ECS和其他云产品的诸多资源支持绑定标签。关于支持标签的产品,详情请参见产品列表。默认情况下,创建资源时可选择是否绑定标签,如果您希望创建资源时必须绑定某个特定标签,可以通过创建自定义策略,利用特定标签控制RAM用户对资源的操作。

步骤一:主账号创建与授权RAM策略

创建带特定标签的资源的实现依靠的是自定义RAM策略。本步骤中,为RAM用户userTest授权自定义策略BindTagForRes,使该RAM用户在创建ECS资源时,必须选择带有标签的VPC并且必须绑定特定标签。本示例中,VPC绑定的标签为user:lisi,ECS实例必须绑定的特定标签为owner:zhangsan

  1. 使用主账号登录RAM控制台
  2. 创建自定义策略BindTagForRes,详情请参见创建自定义策略
    本步骤使用的策略如下所示。您可以根据业务需求设置您需要的权限。
    {
        "Statement": [
            {
               "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "ecs:tag/owner": "zhangsan"
                    }
                }
            },
            {
                "Effect": "Allow",
                "Action": "ecs:*",
                "Resource": "*",
                "Condition": {
                    "StringEquals": {
                        "vpc:tag/user": "lisi"
                    }
                }
            },
            {
                "Action": [
                    "ecs:DescribeTagKeys",
                    "ecs:ListTagResources",
                    "ecs:DescribeTags",
                    "ecs:DescribeKeyPairs",
                    "ecs:DescribeImages",
                    "ecs:DescribeSecurityGroups",
                    "ecs:DescribeLaunchTemplates",
                    "ecs:DescribeDedicatedHosts",
                    "ecs:DescribeDedicatedHostTypes",
                    "ecs:DescribeAutoSnapshotPolicyEx",
                    "vpc:DescribeVpcs",
                    "vpc:DescribeVSwitches",
                    "bss:PayOrder"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Effect": "Deny",
                "Action": [
                    "ecs:DeleteTags",
                    "ecs:UntagResources",
                    "ecs:CreateTags",
                    "ecs:TagResources"
                ],
                "Resource": "*"
            }
        ],
        "Version": "1"
    }
    权限策略 相关参数 说明
    创建或访问已绑定标签的资源的权限 "ecs:tag/owner": "zhangsan"
    • 创建资源必须绑定该标签。
    • 控制绑定该标签的资源的访问。
    允许查询标签的接口权限
    • ecs:DescribeTagKeys
    • ecs:ListTagResources
    • ecs:DescribeTags
    RAM用户需要ECS控制台支持标签查询的权限。
    允许查询ECS资源的接口权限
    • ecs:DescribeKeyPairs
    • ecs:DescribeImages
    • ecs:DescribeSecurityGroups
    • ecs:DescribeLaunchTemplates
    • ecs:DescribeDedicatedHosts
    • ecs:DescribeDedicatedHostTypes
    • ecs:DescribeAutoSnapshotPolicyEx
    添加支持标签过滤的权限,在控制台创建资源时需要该权限。本步骤设置的资源权限有密钥对、镜像、安全组、实例、专有宿主机和快照。
    允许查询VPC资源的接口权限
    • vpc:DescribeVpcs
    • vpc:DescribeVSwitches
    查询已创建的专有网络VPC和交换机。
    允许支付订单的接口权限 bss:PayOrder 该接口权限仅适用于您购买包年包月的资源。
    不允许操作标签相关的接口权限
    • ecs:DeleteTags
    • ecs:UntagResources
    • ecs:CreateTags
    • ecs:TagResources
    权限中不允许出现与操作标签有关的接口,避免您因修改特定标签导致该特定标签失去对资源的控制权限。您可以根据需要添加该权限,但需要注意变更后的影响。
    VPC绑定标签策略 "vpc:tag/user": "lisi" 本步骤中的策略规定了VPC必须绑定标签。您也可以自行设置是否要求VPC绑定标签。
  3. 将自定义策略授权给您希望控制访问的RAM用户或组。详情请参见为RAM角色授权。本步骤中将自定义策略BindTagForRes授权给RAM用户userTest。
    说明 若您将自定义策略BindTagForRes授权已存在的RAM用户,请注意RAM用户多个权限策略产生的权限问题。

步骤二:主账号准备专有网络VPC资源

步骤一中自定义策略规定了创建云服务器ECS的资源需要选择带有user:lisi标签的专有网络VPC,因此需要准备VPC资源并绑定标签。如果VPC没有绑定特定标签,在创建ECS资源时会没有权限。

说明 创建专有网络VPC时无法绑定标签,必须在创建完成后调用VPC的TagResources接口为VPC绑定标签。
  1. 使用主账号创建专有网络VPC,详情请参见创建专有网络
  2. 调用VPC的API TagResources为VPC绑定标签user:lisi
    您也可以为VPC绑定其他标签。
  3. 调用VPC的APIListTagResources查询已创建的VPC,如果调用返回值中包含"TagKey": "user""TagValue": "lisi",说明VPC绑定标签user:lisi成功。

步骤三:RAM子账号创建ECS资源

本步骤以创建ECS实例作为示例,使用RAM用户userTest登录ECS管理控制台,创建绑定标签的实例。

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击实例与镜像 > 实例
  3. 在顶部菜单栏左上角处,选择地域。
  4. 单击创建实例,完成创建。
    说明 必须选择步骤二中绑定标签user:lisi的VPC,并且为ECS实例绑定特定标签owner:zhangsan,才能创建成功;若未绑定特定标签,则会创建失败,提示您没有权限进行此操作
    绑定特定标签

后续步骤

您可以为已有的资源绑定特定标签,实现对资源的访问控制,并对带特定标签的资源进行访问。详情请参见使用标签控制资源的访问