元鉴
返回中文阅读流

AWS Machine Learning Blog

在 Amazon Bedrock AgentCore Identity 中引用你自己的 AWS Secrets Manager 密钥

AWS 宣布 AgentCore Identity 支持引用 AWS Secrets Manager 中的预配置密钥,用户可保留对加密、轮换等管理控制。

中文内容

已翻译official company source英文原文2026-06-01

AI 代理的能力取决于它们能够访问的工具。无论是从 CRM 检索客户数据、向 Slack 发布更新,还是查询 GitHub 仓库,代理都需要调用外部 API,这意味着要在运行时安全地传递凭证。在代码中不硬编码密钥、也不在代理提示中暴露密钥的前提下正确实现这一点,是构建可用于生产环境的代理式系统的关键挑战之一。

Amazon Bedrock AgentCore Identity 通过凭证提供方和令牌保管库来应对这一挑战:它会在你的账户中为每个出站凭证提供方资源,在 AWS Secrets Manager 中自动创建并管理一个密钥。该密钥包含 API 密钥或客户端密钥,以及外部身份提供方的其他元数据。虽然 AgentCore Identity 会完整创建并管理这些密钥,但客户此前无法在创建时配置自定义标签、轮换策略,或使用客户管理的 AWS Key Management Service(AWS KMS)密钥进行加密。

今天,我们很高兴宣布 AgentCore Identity 支持引用 AWS Secrets Manager 中的密钥,因此你可以引用自己在 Secrets Manager 中预先配置的密钥,并保留对其管理方式的完全控制。借助此功能,你可以将组织现有的密钥治理流程扩展到 AgentCore。你可以提供一个现有的、预配置的 AWS Secrets Manager 密钥,用于你的凭证提供方资源。你可以像管理 Secrets Manager 中的其他密钥一样,完全控制其加密配置、轮换、复制、标签和资源策略。你也可以选择同一 AWS Region 内另一个 AWS 账户中的密钥,但不支持跨 Region 密钥共享。该功能还支持通过 AWS Secrets Manager 外部连接器引入的密钥,从而能够与第三方密钥管理器集成。

在本文中,我们将回顾示例用例,并介绍如何开始使用现有密钥配置你的凭证提供方资源。

示例用例

以下是一些示例用例:

  1. 你的代理访问的是团队已经拥有密钥的外部 API:将该现有密钥的 ARN 提供给你的凭证提供方资源,而不是让 AgentCore Identity 创建新的密钥。你也可以引用同一 Region 内另一个 AWS 账户中的密钥,并且支持通过 AWS Secrets Manager 外部连接器引入的密钥,从而能够与第三方密钥管理器集成。
  2. 你希望按照安全最佳实践轮换密钥,并希望代理在轮换期间继续工作:当你轮换密钥值时,AgentCore Identity 会在下一次读取时获取更新后的值。你无需更新或重新创建凭证提供方资源。
  3. 你将密钥访问范围限定为预期的代理用途:直接在 AWS Secrets Manager 中配置密钥的资源策略。你可以控制哪些 AWS Identity and Access Management(IAM)主体能够访问该密钥,并限定访问条件。
  4. 你的代理在受监管环境中运行,其中每个凭证都必须使用客户管理的密钥进行加密:在将密钥提供给 AgentCore Identity 之前,先使用客户管理的加密密钥创建该密钥。如果你的组织强制执行 SCP 和 RCP 以帮助验证所有数据均使用客户管理的 CMK 加密,这一点尤其有用。通过引用现有密钥,你的加密配置将得到完整保留。
  5. 你的组织要求密钥具有资源标签,以用于成本分摊、合规跟踪或治理审计:在将密钥提供给 AgentCore Identity 之前,按照你的标准创建密钥并添加标签。

要了解可用密钥配置选项的更多信息,请参阅 AWS Secrets Manager User Guide。

先决条件

要跟随操作,你需要具备以下条件:

  1. 一个现有的 AWS Secrets Manager 密钥,其中包含 API 密钥或 OAuth 客户端密钥。
  2. 具备 IAM 权限,能够授予 AgentCore Identity 服务主体对该密钥的 secretsmanager:GetSecretValue 访问权限。
  3. 如果你使用客户管理的 AWS KMS 密钥,则需要为该服务主体授予该密钥的 kms:Decrypt 权限。
  4. 能够访问 Amazon Bedrock AgentCore Identity 控制台或 AWS Command Line Interface(AWS CLI)。

入门

要引用 AWS Secrets Manager 中的密钥,请在通过 AgentCore Identity API 创建凭证提供方资源时提供密钥 ARN 和 JSON 键。AgentCore Identity 会在运行时从你密钥中指定的 JSON 键获取凭证值。

以下部分展示如何使用 AWS Management Console、AWS CLI 或 AI 代理,通过引用密钥创建凭证提供方资源。

使用控制台

