全部產品
Search
文件中心

Elastic Compute Service:RAM使用者執行雲助手命令

更新時間:May 13, 2026

雲助手預設以最高許可權(Linux 的 root、Windows 的 system)執行命令,存在安全合規風險。本文介紹如何通過 RAM 權限原則限制執行身份,以普通使用者運行雲助手命令,並提供 Windows 環境下安全傳遞使用者憑證的方案。

前提條件

  • ECS 執行個體中已建立普通使用者,本文以 user01user02 為例。

  • ECS 執行個體已安裝雲助手 Agent,且狀態為運行中

  • 如需使用 Windows 憑據加密功能(方案二),雲助手 Agent 版本需不低於 2.x.3.421

基礎許可權配置

通過 RAM 自訂策略,限制 RAM 使用者在調用雲助手介面時只能以指定使用者身份執行命令,適用於 Linux 和 Windows 執行個體。

  1. 使用阿里雲帳號登入RAM 控制台建立RAM使用者

    RAM使用者資訊樣本如下所示:

    名稱

    樣本

    登录名称

    commandUser

    顯示名稱

    commandUser

    訪問方式

    本文中提供阿里雲控制台方式和OpenAPI方式使用雲助手,此處選中控制台訪問使用永久 AccessKey 訪問

    說明

    您可以根據實際使用方式,選擇對應的一種訪問方式,實現許可權最小化管理。

    設定密碼

    選擇自動產生密碼

    需要重設密碼

    選擇使用者在下次登入時必須重設密碼

    MFA 多因素認證

    選擇不要求

    建立完成後,儲存 RAM 使用者的登入資訊和 AccessKey。

  2. 建立自訂權限原則 commandUserPolicy。具體操作,請參見建立自訂權限原則

    RAM權限原則建立

    根據需求選擇以下任一策略模式:

    • 白名單模式(推薦):僅允許ECS執行個體普通使用者 user01 和 user02 執行命令。

      如需允許其他使用者,修改或增加 Condition 中的使用者名稱。
      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:InvokeCommand",
                      "ecs:RunCommand"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringEquals": {
                          "ecs:CommandRunAs": [
                              "user01",
                              "user02"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
    • 黑名單模式:禁止ECS執行個體的使用者 root 和 system 執行命令。

      如需限制其他使用者,修改或增加 Condition 中的使用者名稱。
      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:InvokeCommand",
                      "ecs:RunCommand"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*",
                      "acs:ecs:*:*:command/*"
                  ],
                  "Condition": {
                      "StringNotEqualsIgnoreCase": {
                          "ecs:CommandRunAs": [
                              "system",
                              "root"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
  3. 為 RAM 使用者授權。具體操作,請參見管理RAM使用者的許可權

    授權

    授予以下許可權:

    • ECS 唯讀許可權:AliyunECSReadOnlyAccess

    • 雲助手許可權:上一步建立的 commandUserPolicy

    如果 Windows 執行個體使用方案一:使用 OOS + KMS 託管密碼,還需額外授予 AliyunOOSReadOnlyAccess 和自訂的 kmsPolicy 權限原則。kmsPolicy 的建立方式參見常見的授權策略樣本,策略內容樣本:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "kms:List*", "kms:Describe*",
            "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
          ],
          "Resource": ["*"]
        }
      ]
    }

配置 Linux 執行個體的普通使用者執行雲助手命令

Linux 執行個體無需託管密碼,在執行命令時聲明使用者身份即可。

  1. 使用 RAM 使用者 commandUser 登入阿里雲控制台,或通過其 AccessKey 調用 CLI/API。

  2. 運行雲助手命令並驗證。

    • 控制台:建立/執行命令,將執行使用者(Username)設定為 user01

      user01使用者能夠正常執行雲助手命令,root使用者執行雲助手命令報錯。

      Linux 執行個體設定執行使用者

    • CLI:在 RunCommand 中指定 --Username user01,user01使用者能夠正常執行雲助手命令,以 root 使用者執行命令會報錯。

      Linux CLI 驗證結果

配置 Windows 執行個體的普通使用者執行雲助手命令

Windows 執行個體以普通使用者執行命令時必須同時傳遞密碼。根據安全需求選擇以下任一方案:

對比項

方案一:OOS + KMS 託管密碼

