View a markdown version of this page

使用接口 VPC 终端节点 (AWS PrivateLink) 在您的 VPC 和您的 Amazon Bedrock AgentCore 资源之间创建私有连接 - Amazon Bedrock AgentCore

使用接口 VPC 终端节点 (AWS PrivateLink) 在您的 VPC 和您的 Amazon Bedrock AgentCore 资源之间创建私有连接

您可以使用 AWS PrivateLink 在您的 VPC 和 Amazon Bedrock AgentCore 之间创建私有连接。您可以像在 VPC 中 AgentCore 一样进行访问,无需使用互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。您的 VPC 中的实例不需要公有 IP 地址即可访问 AgentCore。

您可以通过创建由提供支持的接口端点来建立此私有连接 AWS PrivateLink。我们将在您为接口端点启用的每个子网中创建一个端点网络接口。这些是请求者托管的网络接口,用作发往 AgentCore 的流量的入口点。

有关更多信息,请参阅 AWS PrivateLink 指南 AWS PrivateLink中的通过访问 AWS 服务

的注意事项 AgentCore

在为设置接口终端节点之前 AgentCore,请查看 AWS PrivateLink 指南中的注意事项

AgentCore 提供了三个 AWS PrivateLink 端点:

  • 数据平面端点-com.amazonaws.region.bedrock-agentcore

  • 控制平面端点-com.amazonaws.region.bedrock-agentcore-control

  • 网关终端节点-com.amazonaws.region.bedrock-agentcore.gateway

下表显示了每个 AgentCore 基元的 AWS PrivateLink 支持状态:

原语 数据面板 控制面板

运行时

支持

支持

内存

支持

支持

Built-in 工具(代码解释器、浏览器工具)

支持

支持

身份

支持

支持

网关

支持

支持

评估和优化

支持

支持

策略

支持

支持

有关提供 AgentCore 接口终端节点的 AWS 区域列表,请参阅支持的 AWS 区域

重要

数据平面 API 支持用于身份验证的 AWS 签名版本 4 (Sigv4) 标头和持有者令牌 (OAuth) 身份验证。VPC 终端节点策略只能根据 IAM 委托人限制来电者,而不能基于 OAuth 用户。要使通过 VPC 终端节点的 OAuth-based 请求成功,必须在终端节点策略中将委托人设置为*。否则,只有 Sigv4 许可名单的呼叫者才能通过 VPC 终端节点成功拨打电话。

AWS 支持 IAM 全局条件上下文密钥。默认情况下,允许通过接口终端节点进行完全访问。 AgentCore 您可以通过将终端节点策略附加到接口终端节点或将安全组与端点网络接口关联来控制访问权限。

为创建接口终端节点 AgentCore

您可以创建用于 AgentCore 使用 Amazon VPC 控制台或 AWS 命令行界面 (AWS CLI) 的接口终端节点。有关更多信息,请参阅 AWS PrivateLink 指南中的创建接口终端节点

AgentCore 使用以下服务名称格式创建接口终端节点:

  • 所有数据平面基元(运行时、 Built-in 工具、内存、身份):com.amazonaws.region.bedrock-agentcore

  • 对于 AgentCore 网关:com.amazonaws.region.bedrock-agentcore.gateway

  • 对于控制平面操作(运行时和内存管理):com.amazonaws.region.bedrock-agentcore-control

如果您为接口终端节点启用私有 DNS,则 AgentCore 可以使用其默认区域 DNS 名称向发出 API 请求。例如 bedrock-agentcore.us-east-1.amazonaws.com

为 VPC 端点创建端点策略

端点策略是一种 IAM 资源,您可以将其附加到接口端点。默认终端节点策略允许 AgentCore 通过接口终端节点进行完全访问。要控制允许 AgentCore 从您的 VPC 访问权限,请将自定义终端节点策略附加到接口终端节点。

端点策略指定以下信息:

  • 可以执行操作的委托人(AWS 账户、IAM 用户和 IAM 角色)。

    • 对于 AgentCore Gateway,如果您的网关入口不是基于AWS 签名版本 4 (Sigv4) 的(例如,如果您改用 OAuth),则必须将该Principal字段指定为通配符 *。基于 Sigv4 的身份验证允许您将定义Principal为特定 AWS 身份。这也适用于 AgentCore 运行时。

  • 可执行的操作。

  • 可对其执行操作的资源。

有关更多信息,请参阅 AWS PrivateLink 指南中的使用终端节点策略控制对服务的访问权限

各种原语的端点策略

以下示例显示了不同 AgentCore 组件的终端节点策略:

