在Amazon Bedrock AgentCore Identity中引用您自己的AWS Secrets Manager密钥
Amazon Bedrock AgentCore Identity现在支持引用您自己的AWS Secrets Manager密钥,使您能够完全控制密钥的加密、轮换、复制、标签和资源策略,同时扩展组织现有的密钥治理流程。
AI代理的强大程度取决于它们能访问的工具。无论是从CRM检索客户数据、在Slack上发布更新,还是查询GitHub仓库,代理都需要调用外部API,这意味着在运行时安全地传递凭证。在不将密钥硬编码在代码中或暴露在代理提示中的情况下做到这一点,是构建生产级代理系统的关键挑战之一。
Amazon Bedrock AgentCore Identity通过凭证提供程序和令牌保险库应对这一挑战,它们会自动在您账户的AWS Secrets Manager中为每个出站凭证提供程序资源创建并管理一个密钥。该密钥包含API密钥或客户端密钥以及外部身份提供程序的其他元数据。虽然AgentCore Identity完全创建并管理这些密钥,但客户在创建时无法配置自定义标签、轮换策略或客户管理的AWS KMS密钥加密。
今天,我们激动地宣布AgentCore Identity支持引用AWS Secrets Manager中的密钥,因此您可以引用自己预先配置的Secrets Manager密钥,并保留对其管理的完全控制。凭借此功能,您可以将组织现有的密钥治理流程扩展到AgentCore。您可以为凭证提供程序资源提供现有的、预先配置的AWS Secrets Manager密钥。您保留对其加密配置、轮换、复制、标签和资源策略的完全控制,就像管理Secrets Manager中的其他密钥一样。您还可以从同一AWS区域内的另一个AWS账户中选择密钥,但不支持跨区域密钥共享。这还支持通过AWS Secrets Manager外部连接器引入的密钥,从而实现与第三方密钥管理器的集成。
本文中,我们将回顾示例用例,并逐步介绍如何开始使用现有密钥配置凭证提供程序资源。
示例用例
以下是一些示例用例:
- 您的代理访问一个您团队已有密钥的外部API:提供该现有密钥的ARN给您的凭证提供程序资源,而不是让AgentCore Identity创建一个新密钥。您还可以引用同一区域中另一个AWS账户的密钥,以及通过AWS Secrets Manager外部连接器引入的密钥,支持与第三方密钥管理器集成。
- 您希望出于安全最佳实践轮换密钥,并且希望代理在轮换期间继续工作:当您轮换密钥值时,AgentCore Identity会在下一次读取时检索更新后的值。您无需更新或重新创建凭证提供程序资源。
- 您将密钥访问范围限定于预期的代理使用:直接在AWS Secrets Manager中配置密钥的资源策略。您可以控制哪些AWS Identity and Access Management(IAM)主体可以访问密钥,并限定访问条件。
- 您的代理在受监管环境中运行,每个凭证都必须使用您客户管理的密钥加密:在将密钥提供给AgentCore Identity之前,使用您的客户管理加密密钥创建密钥。如果您的组织强制执行SCP和RCP以确保所有数据使用客户管理的CMK加密,这将特别有用。通过引用现有密钥,您的加密配置完全保留。
- 您的组织需要密钥上的资源标签以进行成本分配、合规跟踪或治理审计:在将密钥提供给AgentCore Identity之前,根据您的标准创建并标记密钥。
有关密钥配置选项的更多信息,请参阅《AWS Secrets Manager用户指南》。
前提条件
要跟随操作,您需要以下内容:
- 一个包含API密钥或OAuth客户端密钥的现有AWS Secrets Manager密钥。
- IAM权限,允许AgentCore Identity服务主体对密钥执行secretsmanager:GetSecretValue操作。
- 如果使用客户管理的AWS KMS密钥,则需为该服务主体提供kms:Decrypt权限。
- 访问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客户端凭证类型。
图1:AgentCore Identity控制台,使用引用密钥创建出站Auth资源。
A. 使用引用密钥添加API密钥
要使用引用密钥添加API密钥,请完成以下步骤:
- 打开Amazon Bedrock AgentCore控制台。
- 在左侧导航窗格中,选择Identity。
- 在Outbound Auth部分,选择Add Outbound Auth。
- 选择Add API key。
- 为您的Outbound Auth资源输入名称。
- 在API key selection method下,选择Provide API key via Secrets Manager。
- 在Secrets Manager ARN字段中,输入或选择您现有密钥的ARN。列表显示您账户中的可用密钥。例如:arn:aws:secretsmanager:us-east-1:123456789012:secret:myApiKeySecret-AbCdEf。
- 在JSON key字段中,指定包含API密钥值的密钥中的键。
- 选择Add。
- 验证凭证提供程序已创建,检查它出现在Outbound Auth列表中。
图2:AgentCore Identity控制台,从Secrets Manager添加API密钥。
B. 使用引用密钥添加OAuth客户端密钥
要使用引用密钥添加OAuth客户端密钥,请完成以下步骤:
- 在Identity页面,选择Add Outbound Auth。
- 选择Add OAuth client。
- 为您的OAuth客户端输入名称(例如,google-oauth-client-v5fz5)。
- 在Provider下,选择您打算使用的内置或自定义提供程序。
- 输入您的客户端ID(身份提供程序分配的)。
- 在Client secret下,选择Provide Client secret via Secrets Manager。
- 在Secrets Manager ARN字段中,输入包含OAuth客户端密钥的密钥ARN。
- 在JSON key字段中,指定包含客户端密钥值的密钥中的键。
- 选择Add OAuth Client。
- 验证凭证提供程序已创建,检查它出现在Outbound Auth列表中。
图3:AgentCore Identity控制台,从Secrets Manager添加OAuth客户端密钥。
使用AWS CLI
您可以通过AWS CLI直接为OAuth客户端密钥创建新的出站Auth资源时配置引用密钥,如以下代码所示:
aws bedrock-agentcore-control create-oauth2-credential-provider \ --name "google-oauth-client-v5fz5" \ --credential-provider-vendor "GoogleOauth2" \ --oauth2-provider-config-input '{ "googleOauth2ProviderConfig": { "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中创建一个名为<NAME>的OAuth2凭证提供程序,使用GoogleOauth2作为供应商。客户端ID是<CLIENT_ID>,客户端密钥源是EXTERNAL,密钥JSON键是key。”
注意:将<NAME>和<CLIENT_ID>替换为您的值。
重要:给AgentCore Identity读取密钥的权限,在密钥上添加资源策略,允许服务主体调用secretsmanager:GetSecretValue。如果密钥使用客户管理的KMS密钥加密,还需为该服务主体提供kms:Decrypt权限。
结论
通过引用AWS Secrets Manager密钥的能力,AgentCore Identity为您提供了在配置AI代理的出站认证时使用现有密钥和密钥管理实践的灵活性。您可以完全控制凭证的加密、轮换和访问方式,而AgentCore Identity负责在运行时检索它们。
要开始使用,请参阅Amazon Bedrock AgentCore Identity文档。有关密钥管理的更多信息,请参阅《AWS Secrets Manager用户指南》。
关于作者