使用 Amazon Bedrock AgentCore Identity 透過私鑰 JWT 進行身份驗證
Amazon Bedrock AgentCore Identity 現在支援私鑰 JWT 客戶端身份驗證,使代理能夠使用簽名的 JWT 而不是共享金鑰向身份提供商進行身份驗證。私鑰安全地儲存在 AWS KMS 中,公鑰註冊到身份提供商。本文解釋了工作流程、支援的授權流程(M2M、OBO、使用者委託),並提供了詳細的配置步驟,包括建立 KMS 簽名金鑰、註冊公鑰以及設定憑證提供程式。還展示了用於審計的 CloudTrail 事件示例。
Amazon Bedrock AgentCore Identity 現在支援私鑰 JWT 客戶端身份驗證,為您的代理提供了一種更安全的身份驗證方式。與傳統的使用共享客戶端金鑰不同,私鑰 JWT 透過使用 JSON Web 令牌(JWT)客戶端斷言來讓您的代理對下游身份提供商的令牌端點進行身份驗證。您可以在身份提供商處註冊一個公鑰,而相應的私鑰則安全地儲存在 AWS Key Management Service(AWS KMS)中。當 AgentCore Identity 需要進行身份驗證時,它會使用 AWS KMS 對斷言進行簽名,並將簽名的斷言傳送給身份提供商,身份提供商則使用您註冊的公鑰進行驗證。
工作原理
以一個客戶支援代理為例,該代理需要從受身份提供商保護的內部訂單 API 中讀取客戶的訂單歷史記錄。代理呼叫 AgentCore Identity 的 GetResourceOauth2Token 來請求訂單 API 的令牌。AgentCore Identity 從您的憑證提供程式中讀取客戶端 ID、KMS 金鑰 ARN 和簽名演算法,構建一個短暫的 JWT 客戶端斷言,並使用您配置的簽名演算法(RS256、PS256 或 ES256)呼叫 kms:Sign。AWS KMS 簽名斷言並返回簽名,私鑰從不離開 KMS。接著,AgentCore Identity 將簽名的斷言釋出到身份提供商的令牌端點,攜帶 grant_type=client_credentials 和 client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer。身份提供商使用您註冊的公鑰驗證簽名,並返回一個訪問令牌給 AgentCore Identity,然後將其傳遞給您的代理。最後,代理使用該訪問令牌呼叫訂單 API 並獲取訂單歷史。
支援的授權流程
私鑰 JWT 認證支援三種授權流程:機器對機器(M2M)、代理(OBO)和使用者委託訪問。M2M 流程中代理作為自身行動,沒有人類使用者參與,使用 client_credentials 授權。OBO 流程中代理代表特定使用者,使用該使用者的現有令牌呼叫下游 API,AgentCore Identity 使用客戶端斷言驗證自身身份,同時交換使用者令牌。使用者委託訪問流程中,使用者透過互動式登入/許可(授權碼流程)批准代理的操作,然後代理獲取代表使用者的令牌。
前提條件
您需要一個 AWS 賬戶,可以對 KMS、AgentCore 和 CloudTrail 進行管理控制台訪問。還需要身份提供商上的租戶,用於註冊應用程式的公鑰。確保身份提供商要求的簽名演算法與 AWS KMS 和 AgentCore Identity 支援的演算法一致。
入門指南
首先,建立非對稱 KMS 金鑰。在 KMS 控制台中,選擇“客戶管理金鑰”並建立金鑰。金鑰型別選擇非對稱,金鑰用法選擇簽名和驗證,金鑰規格選擇與簽名演算法相容的型別,例如 ECC_NIST_P256 搭配 ES256。配置金鑰策略,允許 AgentCore Identity 使用該金鑰,透過 kms:ViaService 條件限制只能透過 AgentCore Identity 使用。然後匯出公鑰並註冊到身份提供商。接下來,在 AgentCore 控制台的 Identity 部分,新增 OAuth 客戶端,選擇私鑰 JWT 作為客戶端認證方法,提供發現 URL、客戶端 ID、KMS 金鑰 ARN 和簽名演算法。可選地,新增頭部和有效載荷宣告,然後建立客戶端。最後,稽核 CloudTrail 事件,例如 GetWorkloadAccessToken 和 GetResourceOauth2Token,以及來自 KMS 的 Sign 事件,以確認工作正常。
CloudTrail 日誌示例
當代理使用憑證提供程式獲取令牌時,操作會被記錄在 AWS CloudTrail 中。您可以檢視諸如 GetWorkloadAccessToken(獲取工作負載身份令牌)和 GetResourceOauth2Token(請求下游資源訪問令牌)等事件。Sign 事件顯示 AgentCore Identity 呼叫 kms:Sign 對 JWT 客戶端斷言進行簽名,確認私鑰 JWT 身份驗證正在工作。這些日誌有助於審計和監控代理的訪問。