Runtime
  1. 以下终端节点策略允许特定的 IAM 委托人调用代理运行时资源。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:user/USERNAME" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/RUNTIME_ID" } ] }

    IAM 和 OAuth 混合身份验证

    InvokeAgentRuntime API 支持两种模式 VPC 终端节点授权。以下示例策略允许 IAM 委托人和 OAuth 调用者访问不同的代理运行时资源。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/customAgent1" }, { "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:runtime/customAgent2" } ] }

    上述策略只允许 IAM 委托人InvokeAgentRuntime拨打电话customAgent1。它还允许 IAM 委托人和 OAuth 调用者拨打电话。InvokeAgentRuntime customAgent2

    受保护的资源元数据 (PRM) 端点策略

    GetRuntimeProtectedResourceMetadata API 实现了 OAuth 2.0 受保护的资源元数据 (RFC 9728)。客户端在获得凭据之前调用此端点,以发现哪个授权服务器保护给定的代理运行时。此端点在设计上未经身份验证,因此Principal必须在终端节点策略中将其设置为*。

    VPC 终端节点策略是对 PRM 请求强制执行的。如果您的终端节点策略未明确允许bedrock-agentcore:GetRuntimeProtectedResourceMetadata,则通过 HTTP 403 拒绝通过该端点的 PRM 请求。任何通过 VPC 端点访问的 OAuth-configured 代理运行时都需要 PRM 访问权限才能发现授权服务器。

    注意

    如果您有用于强制执行数据边界的全部拒绝端点策略,并且不使用 OAuth 或 JWT 身份验证,则会自动拒绝 PRM 请求。无需额外配置。

    以下终端节点策略允许任何调用者发现授权服务器 (PRM),同时将运行时调用限制为特定的 IAM 委托人:

    { "Statement": [ { "Sid": "AllowPRMDiscovery", "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "AllowInvoke", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/RUNTIME_ID" } ] }

    要阻止通过您的 VPC 终端节点进行跨账户 PRM 查找(强制执行数据边界),请将 PRM 允许语句的范围仅限于您账户的运行时:

    { "Statement": [ { "Sid": "AllowPRMOwnAccountOnly", "Effect": "Allow", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "DenyCrossAccountPRM", "Effect": "Deny", "Principal": "*", "Action": [ "bedrock-agentcore:GetRuntimeProtectedResourceMetadata" ], "NotResource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" }, { "Sid": "AllowInvoke", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeAgentRuntime" ], "Resource": "arn:aws:bedrock-agentcore:REGION:ACCOUNT_ID:runtime/*" } ] }
Code Interpreter Tool
  1. 以下终端节点策略允许特定的 IAM 委托人调用代码解释器资源。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:code-interpreter/CODE_INTERPRETER_ID" } ] }
Memory
  1. ====== 所有数据平面操作

    以下终端节点策略允许特定的 IAM 委托人访问特定内存的 us-east-1 数据平面操作。 AgentCore

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:DeleteMemoryRecord", "bedrock-agentcore:GetMemoryRecord", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:ListActors", "bedrock-agentcore:ListSessions", "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchDeleteMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/MEMORY_ID" } ] }

    访问所有记忆

    以下终端节点策略允许特定的 IAM 委托人访问所有内存。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:DeleteMemoryRecord", "bedrock-agentcore:GetMemoryRecord", "bedrock-agentcore:ListMemoryRecords", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:ListActors", "bedrock-agentcore:ListSessions", "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchDeleteMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/*" } ] }

    API 的访问限制

    以下终端节点策略向特定 IAM 委托人授予在特定 AgentCore 内存资源中创建事件的权限。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvent" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:memory/MEMORY_ID" } ] }
Browser Tool
  1. 以下终端节点策略允许特定的 IAM 委托人连接到浏览器工具资源。

    { "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws::iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:ConnectBrowserAutomationStream" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1:ACCOUNT_ID:browser/BROWSER_ID" } ] }
Gateway
  1. 以下是自定义端点策略的示例。当您将此策略附加到接口终端节点时,它允许所有委托人调用该Resource字段中指定的网关。

    { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "bedrock:InvokeGateway" ], "Resource": "arn:aws::bedrock-agentcore:us-east-1::gateway/my-gateway" } ] }
Identity
  1. 以下端点策略允许访问身份资源。

    { "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": [ "*" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:workload-identity-directory/default/workload-identity/WORKLOAD_IDENTITY_ID" } ] }
Evaluations and Optimizations
  1. 以下终端节点策略允许特定的 IAM 委托人访问评估和优化操作。

    { "Statement": [ { "Sid": "AllowBatchEvaluations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:StartBatchEvaluation", "bedrock-agentcore:GetBatchEvaluation", "bedrock-agentcore:ListBatchEvaluations", "bedrock-agentcore:StopBatchEvaluation", "bedrock-agentcore:DeleteBatchEvaluation" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:batch-evaluate/*" }, { "Sid": "AllowRecommendations", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:StartRecommendation", "bedrock-agentcore:GetRecommendation", "bedrock-agentcore:ListRecommendations", "bedrock-agentcore:DeleteRecommendation" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:recommendation/*" }, { "Sid": "AllowEvaluators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateEvaluator", "bedrock-agentcore:GetEvaluator", "bedrock-agentcore:ListEvaluators", "bedrock-agentcore:UpdateEvaluator", "bedrock-agentcore:DeleteEvaluator" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:evaluator/*" }, { "Sid": "AllowOnlineEvaluationConfigs", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateOnlineEvaluationConfig", "bedrock-agentcore:GetOnlineEvaluationConfig", "bedrock-agentcore:ListOnlineEvaluationConfigs", "bedrock-agentcore:UpdateOnlineEvaluationConfig", "bedrock-agentcore:DeleteOnlineEvaluationConfig" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:online-evaluation-config/*" }, { "Sid": "AllowABTests", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateABTest", "bedrock-agentcore:GetABTest", "bedrock-agentcore:ListABTests", "bedrock-agentcore:UpdateABTest", "bedrock-agentcore:DeleteABTest" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:ab-test/*" }, { "Sid": "AllowConfigurationBundles", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::ACCOUNT_ID:root" }, "Action": [ "bedrock-agentcore:CreateConfigurationBundle", "bedrock-agentcore:GetConfigurationBundle", "bedrock-agentcore:GetConfigurationBundleVersion", "bedrock-agentcore:ListConfigurationBundles", "bedrock-agentcore:ListConfigurationBundleVersions", "bedrock-agentcore:UpdateConfigurationBundle", "bedrock-agentcore:DeleteConfigurationBundle" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:ACCOUNT_ID:configuration-bundle/*" } ] }