使用标签控制云助手的命令执行

RAM用户或RAM角色只能将云助手命令执行在带有某种标签的ECS实例上,否则执行失败。本文以RAM用户为例,为您介绍对应的操作方法、自定义权限策略内容及常见问题。

操作步骤

  1. 使用阿里云账号或RAM管理员创建RAM用户。

    具体操作,请参见创建RAM用户

  2. 使用阿里云账号或RAM管理员创建自定义权限策略。

  3. 使用阿里云账号或RAM管理员为RAM用户授权。

    具体操作,请参见为RAM用户授权

  4. 使用RAM用户登录ECS管理控制台云助手页面,验证权限策略是否生效。

    • 将命令执行到不带有标签user:alice的ECS实例上,执行失败。

    • 将命令执行到带有标签user:alice的ECS实例上,执行成功。

    关于RAM用户登录控制台的操作方法,请参见RAM用户登录阿里云控制台

权限策略示例1:要求发送命令、文件的ECS实例带有指定标签

本示例中,仅允许RAM用户将云助手命令执行到带有标签user:alice的ECS实例上、将文件传输到带有标签user:alice的ECS实例上。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:InvokeCommand",
                "ecs:RunCommand",
                "ecs:StopInvocation",
                "ecs:SendFile"
            ],
            "Resource": "acs:ecs:*:*:instance/*",
            "Condition": {
                "StringEquals": {
                    "acs:ResourceTag/user": "alice"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:InvokeCommand",
                "ecs:RunCommand",
                "ecs:StopInvocation",
                "ecs:SendFile"
            ],
            "Resource": "acs:ecs:*:*:command/*"
        }
    ]
}

权限策略示例2:查询标签、查询ECS实例以及管理云助手命令

本示例中,仅允许RAM用户查询标签、查询ECS实例以及管理云助手命令。

{
    "Version": "1",
    "Statement": [
        {
            "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": "*"
        }
    ]
}

常见问题

如果权限策略未生效,请检查RAM用户的权限是否对以下几个Action设置了Allow策略:

["ecs:InvokeCommand","ecs:RunCommand", "ecs:StopInvocation","ecs:SendFile"]

例如:存在如下所示的权限策略时,您需要移除RAM用户的这些权限策略。

{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:InvokeCommand",
                "ecs:RunCommand",
                "ecs:StopInvocation",
                "ecs:SendFile"
            ],
            "Resource": "*"
        }
    ]
}