View a markdown version of this page

使用導向動作 - AWS DevOps 代理程式

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用導向動作

當運算子明確要求時,AWS DevOps 代理程式可以對您的連線服務和 AWS 帳戶採取行動。例如,調查事件的運算子可以要求代理程式描述資源的狀態。透過適當的許可和核准,操作員也可以要求代理程式直接修復問題。

代理程式區分兩種操作:

  • 唯讀動作:只從連線服務和 AWS 帳戶讀取資訊的操作。這些預設為可用。

  • 導向動作:建立、修改或以其他方式變更資源的操作。已提升導向動作:預設會停用這些動作,且需要明確、分層的選擇加入加上每個動作運算子的核准。

導向動作的安全模型是深度防禦。此功能預設為停用。您可以透過獨立層選擇加入:在代理程式空間上啟用導向動作、註冊每個帳戶 IAM 角色,以及分類每個工具。每個導向動作都需要在執行時間進行運算子核准。每個核准和產生的動作都歸因於核准運算子 in AWS CloudTrail。

對於對 AWS 資源採取的動作,代理程式會在其調用的 AWS SDK 操作上強制執行自己的護欄,與您授予的許可無關。如需這些護欄的詳細資訊,請參閱代理程式不會執行的操作。

範例:從調查執行緩解計劃

此範例顯示常見案例的end-to-end體驗。操作員會檢閱調查的緩解計劃或改善建議。運算子會要求客服人員在不離開對話的情況下執行。

網站可靠性工程師 (SRE) 要求聊天中的客服人員尋找允許從 存取 SSH 的任何帳戶0.0.0.0/0。代理程式會尋找具有開放輸入規則的安全群組。它建議緩解措施:將規則限制在內部網路範圍。運算子會通知代理程式套用它。

  1. 代理程式提議變更。代理程式會檢查安全群組 (唯讀動作)。它提議移除0.0.0.0/0規則,並將範圍限定的規則新增至內部網路範圍。提案可識別確切的 API 操作、目標安全群組、風險評估、預期的爆量半徑和轉返步驟。

  2. 運算子會檢閱並核准。操作會變更資源,因此它是導向動作。核准請求會顯示 操作及其參數。運算子可以調整參數,例如縮小10.0.0.0/8至 10.1.0.0/16,或拒絕請求。如果沒有明確核准,則不會執行任何動作。

  3. 代理程式會在有範圍的登入資料下執行 。代理程式使用來自已註冊提升角色的登入資料。登入資料的範圍是已核准的操作和資源,並且對週框時段有效。核准無法重複使用於不同的操作或資源。

  4. 動作可完全稽核。呼叫會顯示在 AWS CloudTrail 中,其中包含將之屬性為核准運算子的來源身分。CloudTrail 會記錄已核准和執行的參數。

當您檢查任何調查緩解計畫或改進建議,並要求客服人員執行步驟時,也會套用相同的流程。代理程式會將步驟轉換為特定的提議操作,並在採取行動之前請求核准。

相同的流程適用於第三方工具。運算子分類警示雜訊會要求代理程式提高 Grafana 警示規則的閾值。 AWS DevOps 代理程式會將此工具分類為變動,而團隊會在整合時啟用此工具以提高存取權。代理程式會呈現核准請求,其中顯示工具和參數。核准後,代理程式會透過 整合叫用工具。 AWS DevOps 代理程式會將 動作歸納給核准運算子。

在啟用導向動作之前,或者沒有註冊的提升角色,代理程式仍會使用唯讀動作進行調查。它提供手動修復步驟,而不是可執行的變更。

先決條件

