View a markdown version of this page

为网关目标配置亚马逊 Bedrock Gate AgentCore way VPC 出口 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为网关目标配置亚马逊 Bedrock Gate AgentCore way VPC 出口

AgentCore 网关服务为您的应用程序提供安全和受控的出口流量管理,从而实现与虚拟私有云 (VPC) 内资源的无缝通信。本文档概述了出口流量如何通过 AgentCore 网关流向 VPC 资源。您将了解支持的网关目标类型(通过 AgentCore 运行时提供的 Lambda、API 网关和 MCP 服务器)、它们的配置要求以及每种目标类型支持的身份验证方法。本指南涵盖了在保持网络隔离并在整个架构中遵循最小权限原则的同时,实现正确的出口流量所需的安全注意事项、路由机制和最佳实践。

MCP

AgentCore Gateway 支持将模型上下文协议 (MCP) 服务器作为目标端点,提供灵活的部署选项以满足各种客户需求。根据您的基础架构需求和安全要求,可以采用多种方式配置 MCP 服务器。

您的 MCP 目标可以分为两种类型,即不托管在 Runtime 或 Gateway 上 AgentCore,也不是托管在 AgentCore 运行时或网关上。我们在下面讨论这两个问题。

MCP 未托管于 AgentCore

AgentCore 网关支持使用由亚马逊 VPC Lattice 提供支持的私有终端节点连接到在 VPC 内运行的自托管 MCP 服务器。您可以在网关目标privateEndpoint上配置,将流量私下路由到您的 MCP 服务器,而无需将其暴露给公共互联网。

以下示例使用托管莱迪思创建私有 MCP 服务器目标:

{ "name": "my-private-mcp-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } }, "targetConfiguration": { "mcp": { "mcpServer": { "endpoint": "https://my-mcp-server.internal.example.com/mcp" } } } }

如果您想通过 VPC 终端节点或内部负载均衡器等中间组件路由流量,则可以指定routingDomain。有关更多信息,请参阅通过中间域路由流量。

如果您的 MCP 服务器使用私有证书颁发机构颁发的 TLS 证书,则可以在其前面放置一个带有公有 ACM 证书的内部应用程序负载均衡器。有关更多信息,请参阅私有证书的解决方法:ALB 。

有关自我管理的莱迪思、跨账户设置和高级配置,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源。

AgentCore 运行时或网关

AgentCore Runtime 通过托管基础设施方法为与 VPC 内的资源进行通信提供原生支持。 AgentCore Gateway 和 AgentCore Runtime 之间的所有通信都位于 AWS 主干网上,确保您的数据永远不会通过公共互联网(跨区域呼叫中国数据中心除外)。有关更多信息,请参阅 Amazon VPC 常见问题中的连接部分。有关将 AgentCore 运行时连接到您的 VPC 的详细设置说明,请参阅为 VPC 配置 Amazon Bedrock AgentCore 运行时和工具

对于从 AgentCore Gateway 到 AgentCore Runtime 的出站授权,支持两种身份验证方法:无授权(不建议用于生产用途)和授予客户端凭据的 OAuth(用于机器间身份验证)。如果未配置授权,则从 AgentCore Gateway 到 AgentCore Runtime 的请求没有身份验证令牌。该架构提供无缝连接路径,同时保持安全隔离。作为安全最佳实践,为 AgentCore Runtime 和 AgentCore Gateway 配置限制性身份验证和授权权限,仅允许访问特定用例所需的必要资源和操作。要配置 OAuth 身份以供 AgentCore 网关用于出站和 AgentCore 运行时入口,请使用以下文档:

架构图显示 AgentCore 网关无法连接到私有链路端点。

CreateGatewayTarget 以 AgentCore Runtime 为目标的示例

以下示例显示如何使用 AgentCore Runtime 创建网关目标:

POST /gateways/gatewayIdentifier/targets/ HTTP/1.1 Content-type: application/json { "clientToken": "string", "credentialProviderConfigurations": [ { "credentialProvider": { "oauthCredentialProvider": { "providerArn": "string", "scopes": [ "string" ], ... } }, "credentialProviderType": "OAUTH" } ], "description": "string", "metadataConfiguration": { "allowedQueryParameters": [ "string" ], "allowedRequestHeaders": [ "string" ], "allowedResponseHeaders": [ "string" ] }, "name": "string", "targetConfiguration": { "mcp": { "mcpServer": { "endpoint": "https://bedrock-agentcore.<region>.amazonaws.com/runtimes/<runtime-id>/invocations?qualifier=DEFAULT&accountId=<account-id>" } } } }
注意

避免将 VPC 终端节点 (VPCE) URL 与一起使用privateEndpoint,以防止不必要的额外网络跳跃。改为使用直接 AgentCore 运行时端点,流量将保持在 AWS 主干上。

打开 API 目标

通过 Open API Target 实现 API 网关端点

如果您的 API 网关无法直接添加为目标,您可以随时将资源导出为 OpenAPI 规范,并将该规范作为 OpenAPI 目标导入到 AgentCore 网关。

如果您在 API Gateway 中有私有 REST API,请按照以下说明进行操作:API 网关中的私有 REST API 。

其他端点

您可以使用配置配置 Open API 目标以访问 VPC 内的私有终端节点。privateEndpoint AgentCore Gateway 使用 Amazon VPC Lattice 与您的终端节点建立私有连接,无需将其暴露给公共互联网。

以下示例使用托管莱迪思创建私有 OpenAPI 目标:

{ "name": "my-private-openapi-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } }, "targetConfiguration": { "mcp": { "openApiSchema": { "inlinePayload": "<your OpenAPI spec JSON with server URL pointing to your private endpoint>" } } } }

如果您想通过 VPC 终端节点或内部负载均衡器等中间组件路由流量,则可以指定routingDomain。有关更多信息,请参阅通过中间域路由流量。

如果您的终端节点使用私有证书颁发机构颁发的 TLS 证书,则可以在其前面放置一个带有公有 ACM 证书的内部应用程序负载均衡器。有关更多信息,请参阅私有证书的解决方法:ALB 。

有关自我管理的莱迪思、跨账户设置和高级配置,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源。

注意

该privateEndpoint配置适用于您的 OpenAPI 架构中的单个域。如果您的架构引用了具有不同域的多个服务器端点,请提交AWS 支持案例以请求支持privateEndpointOverrides。

铁匠目标

Smithy 目标目前不支持私有端点 (privateEndpoint) 配置。如果您的 Smithy 目标需要私有连接,请打开AWS 支持案例以请求支持。

API Gateway

AgentCore 网关支持 API 网关作为目标类型,它可以用作访问 VPC 资源的中间层。 AgentCore 网关特别支持仅使用区域终端节点配置的 REST API 网关。虽然目前无法使用来自网关的直接 VPC 通信(此功能计划在未来发布),但网关通过 AWS 骨干与 API Gateway 通信,确保流量永远不会通过公共互联网(跨区域呼叫中国数据中心除外)。然后,API Gateway 可以使用 VPC Link 与资源通信,为 AgentCore 网关创建访问内部服务的安全路径,同时保持网络隔离。

要实施安全最佳实践,请将您的 API Gateway 配置为仅限于 AgentCore 网关服务主体或配置的 API 密钥的入站流量,防止来自其他来源的未经授权的访问。对于从 AgentCore Gateway 到 API Gateway 的出站授权,仅支持两种 IAM-based 身份验证方法:身份验证(使用网关服务角色使用 AWS 签名版本 4 进行身份验证)和 API 密钥身份验证(由 AgentCore 网关管理);API 网关目标不支持 OAuth-based 授权和跨账户 API 网关,请通过 Open API Target 为这些目标使用 API 网关端点。将 AgentCore 网关执行角色权限限制为仅调用所需的特定 API Gateway 端点,而不是授予广泛的 API 网关访问权限,从而确保网关无法与意外的 API 资源进行交互,并在整个架构中保持最低权限原则。

亚马逊 API Gateway REST API 分阶段作为目标

使用 IAM 身份验证集成 API 网关的权限

API 网关资源策略已锁定到 AgentCore 网关

以下资源策略限制 API 网关对网 AgentCore 关的访问:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:rest-api-id/api-stage/*/*" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/my-gateway-d4jrgkaske" } } } ] }

AgentCore 网关执行角色策略

以下策略向网关授予调用 API 网关的权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:abcd123/prod/*/*" ] } ] }

AgentCore 网关执行角色信任政策

以下信任策略允许 AgentCore Gateway 担任执行角色:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/*" } } } ] }

API Gateway 中的私有 REST API

本机不支持带有私有端点的 API 网关目标。但是,您可以将您的私有 API 网关导出为 OpenAPI 架构,并将开放 API 目标与该架构一起使用,配置为。privateEndpoint将设置routingDomain为您的 API 网关 VPC 终端节点 (VPCE) DNS 名称,并确保 OpenAPI 架构服务器 URL 使用与您的公有 TLS 证书匹配的域。

{ "name": "my-private-apigw-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0123456789abcdef0", "subnetIds": ["subnet-0123456789abcdef0", "subnet-0abcdef1234567890"], "endpointIpAddressType": "IPV4", "routingDomain": "<vpce-id>.execute-api.<region>.vpce.amazonaws.com" } }, "targetConfiguration": { "mcp": { "openApiSchema": { "inlinePayload": "<OpenAPI spec JSON with server URL matching the public certificate domain for your API Gateway, for example https://<api-id>.execute-api.<region>.amazonaws.com>" } } } }

有关私有终端节点配置的更多详细信息,请参阅使用 VPC Lattice 使用 VPC Lattice 连接您的 VPC 中的私有资源 连接您的 VPC 中的私有资源。

Lambda

AgentCore 网关支持 Lambda 目标作为其目标类型之一,允许无缝调用可以与您的 VPC 中的资源通信的 Lambda 函数。此功能开箱即用,无需客户进行额外配置-网关可以立即调用已配置为 VPC 访问权限的 Lambda 函数来访问您的内部资源,例如数据库、API 或其他服务。为保持安全最佳实践,强烈建议使用最低权限配置 AgentCore 网关执行角色,特别是将其限制为仅调用预期的 Lambda 函数,而不是授予广泛的 Lambda 执行权限。这种最小权限原则可确保网关或使用相同角色的任何其他调用方不会无意中调用意外的 Lambda 函数,从而减少您的安全攻击面并在您的环境中保持严格的访问控制。 AWS

私人身份提供商

AgentCore 现在支持为入站 JWT 授权和出站 OAuth 凭证提供商连接到私有 OAuth 身份提供商。这使您能够使用自托管( IdPs 例如 Keycloak)或在 VPC 内运行的其他 OIDC-compliant 授权服务器 PingFederate,而无需将其暴露给公共互联网。

有关详细的配置说明,请参阅连接您的 VPC 中的私有身份提供商。

或者,您可以使用拦截器 Lambda 函数进行入站身份验证,并覆盖拦截器 Lambda 中的授权标头以用于出站身份验证:

限制和注意事项

  • 需要入站授权:除非在网关上配置了拦截器 Lambda,否则配置为的网关目标privateEndpoint不能用NO_AUTH作入站授权方类型。

有关跨账户连接和 DNS TTL 配置的其他限制,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源中的限制和注意事项。