全部產品
Search
文件中心

Alibaba Cloud CLI:阿里雲 CLI 安全性原則(Safety policy)

更新時間:May 22, 2026

安全性原則(safety policy)是阿里雲 CLI 的用戶端操作防護機制。啟用後,CLI 在執行命令前按規則匹配操作,允許、拒絕匹配的操作,或要求人工確認後才執行。

功能介紹

安全性原則定義了一組規則,每條規則由 pattern(匹配模式)和 action(動作類型)組成:

  • allow(允許):顯式允許存取操作,跳過後續規則檢查。用於在寬泛的 deny/confirm 規則之前為特定操作建立豁免。

  • deny(拒絕):直接拒絕操作,不發送 API 請求。

  • confirm(確認):在互動式終端中彈出確認提示,輸入 yes 後才繼續執行。

安全性原則同時適用於 OpenAPI 呼叫(RPC 和 RESTful)和外掛程式命令,是 CLI 全域生效的用戶端安全能力。安全性原則與服務端 RAM(Resource Access Management)存取控制互補,不替代服務端許可權管理。

典型情境

  • AI Agent 安全護欄:當 AI Agent 通過 CLI 執行雲資源操作時,安全性原則可攔截高危操作(如 Delete 類),要求人工確認或直接拒絕。這是HITL(human-in-the-loop)機制在 AI Agent 情境中的實踐。

  • 營運防誤操作:為團隊的 CLI 環境配置預設規則,防止誤執行刪除、停止等高危操作。

前提條件

  • 已安裝阿里雲 CLI v3.3.14 及以上版本。執行以下命令查看目前的版本:

    aliyun version
  • 已完成 CLI 憑證配置。如未配置,執行以下命令進行初始化:

    aliyun configure

管理安全性原則

安全性原則通過 aliyun configure safety-policy 命令族管理。

查看當前策略

執行以下命令查看安全性原則的完整配置(JSON 格式輸出):

aliyun configure safety-policy show

輸出樣本:

{
  "enabled": false,
  "rules": []
}

啟用和禁用

# 啟用安全性原則
aliyun configure safety-policy enable

# 禁用安全性原則
aliyun configure safety-policy disable

執行 aliyun configure safety-policy show 驗證 enabled 欄位為 true

添加規則

命令格式:

aliyun configure safety-policy add --pattern <pattern> --action <deny|confirm>

樣本:拒絕所有產品的 Delete 類操作:

aliyun configure safety-policy add --pattern '*:Delete*' --action deny

樣本:對 ECS 的 Update 類操作要求人工確認:

aliyun configure safety-policy add --pattern 'ecs:Update*' --action confirm

執行 aliyun configure safety-policy list 驗證規則已生效。

說明

如果添加的 --pattern 與已有規則相同,該規則的 action 會被更新,不會重複添加。

說明

aliyun configure safety-policy add 命令當前僅接受 denyconfirmforbid 三個 action 值。要使用 allow 規則,通過環境變數 ALIBABA_CLOUD_SAFETY_POLICY_RULES 設定或直接編輯設定檔。

刪除規則

通過 --pattern 指定要刪除的規則:

aliyun configure safety-policy remove --pattern '*:Delete*'

查看規則列表

執行以下命令查看所有規則(格式化輸出):

aliyun configure safety-policy list

輸出樣本:

Safety policy: 已啟用
Config file: /home/user/.aliyun/safety-policy.json

Rules:
  1. *:Delete* -> deny
  2. ecs:Update* -> confirm

規則文法

pattern 格式

規則的 --pattern 參數採用 產品名:操作名 格式,支援 * 萬用字元(匹配任一字元序列)。匹配時不區分大小寫,即 *:Delete**:DELETE**:delete* 的匹配範圍完全相同。

真正的區分在於匹配目標不同。CLI 根據調用類型構建不同的命令標識符:

調用類型

匹配目標格式

樣本

RPC API

產品:API名稱

ecs:DeleteInstance

RESTful API

產品:HTTP方法/路徑

cs:DELETE/clusters

外掛程式命令

產品:子命令

fc:delete-function

常用 pattern 樣本:

pattern 樣本

匹配範圍

*:Delete*

所有產品中名稱包含 Delete 的操作(不區分大小寫)

ecs:delete-instance

僅 ECS 的 delete-instance 操作

ecs:Update*

ECS 的所有 Update 開頭的操作

*:*

所有產品的所有操作

說明

在 Shell 中執行命令時,pattern 值建議使用單引號包裹(如 '*:Delete*'),避免 Shell 對 * 進行萬用字元展開。

action 值

action

行為

allow

顯式允許存取操作。在 first-match-wins 規則系統中,將 allow 規則排在寬泛的 deny 或 confirm 規則之前,可為特定操作建立豁免。

deny

直接拒絕操作,返回錯誤資訊,不發送 API 請求。

confirm

在互動式終端中彈出確認提示,輸入 yes 後才執行操作。

