在生產環境中,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 的服務。