问题
如何创建RAM (Resource Access Management)策略以使用标签控制对 云服务器(Elastic Compute Service,ECS)实例的访问?
场景描述
控制对ECS 实例部署的访问,具体操作如下所示
- 添加标签:向实例中添加特定标签,您希望向用户或组授予对这些实例的访问权限。
- 创建RAM策略:创建一个 RAM 策略,以授予对任何带该特定标签的实例的访问权限。
- 授权用户:将该 RAM 策略附加到您希望访问实例的用户或组。
解决方法
向 ECS 实例组添加标签
打开 ECS 控制台,然后向 ECS 实例组添加标签,您希望用户或组能够访问这些实例。如果您还没有标签,请创建一个并加入资源
注意:在为资源添加标签之前,请阅读并了解标签限制。
创建一个 RAM 策略,以授予对带该特定标签的实例的访问权限
创建一个类似于以下的 RAM 策略:
允许控制带标签的实例。
包含一个条件语句,如果条件键 ecs:tag/onwer 的值与标签值 lisi.ls@alibab.com 或 zs.zs@alibaba.com 匹配,则该语句允许访问 ECS 资源。
允许访问 带有 标签键owner 标签值为lisi.ls@alibaba.com 或者zs.zs@alibaba.com 的 ECS 资源的 ecs:* 操作,.
明确允许访问ECS查询标签 ecs:DescribeTagKeys 和 ecs:DeleteTags 操作
明确拒绝访问 ecs:DeleteTags 、 ecs:UntagResources 、ecs:CreateTags 及 ecs:TagResources操作,以防止用户创建或删除标签。
注意:这将通过向 ECS 实例中添加特定标签来防止用户控制该实例。
例如,创建完成的策略看起来应如下所示:
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:*",
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:tag/owner": [
"lisi.ls@alibaba.com",
"zs.zs@alibaba.com"
]
}
}
},
{
"Action": "ecs:DescribeTagKeys",
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "ecs:DescribeTags",
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Deny",
"Action": [
"ecs:DeleteTags",
"ecs:UntagResources",
"ecs:CreateTags",
"ecs:TagResources"
],
"Resource": "*"
}
],
"Version": "1"
}
将该 RAM 策略附加到您希望访问实例的用户或组a
最后,将已创建的 RAM 策略附加到您希望访问实例的用户或组。您可以使用 RAM 管理控制台、阿里云 CLI 或 阿里云 API 来附加 RAM 策略。
在Ecs控制台查看资源的时候,需要指定标签后可以看到有权限的资源。
方式1:设置全局标签
方式2:通过过滤参数指定对应标签