RAM用户执行云助手命令

使用最小权限执行命令是权限管理的最佳实践,建议您以普通用户身份执行云助手命令。本文介绍如何通过RAM用户的权限控制,实现普通用户(非root或system用户)执行云助手命令。

前提条件

ECS实例中已创建普通用户,本文以普通用户user01、user02为例。

背景信息

执行云助手命令时,如果您未配置指定的权限,默认是以ECS实例内的最大权限来执行的。例如,Linux实例是以root用户来执行命令,Windows实例是以system用户来执行命令。

由于信息安全管理,您可能需要禁止在ECS实例中使用root或system用户。此时,您可以通过RAM用户并设置相关的权限策略,禁止ECS实例中root或者system用户执行云助手命令,并允许实例中特定用户(例如user01、user02)执行云助手命令。

配置Linux实例的普通用户执行云助手命令

如果只需要在Linux实例中执行云助手命令,您可以通过以下步骤限制RAM用户使用root执行云助手命令。

  1. 使用阿里云账号登录RAM控制台

  2. 创建一个新的RAM用户。具体操作,请参见创建RAM用户

    RAM用户信息示例如下所示。

    名称

    示例

    登录名称

    commandUser

    显示名称

    commandUser

    访问方式

    本文中提供阿里云控制台方式和OpenAPI方式使用云助手,此处选中控制台访问OpenAPI 调用访问

    说明

    您可以根据实际使用情况,选择对应的一种访问方式,实现权限最小化管理。

    设置密码

    选择自动生成密码

    需要重置密码

    选择用户在下次登录时必须重置密码

    MFA 多因素认证

    选择不要求

    创建RAM用户后,您需要保留RAM用户的用户名、密码和AccessKey信息。

  3. 创建云助手相关权限策略。具体操作,请参见创建自定义权限策略

    ram用户权限设置

    创建一个commandUserPolicy权限策略,限制ECS实例中用户执行云助手命令。以下为策略内容的两个示例,您可以根据实际情况修改。

    • 允许部分ECS实例普通用户(user01和user02)执行云助手命令的RAM权限策略:

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:DescribeInstances",
                      "ecs:DescribeTagKeys",
                      "ecs:DescribeTags",
                      "ecs:CreateCommand",
                      "ecs:DescribeCommands",
                      "ecs:InvokeCommand",
                      "ecs:RunCommand",
                      "ecs:DeleteCommand",
                      "ecs:DescribeInvocations",
                      "ecs:DescribeInvocationResults",
                      "ecs:StopInvocation",
                      "ecs:DescribeCloudAssistantStatus",
                      "ecs:InstallCloudAssistant"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "ecs:CommandRunAs": [
                              "user01",
                              "user02"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
      说明

      如果您需要允许其他用户,可以修改或增加Condition中的用户名。

    • 禁止部分ECS实例的用户(root和system)执行云助手命令的RAM权限策略:

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:DescribeInstances",
                      "ecs:DescribeTagKeys",
                      "ecs:DescribeTags",
                      "ecs:CreateCommand",
                      "ecs:DescribeCommands",
                      "ecs:InvokeCommand",
                      "ecs:RunCommand",
                      "ecs:DeleteCommand",
                      "ecs:DescribeInvocations",
                      "ecs:DescribeInvocationResults",
                      "ecs:StopInvocation",
                      "ecs:DescribeCloudAssistantStatus",
                      "ecs:InstallCloudAssistant"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringNotEqualsIgnoreCase": {
                          "ecs:CommandRunAs": [
                              "system",
                              "root"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
      说明

      如果您需要限制其他用户,可以修改或增加Condition中的用户名。

  4. 为RAM用户设置ECS只读权限和云助手相关权限。具体操作,请参见为RAM用户授权

    授权

    • 设置ECS只读权限:选择AliyunECSReadOnlyAccess

    • 设置云助手相关权限:选择上一步中创建的commandUserPolicy

  5. 使用RAM用户登录阿里云控制台

  6. 运行云助手命令验证结果。具体操作,请参见创建并执行命令

    • 控制台验证操作如下所示,需要设置执行用户。使用云助手创建命令

      user01用户能够正常执行云助手命令,root用户执行云助手命令报错。

    • CLI验证操作如下所示,user01用户能够正常执行云助手命令,root用户执行云助手命令报错。cli结果

配置Windows实例的普通用户执行云助手命令

如果需要在Windows实例执行云助手命令,您需要同时提供用户名和密码。为了数据安全,您需要在系统运维管理中托管您的Windows登录密码,并使用密钥管理服务KMS加密。更多信息,请参见什么是系统管理与运维服务什么是密钥管理服务

您可以通过以下步骤限制RAM用户使用root用户和system用户执行云助手命令。

  1. 使用阿里云账号登录RAM控制台

  2. 创建一个新的RAM用户。具体操作,请参见创建RAM用户

    RAM用户信息示例如下所示。

    名称

    示例

    登录名称

    commandUser

    显示名称

    commandUser

    访问方式

    本文中提供阿里云控制台方式和OpenAPI方式使用云助手,此处选中控制台访问OpenAPI 调用访问

    说明

    您可以根据实际使用情况,选择对应的一种访问方式,实现权限最小化管理。

    设置密码

    选择自动生成密码

    需要重置密码

    选择用户在下次登录时必须重置密码

    MFA 多因素认证

    选择不要求

    创建RAM用户后,您需要保留RAM用户的用户名、密码和AccessKey信息。

  3. 创建云助手、KMS相关权限策略。具体操作,请参见创建自定义权限策略

    • 云助手相关权限:

      创建一个commandUserPolicy权限策略,限制ECS实例中用户执行云助手命令。以下为策略内容的两个示例,您可以根据实际情况修改。

      • 允许部分ECS实例普通用户(user01和user02)执行云助手命令的RAM权限策略:

        {
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ecs:DescribeInstances",
                        "ecs:DescribeTagKeys",
                        "ecs:DescribeTags",
                        "ecs:CreateCommand",
                        "ecs:DescribeCommands",
                        "ecs:InvokeCommand",
                        "ecs:RunCommand",
                        "ecs:DeleteCommand",
                        "ecs:DescribeInvocations",
                        "ecs:DescribeInvocationResults",
                        "ecs:StopInvocation",
                        "ecs:DescribeCloudAssistantStatus",
                        "ecs:InstallCloudAssistant"
                    ],
                    "Resource": [
                        "acs:ecs:*:*:instance/*",
                        "acs:ecs:*:*:command/*"
                    ],
                    "Condition": {
                        "StringEquals": {
                            "ecs:CommandRunAs": [
                                "user01",
                                "user02"
                            ]
                        }
                    }
                }
            ],
            "Version": "1"
        }
        说明

        如果您需要允许其他用户,可以修改或增加Condition中的用户名。

      • 禁止部分ECS实例的用户(root和system)执行云助手命令的RAM权限策略:

        {
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "ecs:DescribeInstances",
                        "ecs:DescribeTagKeys",
                        "ecs:DescribeTags",
                        "ecs:CreateCommand",
                        "ecs:DescribeCommands",
                        "ecs:InvokeCommand",
                        "ecs:RunCommand",
                        "ecs:DeleteCommand",
                        "ecs:DescribeInvocations",
                        "ecs:DescribeInvocationResults",
                        "ecs:StopInvocation",
                        "ecs:DescribeCloudAssistantStatus",
                        "ecs:InstallCloudAssistant"
                    ],
                    "Resource": [
                        "acs:ecs:*:*:instance/*",
                        "acs:ecs:*:*:command/*"
                    ],
                    "Condition": {
                        "StringNotEqualsIgnoreCase": {
                            "ecs:CommandRunAs": [
                                "system",
                                "root"
                            ]
                        }
                    }
                }
            ],
            "Version": "1"
        }
        说明

        如果您需要限制其他用户,可以修改或增加Condition中的用户名。

    • KMS相关权限:

      创建一个kmsPolicy权限策略,策略内容示例如下所示,更多信息,请参见常见的授权策略示例

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "kms:List*", "kms:Describe*",
              "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
            ],
            "Resource": [
              "*"
            ]
          }
        ]
      }             
  4. 为RAM用户设置ECS、OOS、云助手和KMS等相关权限。具体操作,请参见为RAM用户授权

    win权限

    • 设置ECS只读权限:选择AliyunECSReadOnlyAccess

    • 设置OOS只读权限:选择AliyunOOSReadOnlyAccess

    • 设置云助手相关权限:选择上一步中创建的commandUserPolicy

    • 设置KMS相关权限:选择上一步中创建的kmsPolicy

  5. 为Windows实例设置RAM角色。

    1. 创建RAM角色相关权限。具体操作,请参见创建自定义权限策略

      策略内容如下所示:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "kms:GetSecretValue"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "oos:GetSecretParameter"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ]
      }
    2. 创建RAM角色。具体操作,请参见创建可信实体为阿里云服务的RAM角色

      相关配置示例如下所示。

      名称

      示例

      选择可信实体类型

      选择阿里云服务

      角色类型

      选择普通服务角色

      角色名称

      AxtSecretRamRole

      选择受信服务

      在下拉列表中选择云服务器

    3. 为RAM角色授权。具体操作,请参见为RAM角色授权

    4. 为ECS实例设置RAM角色。具体操作,请参见授予实例RAM角色

  6. 通过OOS创建加密参数,用于托管Windows登录密码。具体操作,请参见创建加密参数

    说明

    OOS加密参数所在地域必须和ECS实例所在地域一致,否则ECS实例无法使用此托管密码。

    以下为设置user01用户密码托管的示例值:

    名称

    示例

    参数名称

    axtSecretPassword

    KMS密钥ID

    使用默认的Default Service CMK

    Windows实例登录密码。此处填入user01用户的登录密码。

  7. 使用RAM用户登录阿里云控制台

  8. 运行云助手命令验证结果。具体操作,请参见创建并执行命令

    以在Windows实例中运行云助手命令为例,验证权限设置是否生效。

    • 控制台验证操作如下所示,需要设置执行用户和OOS托管密码。windows创建云助手命令

      user01用户能够正常执行云助手命令,system用户执行云助手命令报错。

    • CLI验证操作如下所示,user01用户能够正常执行云助手命令,system用户执行云助手命令报错。win执行结果cli