方案二:雲助手資料加密

依賴服務

OOS、KMS

適用情境

大規模密碼管理,密碼長期有效

高安全性情境,密碼臨時加密傳輸

額外許可權

需要 OOS、KMS 相關許可權和 RAM 角色

僅需基礎許可權配置中的許可權

方案一:使用 OOS + KMS 託管密碼

  1. 為 Windows 執行個體設定 RAM 角色。

    1. 建立自訂權限原則,包含 kms:GetSecretValueoos:GetSecretParameter 許可權。具體操作,請參見建立自訂權限原則

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": ["kms:GetSecretValue"],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": ["oos:GetSecretParameter"],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ]
      }
    2. 建立類型為阿里雲服務、受信服務為Elastic Compute Service / ECS 的 RAM 角色(如 AxtSecretRamRole),並授予上述策略。具體操作,請參見建立可信實體為阿里雲服務的RAM角色管理RAM角色的許可權

    3. 將該 RAM 角色授予目標 ECS 執行個體。具體操作,請參見授予執行個體 RAM 角色

  2. 建立加密參數,在 OOS 中建立加密參數,託管 Windows 使用者密碼。

    重要

    OOS加密參數所在地區必須和ECS執行個體所在地區一致,否則ECS執行個體無法使用此託管密碼。

    樣本:為 user01 建立名為 axtSecretPassword 的加密參數,KMS 金鑰識別碼 使用預設的 Default Service CMK填入 user01 的登入密碼。

  3. 執行雲助手命令並驗證。

    1. 控制台:使用RAM使用者登入阿里雲控制台建立/執行命令時,設定執行使用者user01密碼名稱填入上一步建立的加密參數 axtSecretPassword

      Windows OOS 託管密碼設定

      CLI方式:在 RunCommand 中指定 --Username user01--PasswordName axtSecretPassword。user01 使用者能夠正常執行雲助手命令,system 使用者執行雲助手命令報錯。

      Windows CLI 驗證結果

方案二:使用雲助手資料加密功能

通過 RSA-OAEP 非對稱式加密實現密碼的端到端傳輸,無需依賴 KMS 和 OOS。更多資訊,請參見雲助手命令內容加密

  1. 在目標執行個體上產生臨時金鑰組。

    通過 RunCommand API 或控制台,在目標執行個體上運行公用命令產生 RSA 金鑰組:

    • Linux 執行個體:ACS-ECS-GenerateRsaKeypair-linux.sh

    • Windows 執行個體:ACS-ECS-GenerateRsaKeypair-windows.ps1

    記錄返回的 idpublicKey 欄位值。具體操作,請參見雲助手命令內容加密中的步驟一。

    說明

    私密金鑰僅存於執行個體記憶體中,不會在網路中傳輸或落盤。金鑰組預設 60 秒後自動銷毀,可通過 -t 參數延長有效期間。

  2. 在本地加密使用者密碼。

    使用上一步獲得的公開金鑰,通過 RSA-OAEP 演算法加密 Windows 使用者密碼,產生 Base 64 編碼的密文。具體操作,請參見雲助手命令內容加密中的步驟二。

  3. 在目標執行個體上建立加密參數。

    通過 RunCommand API 或控制台執行以下命令。也可使用公用命令 ACS-ECS-CreateSecret-for-windows.ps1

    aliyun_assist_service data-encryption --create-secret --keypair-id <keypair-id> --text <cipher-text> --param-name <param-name> --timeout <timeout>

    參數

    說明

    --keypair-id

    步驟 1 中產生的金鑰組 ID。

    --text

    步驟 2 中得到的 Base64 密文。

    --param-name

    自訂的加密參數名稱。

    --timeout

    加密參數的有效時間(秒),預設 60 秒後自動銷毀。

    輸出樣本:

    {
        "SecretName": "t-hz06gya7****",
        "CreatedTimestamp": 1775363628,
        "ExpiredTimestamp": 1775363688
    }

    記錄 SecretName 的值,下一步執行命令時需要使用。

  4. 在加密參數有效期間內執行雲助手命令。

    通過 RunCommand API 或 CLI 執行命令,將 --Username 設定為 user01--WindowsPasswordName 設定為上一步建立的加密參數名稱(SecretName 的值)。