forbidconfirm 的別名,運行時行為完全相同。

如果沒有規則匹配到當前操作,預設允許執行(等同於隱式 allow)。顯式 allow 規則的主要用途是在寬泛的 deny/confirm 規則之前為特定操作建立白名單豁免。

匹配優先順序

規則按添加順序從上到下逐條匹配,採用首條匹配優先(first-match-wins)策略:第一條匹配的規則生效,後續規則不再檢查。如果沒有規則匹配,預設允許執行。

例如,同時存在以下兩條規則時:

  1. ecs:Delete* → confirm

  2. *:Delete* → deny

執行 aliyun ecs delete-instance 時,匹配到第 1 條規則(ecs:Delete*),執行 confirm 動作,而不是第 2 條的 deny

利用 allow 建立豁免規則:

  1. ecs:Describe* → allow

  2. ecs:* → deny

執行 aliyun ecs DescribeInstances 時匹配到第 1 條 allow 規則,操作正常執行;執行 aliyun ecs DeleteInstance 時匹配第 2 條,被拒絕。

重要

規則順序很重要。添加規則時需注意排列順序,確保更具體的規則排在更通用的規則之前。

非互動模式和 AI Agent 情境

--yes 標誌

命令中指定 --yes(或 -y)標誌時,confirm 類規則會被自動跳過(視為已確認)。deny 類規則不受影響,仍然拒絕執行。

# confirm 類規則被跳過,直接執行
aliyun ecs update-instance --InstanceId i-bp1xxxxx --yes

# deny 類規則不受影響,仍然拒絕
aliyun ecs delete-instance --InstanceId i-bp1xxxxx --yes
# 輸出:ERROR: operation blocked by safety policy: ecs delete-instance (rule: *:Delete*)

非互動式終端行為

CLI 通過檢測標準輸入是否為終端裝置來判斷當前環境。在非互動式環境(如指令碼、CI/CD 管道、AI Agent)中,如果操作匹配到 confirm 類規則且未指定 --yes,CLI 返回以下錯誤資訊:

安全性原則要求確認以下操作:ecs update-instance
當前為非互動環境,無法自動確認。若調用方為智能體,請先向使用者說明並徵得同意;
使用者同意後(可在對話中回複 yes 或「確認」),再使用 --yes 重新執行同一命令。

AI Agent 推薦做法

在 AI Agent 通過 CLI 操作雲資源的情境中,按以下步驟配置和使用安全性原則:

  1. 配置安全性原則:對高危操作設定 deny(完全禁止),對需要確認的操作設定 confirm

  2. 處理 confirm 提示:Agent 遇到 confirm 攔截時,向使用者展示要執行的操作內容並徵求同意。

  3. 重新執行:使用者同意後,Agent 使用 --yes 標誌重新執行該命令。

樣本配置:禁止 Agent 執行 Delete 類操作,Update 類操作需要人工確認:

aliyun configure safety-policy enable
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
aliyun configure safety-policy add --pattern '*:Update*' --action confirm

環境變數

除命令列配置外,還可以通過環境變數控制安全性原則。環境變數的優先順序高於設定檔。

環境變數

說明

樣本

ALIBABA_CLOUD_SAFETY_POLICY_ENABLED

覆蓋設定檔中的 enabled 值。接受 truefalse10

export ALIBABA_CLOUD_SAFETY_POLICY_ENABLED=true

ALIBABA_CLOUD_SAFETY_POLICY_RULES

覆蓋設定檔中的規則列表。格式為 pattern=action,多條規則以英文逗號分隔。設定後,設定檔中的規則被完全替換(不是合并)。設為空白字串可清空所有規則。格式無效時保留檔案中的規則。

export ALIBABA_CLOUD_SAFETY_POLICY_RULES="ecs:Describe*=allow,*:Delete*=deny,ecs:Update*=confirm"

ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM

設為 1true 時,跳過確認提示,等同於 --yes

export ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM=1

重要

設定 ALIBABA_CLOUD_SAFETY_POLICY_RULES 環境變數後,設定檔中的規則被完全替換,而非合并。

設定檔

安全性原則的配置儲存在 ~/.aliyun/safety-policy.json 檔案中。如果指定了 --config-path 選項,safety-policy.json 檔案位於該自訂目錄下。

檔案格式樣本:

{
  "enabled": true,
  "rules": [
    {
      "pattern": "ecs:Describe*",
      "action": "allow"
    },
    {
      "pattern": "*:Delete*",
      "action": "deny"
    },
    {
      "pattern": "ecs:Update*",
      "action": "confirm"
    }
  ]
}
  • 如果設定檔不存在,安全性原則預設禁用,規則列表為空白。首次執行 enableadd 命令時自動建立該檔案。

說明

安全性原則採用失敗開放(fail-open)機制:如果策略檔案載入失敗(如檔案損壞),CLI 跳過安全檢查,不會阻斷命令執行。