当您对云服务器ECS资源绑定标签(例如特定环境标签、应用程序标签或资源类型标签等)进行精细化管理后,如果您需要筛选出指定标签的ECS实例来批量执行云助手命令或通过云助手上传文件,则您需要为RAM用户授予目标标签的鉴权策略,RAM用户才可以通过执行云助手命令控制带有该标签的ECS实例,并对该ECS实例进行访问控制。本文介绍如何通过标签控制云助手命令的执行。
前提条件
工作原理
标签和RAM用户结合,将标签作为权限策略的匹配条件,即可实现对ECS资源的精细化管理。
基于标签控制RAM用户权限(即标签鉴权)的逻辑如下:
示例场景说明
本文以如下场景为示例,说明如何使用标签鉴权控制云助手命令。
RAM用户只能将命令执行到带有标签(例如test:tony)的ECS实例上。
RAM用户只能将文件传输到带有标签(例如test:tony)的ECS实例上。
RAM用户可以查询标签、实例或云助手命令和执行结果。
操作步骤
本步骤将使用阿里云账号(主账号)新建自定义策略UseTagAccessResources
为例,将自定义策略UseTagAccessResources
授权给RAM用户后,RAM用户只能将命令执行或者文件上传到带有标签test:tony
的ECS实例上。
创建带有标签的ECS实例。
本步骤以创建标签为
test:tony
的ECS实例为例。具体操作,请参见创建带特定标签的资源。使用阿里云账号(主账号)登录RAM控制台。
创建自定义策略
UseTagAccessResources
。具体操作,请参见创建自定义权限策略。
您可以在权限策略(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": "*" }
将自定义权限策略
UseTagAccessResources
授予您希望控制访问的RAM用户。具体操作,请参见为RAM角色授权。
验证权限策略是否生效。
登录ECS管理控制台后,对待验证的实例执行以下操作:
说明对实例执行云助手命令或者发送远程文件的同时,已经同步进行了查询标签、实例以及云助手资源等操作。
对不同标签的ECS实例执行云助手命令
在ECS云助手页面中的我的命令页签下,选择已创建好的云助手命令(以命令ID为
c-hz02jt1ncrf****
为例),对不同标签的ECS实例执行云助手命令。具体操作,请参见执行命令。说明如果命令列表页签下还没有创建好的云助手命令,您也可以创建云助手命令后再进行后续操作。具体操作,请参见创建命令。
对不同标签的ECS实例发送远程文件
在ECS云助手页面的右上角位置,单击发送文件,对不同标签的ECS实例发送远程文件。具体操作,请参见上传本地文件到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": "*"
}
]
}
相关文档
除了使用标签控制云助手命令的执行外,您还可以为RAM用户授权特定的策略,使该RAM用户能够通过标签控制ECS实例的访问。具体操作,请参见使用标签控制资源的访问。
除了使用标签控制云助手命令的执行外,您还可以为您的ECS实例绑定相同标签并通过云监控的智能标签同步功能,将它们自动添加至同一个应用分组,实现自动化分组监控,监控内容包括ECS实例的健康状态、CPU使用率和内存使用率等。具体操作,请参见基于标签的自动化分组监控。
如果您的标签不再适用于管理和检索资源,您可以从该资源解绑标签。具体操作,请参见解绑或删除标签。