云服务器ECS资源绑定标签后,您需要对RAM用户授予某种要求的标签鉴权策略,RAM用户才可以通过执行云助手命令控制带有某种标签的ECS实例,并对该ECS实例进行控制访问。本文介绍如何通过标签控制云助手命令的执行。
背景信息
- 标签由一组键值对组成,可以用于标记ECS实例,实现资源的分类管理。更多信息,请参见标签概述。
- 访问控制RAM可基于权限策略,管理用户身份,控制云资源的访问和操作权限。您可以从地域、ECS实例、云助手命令等维度设计自定义策略,并授权给RAM用户使用,从而灵活控制RAM用户使用云助手命令的权限。更多信息,请参见RAM用户概览和权限策略概览。
- 标签和RAM结合,将标签作为权限策略的匹配条件,可以实现对云资源的精细化管理。
基于标签控制RAM用户权限(即标签鉴权)的逻辑如下:

应用场景说明
本文以如下应用场景为示例,说明如何使用标签鉴权控制云助手命令。
- RAM用户只能将命令执行到带有标签(例如test:tony)的ECS实例上。
- RAM用户只能将文件传输到带有标签(例如test:tony)的ECS实例上。
- RAM用户可以查询标签、实例或云助手命令和执行结果。
操作步骤
本步骤将使用阿里云账号(主账号)新建自定义策略UseTagAccessResoures
为例,将自定义策略UseTagAccessResoures
授权给RAM用户后,RAM用户只能将命令执行或者文件上传到带有标签test:tony
的ECS实例上。
- 创建带有标签的ECS实例。
- 使用阿里云账号(主账号)登录RAM控制台。
- 创建自定义策略
UseTagAccessResoures
。具体操作,请参见
创建自定义权限策略。
您可以在权限策略(Condition)中为ECS资源设置多个标签条件来限制操作权限,支持的标签鉴权条件如下所示:
标签鉴权条件 |
说明 |
acs:RequestTag |
限制在请求中必须传入特定的标签。
如果API请求中没有标签参数,则不能使用acs:RequestTag ,否则会导致鉴权失败。
|
acs:ResourceTag |
限制指定的资源必须包含特定的标签。
如果API请求中没有资源ID参数,则不能使用acs:ResourceTag ,否则会导致鉴权失败。
|
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:InvokeCommand",
"ecs:RunCommand",
"ecs:StopInvocation",
"ecs:SendFile"
],
"Resource": "acs:ecs:*:*:instance/*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/test": "tony"
}
}
},
{
"Effect": "Allow",
"Action": [
"ecs:InvokeCommand",
"ecs:RunCommand",
"ecs:StopInvocation",
"ecs:SendFile"
],
"Resource": "acs:ecs:*:*:command/*"
},
{
"Effect": "Allow",
"Action": [
"ecs:DescribeTag*",
"ecs:DescribeInstance*",
"ecs:DescribeCommands",
"ecs:CreateCommand",
"ecs:DeleteCommand",
"ecs:ModifyCommand",
"ecs:DescribeInvocationResults",
"ecs:DescribeSendFileResults",
"ecs:DescribeInstances",
"ecs:DescribeCloudAssistantStatus",
"ecs:DescribeInvocations",
"ecs:DescribeResourceByTags",
"ecs:DescribeTagKeys",
"ecs:DescribeTags",
"ecs:ListTagResources",
"ecs:DescribeManagedInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "oos:ListSecretParameters",
"Resource": "*"
}
]
}
以上策略可以实现如下权限控制:
- 允许在绑定
test:tony
标签的ECS实例上执行云助手命令或者发送远程文件,具体权限策略如下所示: {
"Effect": "Allow",
"Action": [
"ecs:InvokeCommand",
"ecs:RunCommand",
"ecs:StopInvocation",
"ecs:SendFile"
],
"Resource": "acs:ecs:*:*:instance/*",
"Condition": {
"StringEquals": {
"acs:ResourceTag/test": "tony"
}
}
},
{
"Effect": "Allow",
"Action": [
"ecs:InvokeCommand",
"ecs:RunCommand",
"ecs:StopInvocation",
"ecs:SendFile"
],
"Resource": "acs:ecs:*:*:command/*"
}
- 允许查询标签、实例以及云助手等资源,具体权限策略如下所示:
{
"Effect": "Allow",
"Action": [
"ecs:DescribeTag*",
"ecs:DescribeInstance*",
"ecs:DescribeCommands",
"ecs:CreateCommand",
"ecs:DeleteCommand",
"ecs:ModifyCommand",
"ecs:DescribeInvocationResults",
"ecs:DescribeSendFileResults",
"ecs:DescribeInstances",
"ecs:DescribeCloudAssistantStatus",
"ecs:DescribeInvocations",
"ecs:DescribeResourceByTags",
"ecs:DescribeTagKeys",
"ecs:DescribeTags",
"ecs:ListTagResources",
"ecs:DescribeManagedInstances"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "oos:ListSecretParameters",
"Resource": "*"
}
- 将自定义权限策略
UseTagAccessResoures
授予您希望控制访问的RAM用户。
- 验证权限策略是否生效。
登录
ECS管理控制台后,对待验证的实例执行以下操作:
说明 对实例执行云助手命令或者发送远程文件的同时,已经同步进行了查询标签、实例以及云助手资源等操作。
如果权限策略已生效,上述操作的执行结果详情,请参见执行结果。如果权限策略未生效,请参见常见问题进行排查。
执行结果
- 在ECS实例中执行云助手命令
- ECS实例已绑定
test:tony
标签,则执行云助手命令时显示执行成功。
- ECS实例未绑定
test:tony
标签,则执行云助手命令时显示执行失败。
- 发送远程文件到ECS实例中
- ECS实例已绑定
test:tony
标签,则发送远程文件时显示执行成功。
- ECS实例未绑定
test:tony
标签,则发送远程文件时显示执行失败。
常见问题
如果权限策略控制功能未生效怎么办?
如果权限控制功能未生效,请检查授权的RAM用户权限是否已经对Action中的以下几个参数设置了Allow操作。如果该参数已设置了Allow操作,请您将该权限策略从RAM用户权限中移除。
- ecs:InvokeCommand
- ecs:RunCommand
- ecs:StopInvocation
- ecs:SendFile
例如,如果自定义权限策略中存在如下所示的策略,请您将该权限策略从RAM用户权限中移除。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:InvokeCommand",
"ecs:RunCommand",
"ecs:StopInvocation",
"ecs:SendFile"
],
"Resource": "*"
}
]
}