你可以直接从 Amazon Bedrock AgentCore Identity 控制台创建新的凭证提供方资源时配置引用密钥。该功能支持 API 密钥和 OAuth 客户端凭证两种类型。

AgentCore Identity console showing creation of an Outbound Auth resource with a referenced secret

图 1:AgentCore Identity 控制台,创建带有引用密钥的 Outbound Auth 资源。

A. 添加带有引用密钥的 API 密钥

要添加带有引用密钥的 API 密钥,请完成以下步骤:

  1. 打开 Amazon Bedrock AgentCore 控制台。
  2. 在左侧导航窗格中,选择 Identity。
  3. 在 Outbound Auth 部分,选择 Add Outbound Auth。
  4. 选择 Add API key。
  5. 为你的 Outbound Auth 资源输入 Name。
  6. 在 API key selection method 下,选择 Provide API key via Secrets Manager。
  7. 在 Secrets Manager ARN 字段中,输入或选择你现有密钥的 ARN。列表会显示你账户中可用的密钥。例如:arn:aws:secretsmanager:us-east-1:123456789012:secret:myApiKeySecret-AbCdEf。
  8. 在 JSON key 字段中,指定 Secrets Manager 密钥中包含 API 密钥值的键。
  9. 选择 Add。
  10. 通过检查该凭证提供方是否出现在 Outbound Auth 列表中,确认其已创建。

AgentCore Identity console showing how to add an API key from Secrets Manager

图 2:AgentCore Identity 控制台,从 Secrets Manager 添加 API 密钥。

B. 添加带有引用密钥的 OAuth 客户端密钥

要添加带有引用密钥的 OAuth 客户端密钥,请完成以下步骤:

  1. 在 Identity 页面中,选择 Add Outbound Auth。
  2. 选择 Add OAuth client。
  3. 为你的 OAuth 客户端输入 Name(例如 google-oauth-client-v5fz5)。
  4. 在 Provider 下,选择你所需的内置提供方或自定义提供方。
  5. 输入身份提供方分配给你的 Client ID。
  6. 在 Client secret 下,选择 Provide Client secret via Secrets Manager。
  7. 在 Secrets Manager ARN 字段中,输入包含你的 OAuth 客户端密钥的密钥 ARN。
  8. 在 JSON key 字段中,指定该密钥中包含客户端密钥值的键。
  9. 选择 Add OAuth Client。
  10. 通过检查该凭证提供方是否出现在 Outbound Auth 列表中,确认其已创建。

AgentCore Identity console showing how to add an OAuth client secret from Secrets Manager

图 3:AgentCore Identity 控制台,从 Secrets Manager 添加 OAuth 客户端密钥。

使用 AWS CLI

你可以直接通过 AWS CLI 为 OAuth 客户端密钥创建新的 Outbound Auth 资源时配置引用密钥,如以下代码所示:

aws bedrock-agentcore-control create-oauth2-credential-provider \
    --name "google-oauth-client-v5fz5" \
    --credential-provider-vendor "GoogleOauth2" \
    --oauth2-provider-config-input '{
        "googleOauth2ProviderConfig": {
            "clientId": "<clientId>",
            "clientSecretSource": "EXTERNAL",
            "clientSecretConfig": {
                "secretId": "arn:aws:secretsmanager:us-east-1:123456789012:secret:myGoogleKeySecret-AbCdEf",
                "jsonKey": "key"
            }
        }
    }'

在桌面上使用 AI 代理

如果你正在使用 AI 编码代理(如 Kiro 或类似工具),可以提示它直接配置引用密钥:

“我在 AWS Secrets Manager 中已有一个密钥,ARN 为 arn:aws:secretsmanager:us-east-1:123456789012:secret:my-api-key。请在 Amazon Bedrock AgentCore Identity 中创建一个名为 <client-name> 的 OAuth2 凭证提供方,使用 GoogleOauth2 作为供应商。客户端 ID 为 <clientId>,客户端密钥来源为 EXTERNAL,密钥 JSON 键为 key。” 注意:请将 <client-name> 和 <clientId> 替换为你的值。

重要提示:通过向该密钥添加资源策略,允许服务主体调用 secretsmanager:GetSecretValue,从而授予 AgentCore Identity 读取你的密钥的权限。如果你的密钥使用客户管理的 KMS 密钥加密,还需要授予该服务主体对该密钥的 kms:Decrypt 权限。

结论

借助引用 AWS Secrets Manager 中密钥的能力,AgentCore Identity 让你在为 AI 代理配置出站身份验证时,可以灵活使用现有密钥和密钥管理实践。你可以保留对凭证加密、轮换和访问方式的完全控制,同时由 AgentCore Identity 在运行时负责检索这些凭证。

要开始使用,请参阅 Amazon Bedrock AgentCore Identity 文档。有关密钥管理的更多信息,请参阅 AWS Secrets Manager User Guide。

作者简介

原文标题

Reference your own AWS Secrets Manager secrets in Amazon Bedrock AgentCore Identity