AI News HubLIVE
站內改寫2 分鐘閱讀

使用 Amazon Bedrock AgentCore Identity 通過私鑰 JWT 進行身份驗證

Amazon Bedrock AgentCore Identity 現在支持私鑰 JWT 客户端身份驗證,使代理能夠使用簽名的 JWT 而不是共享密鑰向身份提供商進行身份驗證。私鑰安全地存儲在 AWS KMS 中,公鑰註冊到身份提供商。本文解釋了工作流程、支持的授權流程(M2M、OBO、用户委託),並提供了詳細的配置步驟,包括創建 KMS 簽名密鑰、註冊公鑰以及設置憑證提供程序。還展示了用於審計的 CloudTrail 事件示例。

來源AWS Machine Learning Blog作者: Swara Gandhi

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 身份驗證正在工作。這些日誌有助於審計和監控代理的訪問。