在使用導向動作之前,您需要下列項目:

  • 代理程式空間 in AWS DevOps 代理程式,與 AWS 帳戶或支援的第三方整合至少有一個關聯。

  • 更新代理程式空間及其關聯的許可,例如透過 AWS DevOps 代理程式主控台或 API。

  • 目標帳戶中建立 IAM 角色並定義其信任和許可政策的許可,以針對 AWS 帳戶執行導向動作。

  • iam:PassRole arn:aws:iam::<account-id>:role/* 在您自己的帳戶中,將 條件金鑰iam:PassedToService設為 的 許可aidevops.amazonaws.com,以在關聯上註冊角色。更廣泛的iam:PassRole授予也會滿足此要求。

  • 將核准導向動作的運算子存取代理程式空間。

在客服人員空間上啟用導向動作

必須在代理程式空間上啟用導向動作,任何其他提升的組態才會生效。這是導向動作的主要控制項。如果停用,提升角色註冊和提升工具選擇加入不會有任何影響。嘗試註冊提升的組態可能會遭到拒絕。

在主控台中啟用

  1. 開啟 AWS DevOps Agent 主控台。

  2. 選擇您的客服人員空間。

  3. 導覽至客服人員空間設定並啟用導向動作。

  4. 確認變更。

透過 API 啟用

您可以透過代理程式空間的 啟用導向動作preferences。此欄位是偏好設定索引鍵的類型映射到布林值。您可以在 CreateAgentSpace和 上設定它UpdateAgentSpace。

下列範例使用 CLI AWS 啟用導向動作。

aws devops-agent update-agent-space \ --agent-space-id <your-agent-space-id> \ --preferences elevatedActionsEnabled=true

preferences 欄位具有下列行為:

  • 在 preferences上提供 會UpdateAgentSpace取代整組,因此省略的偏好設定會還原為其預設值。

  • 省略 preferences 欄位會讓目前的值保持不變。

  • 設定elevatedActionsEnabled是選用的,因為偏好設定預設為 false。

  • 使用 提供未知的偏好設定金鑰失敗ValidationException。

  • 變更偏好設定會立即生效,且等同於主控台切換。

  • 呼叫會GetAgentSpace傳回目前的preferences映射,確認設定。

註冊 AWS 帳戶的提升角色

對於每個相關聯的 AWS 帳戶,您可以選擇註冊提升的角色。監控帳戶和任何來源帳戶都支援提升的角色註冊。提升角色是您帳戶中的 IAM 角色, AWS DevOps 代理程式會擔任此角色來代表您執行導向動作。您可以透過在關聯 AWS 組態agentElevatedRoleArn上設定 來註冊角色。

當您註冊提升的角色時,請記住下列事項:

  • 每個帳戶註冊是選用的。如果您未註冊 帳戶的提升角色,則該帳戶只能使用唯讀動作。

  • 我們建議採用可辨識的命名慣例,例如,DevOpsAgent-ElevatedAction-*因此提升角色易於稽核。服務不需要特定名稱。

  • 角色的許可政策由客戶管理。將其範圍限定為您希望客服人員能夠採取的動作。角色會定義代理程式可在您帳戶中執行的操作上限。它不是常設授予。每個導向動作還需要在執行時獲得操作員核准,且代理程式的工作階段會進一步範圍限定為特定的核准操作。

撰寫信任政策

提升的角色必須信任 AWS DevOps Agent 服務主體。驗證會練習擔任角色路徑。 AWS DevOps 代理程式會在擔任角色時使用三個 STS 動作。信任政策必須允許全部三個:sts:AssumeRole、 sts:SetSourceIdentity和 sts:TagSession。如果您省略 sts:SetSourceIdentity或 sts:TagSession,即使驗證狀態為 ,導向動作也會在登入資料時間失敗valid。

下列範例顯示提升角色的信任政策。111122223333 將 取代為 AWS 您的帳戶 ID,並將 us-east-1取代為客服人員空間 AWS 的區域。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "aidevops.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:aidevops:us-east-1:111122223333:agentspace/*" } } } ] }

aws:SourceAccount 和 aws:SourceArn條件可防止混淆代理人問題。它們可確保角色只能代表您自己的客服人員空間擔任。aws:SourceArn 條件中的區域必須符合客服人員空間的區域。如果您在多個區域中操作客服人員空間,請使用區域萬用字元 (arn:aws:aidevops:*:111122223333:agentspace/*) 或特定的客服人員空間 ARN。

將許可授予提升的角色

提升角色的許可政策定義 AWS 了 DevOps 代理程式可以在您的帳戶中透過導向動作執行的操作上限。代理程式永遠不會在此上限操作。每個導向動作都需要操作員核准。針對核准動作發行的登入資料具有工作階段政策。工作階段政策會將它們範圍縮小到運算子核准的特定操作和資源。代理程式只會從 AWS DevOps 代理程式維護的支援 IAM AWS 動作的精選清單中編寫工作階段政策。該清單以外的動作永遠不能成為工作階段政策的一部分。若要瀏覽清單,請在 AWS DevOps Agent 主控台中開啟組態頁面。在客服人員動作區段中選擇檢視支援的動作。 您有兩個許可政策的選項。

選項 1:連接 AWS 受管政策。 AWS DevOps 代理程式提供 AIDevOpsAgentActionsPolicy受管政策。其 ARN 是 arn:aws:iam::aws:policy/AIDevOpsAgentActionsPolicy。如需程式碼格式的政策文件,請參閱 AWS 受管政策參考指南。

受管政策具有下列特性:

  • 它授予廣泛的許可:所有資源上的所有動作。它不包括身分、登入資料和組織管理服務。排除的服務為 account:*、cognito-identity:*、iam:*、identitystore:*、organizations:*、ram:*rolesanywhere:*、、 sso:*和 sts:*。因此,角色無法管理身分或取得進一步的存取權。

  • 它允許從這些服務傳回一組小型唯讀動作:account:GetAccountInformation、account:GetGovCloudAccountInformation、account:GetPrimaryEmail、account:ListRegions、iam:ListRoles、organizations:DescribeEffectivePolicy、 organizations:DescribeOrganization和 sts:DecodeAuthorizationMessage。

  • 它確實在上限中包含刪除類別動作。無論角色的許可為何,代理程式本身都會拒絕刪除類別操作。如需代理程式拒絕之操作的詳細資訊,請參閱代理程式不會執行的操作。

  • 政策只會定義上限。任何單一動作的有效許可會在執行時間縮減為核准的操作。

選項 2:撰寫客戶受管政策。如果您想要比受管政策更緊密的上限,請撰寫您自己的政策。將其範圍限定為您希望客服人員接觸的動作和資源,並將其連接到角色。遵循最低權限原則:從您希望運算子核准的操作開始,並僅視需要展開。即使已核准,角色也不允許在執行時間失敗的導向動作。

使用任一選項,您可以進一步限制代理程式可以使用服務控制政策 (SCPs) 和許可界限執行的操作。這些控制適用於提升的角色,就像您帳戶中的任何其他角色一樣。如需定義代理程式存取範圍的詳細資訊,請參閱 限制 AWS 帳戶中的客服人員存取。

驗證生命週期

信任政策驗證的執行方式取決於帳戶類型。

  • 監控 (主要) 帳戶。驗證是同步的。 AWS DevOps 代理程式會在您儲存角色時對其進行驗證。結果會在頁面重新載入或 API 呼叫傳回時提供。 agentElevatedRoleArnStatus會反映 valid或 invalid 立即。

  • 來源 (次要) 帳戶。驗證是非同步的。註冊提升的角色之後,會發生下列情況:

    1. 關聯會立即接受註冊並報告agentElevatedRoleArnStatus為 pending-confirmation。

    2. AWS DevOps 代理程式會透過執行擔任角色路徑來驗證角色。

    3. valid 如果驗證成功或invalid失敗,狀態會轉換為 。

角色只有在其狀態為 之後,才會用於導向動作valid。

對於來源帳戶,輪詢與 GetAssociation或 的關聯,ListAssociations並檢查 agentElevatedRoleArnStatus 欄位。驗證通常會在幾分鐘內完成。

代理程式不會執行的操作

不論您授予的許可為何,代理程式都會在其呼叫的 AWS SDK 操作上強制執行自己的護欄,做為導向動作。這些護欄僅適用於針對 AWS 資源的動作。工具分類會改為管理第三方工具。如需工具分類的詳細資訊,請參閱分類第三方整合的工具。即使提升角色的政策允許 操作,這些護欄也會套用。運算子核准不會覆寫它們。

  • 刪除 資源。代理程式拒絕刪除類別操作,例如刪除執行個體、儲存貯體、資料表、函數或堆疊。運算子會使用自己的登入資料刪除資源本身。

  • 變更許可界限。代理程式會拒絕設定或移除 IAM 許可界限的操作:iam:PutRolePermissionsBoundary、iam:PutUserPermissionsBoundary、 iam:DeleteRolePermissionsBoundary和 iam:DeleteUserPermissionsBoundary。邊界是您組織用來限制代理程式的控制項,因此代理程式無法變更它們。

  • 需要 iam:PassRole。根據預設,代理程式不支援將 IAM 角色傳遞至 AWS 服務的操作。範例包括使用執行個體描述檔啟動執行個體,或使用 執行角色建立 Lambda 函數。使用任務角色啟動任務是另一個範例。傳遞角色可以間接擴展服務代表您執行的操作。

當指示 執行其中一個操作時,代理程式會拒絕並說明原因。可以的話,它會改為說明手動步驟。

這些護欄補充了您擁有的控制項:提升角色的許可政策、SCPs 和提升角色的許可界限。

分類第三方整合的工具

第三方和 MCP 整合會以三個類別公開工具,以決定代理程式是否可以叫用工具和需要什麼核准。 AWS DevOps 代理程式會指派原生整合的固定分類。您可以將它們指派給客戶設定的 MCP 伺服器。

分類 意義 Behavior (行為)
READ_ONLY 工具只會讀取資訊。 以唯讀動作的形式提供。
MUTATIVE 工具可以建立或修改 資源。 在聊天中需要啟用導向動作和每個動作運算子核准。
DESTRUCTIVE 工具可以刪除或不可逆地變更資源。 代理程式永遠不會在此分類中叫用工具。

客戶設定的 MCP 伺服器

對於 MCP 伺服器關聯 (包括 SigV4 變體),您可以透過每個工具的項目清單 toolDetails來自行分類工具。每個項目都有 name和 toolClassification。

  • 每個 name都必須完全符合關聯已啟用工具清單中的項目。不相符項目會在註冊時遭到拒絕。

  • 沒有預存分類的工具預設為 READ_ONLY。如果您透過 AWS SDK、CLI 或直接 API AWS 呼叫以程式設計方式註冊或更新 MCP 伺服器關聯,而且您未提供 toolDetails, AWS DevOps Agent 會將該關聯上的每個工具視為 READ_ONLY。代理程式會在未請求核准的情況下執行唯讀工具。若要在建立或修改資源的工具執行之前要求操作員核准,請將該工具明確分類為 MUTATIVE。主控台會提示您分類每個探索到的工具。程式設計發起人必須toolDetails自行設定。

  • 工具名稱為 1–128 個字元。每個關聯最多可以分類 500 個工具。

如需連線和允許列出 MCP 工具的詳細資訊,請參閱 連接 MCP 伺服器。

原生整合 (Datadog、Grafana)

對於 Datadog 和 Grafana 等原生整合,分類由 AWS DevOps Agent 修正。您不提供分類。您無法覆寫這些分類。反之,您可以透過工具項目清單 enabledElevatedTools,選擇 中的特定變動工具。

  • 只有 AWS DevOps Agent 分類為 MUTATIVE 的工具才能啟用。

  • 分類為 DESTRUCTIVE(例如 grafana_delete_alert_rule) 的工具永遠無法啟用。

核准導向動作

導向動作是human-in-the-loop。當代理程式判斷其被導向執行的 操作會改變資源時,不會直接執行操作。相反地,會發生下列情況:

  1. 代理程式會請求核准,將特定工具、操作和目標資源呈現給操作員。

  2. 運算子會檢閱請求,並核准或拒絕請求。

  3. 如果核准,代理程式會執行 操作。每個核准僅涵蓋請求的特定工具、操作和資源。它在限制的時段內仍然有效,不能重複使用於不同的操作或資源。

AWS DevOps Agent 只會在聊天中顯示操作員核准請求。如果客服人員在聊天外叫用變動工具,例如在自動調查期間,呼叫會失敗,而不是提出核准請求。 AWS DevOps 客服人員絕不會在未經核准的情況下執行變動工具。

核准和產生的動作可歸因於核准運算子 in AWS CloudTrail。

API 中的核准流程

  • SendMessage 會串流核准請求。請求會識別工具、操作和目標資源,以及用於繼續的中斷識別符。作為執行範例,假設運算子在 AI 助理中運作,例如 Claude。運算子會要求它清除無效字母佇列 arn:aws:sqs:us-east-1:111122223333:my-app-dlq。Claude 呼叫 SendMessage on AWS DevOps 代理程式,回應串流會攜帶核准請求,識別工具 use_aws、 操作 sqs:PurgeQueue和佇列 ARN,以及 toolUseId、 interruptId和 approvalId識別符。

  • 運算子使用 記錄決策UpdateApprovalAction。運算子會以最終定案範圍核准 ,或以選用原因拒絕 。在這裡,Claude 向運算子顯示請求,然後使用 UpdateApprovalAction action: APPROVED 和工具 finalPattern的 呼叫 use_aws,並將argumentPins鎖定鎖定operation到佇列 ARN sqs:PurgeQueue並resource_arn鎖定到佇列 ARN。

  • 定案範圍可以縮小請求範圍,但永遠無法擴大請求範圍。

  • 運算子會標記核准單次使用,或將重複使用時段設定為最多 4 小時。佇列清除是一次性操作,因此運算子會標記此核准一次性使用 (singleUse: true,無 ttlSeconds)。

  • 用戶端SendMessage會再次呼叫 並連接決策,以繼續暫停的對話。在此範例中,Claude 會將 userActionResponse設定為 APPROVAL_ACTION,並使用 approvalAction toolUseId、approvalId、 interruptId和 APPROVED decision 提供 。 AWS DevOps 代理程式接著會清除佇列。

  • 核准生命週期為 PENDING,然後 APPROVED(可回收) 或 REJECTED(終端)。APPROVED 使用核准REDEEMED之後,核准就會變成核准,而且可以在REVOKED使用前。這裡的請求是當運算子決定PENDING時、決定APPROVED之後,以及代理程式清除佇列REDEEMED之後。

無論 AI 助理如 Claude、Slack 機器人或自訂操作用戶端:呼叫 SendMessage、向運算子提出核准請求、使用 記錄決策UpdateApprovalAction,以及繼續與 的對話,任何客服人員都可以以相同的方式驅動此流程SendMessage。

監控和稽核

  • 角色驗證狀態 – agentElevatedRoleArnStatus監控您的 AWS 關聯 (透過 GetAssociation或 ListAssociations),以確認提升的角色保持 valid 狀態。

  • AWS CloudTrail – 在 AWS 帳戶中執行的導向動作會顯示在 CloudTrail 中。擔任角色工作階段會攜帶來源身分,將動作歸納至核准運算子。您可以將每個導向動作追蹤回核准動作的人類。

疑難排解

已註冊的角色會保留在 中pending-confirmation。這適用於來源 (次要) 帳戶,其中驗證是非同步的。驗證通常會在幾分鐘內完成。如果狀態未轉換,請確認角色是否存在,並重新註冊角色 ARN 以再次觸發驗證。

角色狀態為 invalid。信任政策驗證失敗。檢查:

  • 信任政策會命名 AWS DevOps Agent 服務主體。

  • 信任政策允許所有必要的 STS 動作 (sts:AssumeRole、 和 sts:TagSession)sts:SetSourceIdentity,而不只是 sts:AssumeRole。

  • aws:SourceAccount 條件符合擁有代理程式空間的帳戶。

  • aws:SourceArn 條件中的區域符合客服人員空間的區域 (或使用區域萬用字元)。

修正信任政策並重新註冊角色。

即使角色狀態為 ,導向動作仍會失敗valid。valid 狀態反映註冊時的驗證檢查。如果在驗證後變更信任政策,或其aws:SourceArn條件固定到與客服人員空間不同的區域,則即時擔任角色呼叫仍然會失敗。根據上述檢查清單檢閱信任政策。

ValidationException 註冊提升角色時。必須在代理程式空間上啟用導向動作,才能註冊提升的組態。先在客服人員空間上啟用導向動作,然後註冊角色。

提供 時的工具名稱不相符錯誤toolDetails。中的每個名稱toolDetails都必須完全符合關聯已啟用工具清單中的工具名稱,包括案例。比較兩個清單,更正任何不相符的項目,然後重試。