标签与RAM的结合使用,能够让不同的RAM用户根据标签拥有不同的云资源访问和操作权限。本文介绍如何为RAM用户授权自定义策略(Policy),使该RAM用户在创建ECS资源时必须绑定特定标签,否则无法创建。
背景信息
云服务器ECS和其他云产品的诸多资源支持绑定标签。关于支持标签的产品,详情请参见产品列表。默认情况下,创建资源时可选择是否绑定标签,如果您希望创建资源时必须绑定某个特定标签,可以通过创建自定义策略,利用特定标签控制RAM用户对资源的操作。
步骤一:主账号创建与授权RAM策略
创建带特定标签的资源的实现依靠的是自定义RAM策略。本步骤中,为RAM用户userTest授权自定义策略BindTagForRes,使该RAM用户在创建ECS资源时,必须选择带有标签的VPC并且必须绑定特定标签。本示例中,VPC绑定的标签为user:lisi
,ECS实例必须绑定的特定标签为owner:zhangsan
。
- 使用主账号登录RAM控制台。
- 创建自定义策略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绑定标签。 |
- 将自定义策略授权给您希望控制访问的RAM用户或组。详情请参见为RAM角色授权。本步骤中将自定义策略BindTagForRes授权给RAM用户userTest。
说明 若您将自定义策略BindTagForRes授权已存在的RAM用户,请注意RAM用户多个权限策略产生的权限问题。
步骤二:主账号准备专有网络VPC资源
步骤一中自定义策略规定了创建云服务器ECS的资源需要选择带有user:lisi
标签的专有网络VPC,因此需要准备VPC资源并绑定标签。如果VPC没有绑定特定标签,在创建ECS资源时会没有权限。
说明 创建专有网络VPC时无法绑定标签,必须在创建完成后调用VPC的TagResources接口为VPC绑定标签。
- 使用主账号创建专有网络VPC,详情请参见创建专有网络。
- 调用VPC的API TagResources为VPC绑定标签
user:lisi
。
您也可以为VPC绑定其他标签。
- 调用VPC的APIListTagResources查询已创建的VPC,如果调用返回值中包含
"TagKey": "user"
和"TagValue": "lisi"
,说明VPC绑定标签user:lisi
成功。
步骤三:RAM子账号创建ECS资源
本步骤以创建ECS实例作为示例,使用RAM用户userTest登录ECS管理控制台,创建绑定标签的实例。
- 登录ECS管理控制台。
- 在左侧导航栏,单击。
- 在顶部菜单栏左上角处,选择地域。
- 单击创建实例,完成创建。
说明 必须选择步骤二中绑定标签
user:lisi
的VPC,并且为ECS实例绑定特定标签
owner:zhangsan
,才能创建成功;若未绑定特定标签,则会创建失败,提示
您没有权限进行此操作。
后续步骤
您可以为已有的资源绑定特定标签,实现对资源的访问控制,并对带特定标签的资源进行访问。详情请参见使用标签控制资源的访问。