跳到主要內容
AI News HubLIVE
站內改寫3 分鐘閱讀

使用 Amazon Bedrock AgentCore Identity 保護 Amazon ECS 上的 AI 智能體安全

文章摘要

本文介紹瞭如何使用 Amazon Bedrock AgentCore Identity 作為獨立服務,在 Amazon ECS 上安全地實現 AI 智能體的 OAuth 2.0 授權碼授權流程(三腿 OAuth),包括安全會話綁定、作用域令牌以及工作負載與會話綁定服務的分離。

來源AWS Machine Learning Blog作者: Julian Grüber
使用 Amazon Bedrock AgentCore Identity 保護 Amazon ECS 上的 AI 智能體安全
報告錯誤

更正渠道尚未開通,可先複製下方文章資訊留存。

查看更正說明
直接讀正文

在生產環境中,AI 智能體需要安全地訪問外部服務。Amazon Bedrock AgentCore Identity 作為一項獨立服務,可保護您的 AI 智能體訪問外部服務,無論它們運行在 Amazon ECS、Amazon EKS、AWS Lambda 還是本地環境中。

本文聚焦於在 Amazon ECS 上實現授權碼授權(三腿 OAuth),並附帶安全的會話綁定和作用域令牌。此前有一篇文章介紹了 AgentCore Identity 的憑證管理,而本文則解決了在計算環境(如 ECS)上運行智能體時的兩個關鍵問題:如何構建應用程序擁有的會話綁定端點,以及如何管理工作負載訪問令牌的生命週期。

該解決方案使用了 OAuth 2.0(RFC 6749)和 OpenID Connect(OIDC)。OIDC 用於用户身份驗證(確認用户身份),OAuth 2.0 用於授權用户操作(確定用户可執行的操作)。本文重點介紹用於用户委託訪問的授權碼授權流程:用户通過身份提供商進行身份驗證並授予同意,然後應用程序將授權碼交換為作用域訪問令牌,Amazon Bedrock AgentCore Identity 將其安全地存儲在令牌保管庫中。由於每個令牌都綁定到特定的用户身份並具有明確的同意記錄,該解決方案維護了一個從用户身份驗證到智能體操作的可審計鏈。

授權碼授權適用於代表用户行動的智能體工作負載,因為它提供了用户行動前的同意、會話綁定(驗證發起授權請求的用户與授予同意的用户是同一人)以及作用域委託(將智能體的權限限制在用户批准的範圍內)。

解決方案概述

本文的架構圖展示了 AgentCore Identity 如何在 Amazon ECS 上保護自託管 AI 智能體。該方案在 ECS 上部署了兩個服務:智能體工作負載(運行 AI 智能體並處理用户請求)和會話綁定服務(處理 OAuth 回調以將用户會話與第三方訪問令牌關聯)。兩者都使用 Amazon Bedrock AgentCore Identity 通過 OIDC 進行入站身份驗證,並代表用户授權出站操作。

入站身份驗證和流量路由通過 Amazon Application Load Balancer (ALB) 進行,ALB 內置 OIDC 身份驗證流程,並將用户聲明以 JWT 格式注入 x-amzn-oidc-data 頭中。智能體工作負載使用 FastAPI 服務器,通過 Strands Agents 構建智能體,並調用 Amazon Bedrock 上的大語言模型(LLM)。當智能體需要代表用户在 GitHub 等第三方服務上執行操作時,它會通過 AgentCore Identity 請求 OAuth 訪問令牌。如果不存在有效令牌,AgentCore Identity 會啓動授權碼授權流程,提示用户授權。用户授權後,會話綁定服務通過 AgentCore Identity 完成 OAuth 流程,將授權與正確的用户會話綁定。

會話綁定

會話綁定可防禦兩種安全威脅:跨站請求偽造(CSRF)和瀏覽器交換攻擊。CSRF 中,攻擊者試圖將自己的 OAuth 令牌綁定到受害者的身份,導致受害者的智能體無意中訪問攻擊者的資源。瀏覽器交換攻擊中,攻擊者誘騙受害者代表其同意,將受害者的 OAuth 令牌綁定到攻擊者的身份,使攻擊者直接訪問受害者的資源。會話綁定通過確保智能體工作負載處的用户 ID 與會話綁定服務處的用户 ID 一致(兩者均通過身份驗證鏈加密驗證)來防止這兩種攻擊。

為什麼使用 GetWorkloadAccessTokenForUserId

推薦的工作負載訪問令牌獲取 API 是 GetWorkloadAccessTokenForJWT,但由於 AWS ALB 與 Microsoft Entra ID 的兼容性問題,本文使用 GetWorkloadAccessTokenForUserId。因為 ALB 的 OIDC 握手需要訪問令牌作用域為 Microsoft Graph,而 GetWorkloadAccessTokenForJWT 要求 JWT 的 aud 聲明與您的應用程序匹配,這無法同時滿足。因此,該方案使用 ALB 簽名的 JWT 中的 sub 聲明來提取用户 ID,然後調用 GetWorkloadAccessTokenForUserId。

實現要點

文章提供了完整的代碼示例,包括獲取工作負載訪問令牌、請求 OAuth 訪問令牌以及完成 OAuth 會話綁定的具體實現。關鍵設計選擇包括:使用 Pydantic BaseModel 作為工具返回類型(Strands 自動派生描述)、類型一致的錯誤處理(當需要授權時引發 AuthorizationRequiredError)以及每個工具聲明所需的最小 OAuth 作用域(遵循最小權限原則)。

結論

通過本文,您學習瞭如何使用 Amazon Bedrock AgentCore Identity 保護 Amazon ECS 上的 AI 智能體。入站身份驗證通過 OIDC 驗證用户身份,出站身份驗證通過 OAuth 2.0 和會話綁定實現,將會話綁定與智能體工作負載分離可實現獨立擴展並防禦攻擊。該模式適用於 ECS、EKS、Lambda 或外部 AWS 環境,並可擴展至 GitHub、Jira、Salesforce 或 Google Calendar 等支持 OAuth 2.0 的服務。

展開要點與分析

文章情報

工程師進階

要點

  • Amazon Bedrock AgentCore Identity 可保護 AI 智能體對外部服務的訪問,支持 ECS、EKS、Lambda 等平台。
  • 實現了授權碼授權流程(OAuth 2.0),包含安全的會話綁定和用户作用域令牌。
  • 將智能體工作負載與會話綁定服務分離,可獨立擴展並防禦 CSRF 和瀏覽器交換攻擊。
  • 提供了完整的 AWS 架構實現,包括 ALB 身份驗證、AgentCore Identity API 調用和 GitHub 集成示例。

要點與分析由自動化流程生成,可能有誤,請結合原始來源核實。

使用 Amazon Bedrock AgentCore Identity 保護 Amazon ECS 上的 AI 智能體安全 | AI News Hub