View a markdown version of this page

設定閘道目標的 Amazon Bedrock AgentCore Gateway VPC 輸出 - Amazon Bedrock AgentCore

設定閘道目標的 Amazon Bedrock AgentCore Gateway VPC 輸出

AgentCore Gateway 服務為您的應用程式提供安全且受控制的輸出流量管理,可讓您與 Virtual Private Cloud (VPC) 中的資源進行無縫通訊。本文件概述輸出流量如何流經 AgentCore Gateway 以到達 VPC 資源。您將了解支援的閘道目標類型 (透過 AgentCore 執行期的 Lambda、API Gateway 和 MCP 伺服器)、其組態需求,以及每個目標類型支援的身分驗證方法。本指南涵蓋啟用適當輸出流量所需的安全考量、路由機制和最佳實務,同時保持網路隔離並遵循整個架構的最低權限原則。

MCP

AgentCore Gateway 支援模型內容通訊協定 (MCP) 伺服器作為目標端點,提供靈活的部署選項以滿足各種客戶需求。根據您的基礎設施需求和安全需求,MCP 伺服器可以透過多種方式設定。

您的 MCP 目標有兩種類型:不在 AgentCore 上託管,或在 AgentCore 執行期或閘道上託管。我們討論以下兩者。

AgentCore 上未託管MCPs

AgentCore Gateway 支援使用由 Amazon VPC Lattice 提供支援的私有端點連線至 VPC 內執行的自我託管 MCP 伺服器。您可以在閘道目標privateEndpoint上設定 ,將流量私下路由至 MCP 伺服器,而不將其公開至公有網際網路。

下列範例使用 受管 Lattice 建立私有 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 憑證的內部 Application Load Balancer 放在其前面。如需詳細資訊,請參閱私有憑證的因應措施:ALB

如需自我管理的 Lattice、跨帳戶設定和進階組態,請參閱使用 VPC Lattice 連線至 VPC 中的私有資源

AgentCore 執行期或閘道

AgentCore 執行期提供原生支援,以透過受管基礎設施方法與 VPC 內的資源進行通訊。AgentCore Gateway 和 AgentCore Runtime 之間的所有通訊都會保持在 AWS 骨幹上,確保您的資料永遠不會周遊公有網際網路 (對中國資料中心的跨區域呼叫除外)。如需詳細資訊,請參閱 Amazon VPC FAQs中的連線一節。如需將 AgentCore 執行期連接至 VPC 的詳細設定說明,請參閱設定 Amazon Bedrock AgentCore 執行期和 VPC 的工具

對於從 AgentCore Gateway 到 AgentCore 執行期的傳出授權,支援兩種身分驗證方法:不授權 (不建議用於生產用途) 和使用用戶端憑證授予的 OAuth (用於machine-to-machine身分驗證)。未設定授權時,從 AgentCore Gateway 到 AgentCore 執行期的請求沒有身分驗證字符。此架構提供無縫連線路徑,同時維持安全隔離。作為安全最佳實務,請為 AgentCore 執行期和 AgentCore Gateway 設定限制性身分驗證和授權許可,僅限存取特定使用案例所需的必要資源和操作。若要設定 AgentCore Gateway 用於 AgentCore 執行期的輸出和傳入的 OAuth 身分,請使用下列文件:

顯示 AgentCore Gateway 無法連線至 Private Link 端點的架構圖。

以 AgentCore 執行期做為目標的 CreateGatewayTarget 範例

下列範例示範如何使用 AgentCore 執行期建立閘道目標:

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) URLprivateEndpoint,以防止不必要的額外網路跳轉。請改用直接 AgentCore 執行期端點,其中流量會保留在 AWS 骨幹上。

開啟 API 目標

透過 Open API Target 的 API Gateway 端點

如果您的 API Gateway 無法直接新增為目標,您一律可以將資源匯出為 OpenAPI 規格,並將規格匯入 AgentCore Gateway 做為 OpenAPI 目標。

如果您在 API Gateway 中有 Private REST APIs,請遵循以下指示:APIs中的 Private REST API

其他端點

您可以使用 privateEndpoint組態將 Open API 目標設定為到達 VPC 內的私有端點。AgentCore Gateway 使用 Amazon VPC Lattice 建立端點的私有連線,而不會將其公開至公有網際網路。

下列範例使用受管 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 憑證的內部 Application Load Balancer 放在其前面。如需詳細資訊,請參閱私有憑證的因應措施:ALB

如需自我管理的 Lattice、跨帳戶設定和進階組態,請參閱使用 VPC Lattice 連線至 VPC 中的私有資源

注意

privateEndpoint組態適用於 OpenAPI 結構描述中的單一網域。如果您的結構描述參考具有不同網域的多個伺服器端點,請開啟AWS 支援案例以請求對 的支援privateEndpointOverrides

Smithy 目標

Smithy privateEndpoint 目標目前不支援私有端點 () 組態。如果您的 Smithy 目標需要私有連線,請開啟AWS 支援案例以請求支援。

API Gateway

AgentCore Gateway 支援 API Gateway 做為目標類型,可做為存取 VPC 資源的中介層。AgentCore Gateway 特別支援僅使用區域端點設定的 REST API Gateway。雖然目前無法使用來自閘道的直接 VPC 通訊 (此功能計劃用於未來版本),但閘道會透過 AWS 骨幹與 API Gateway 通訊,確保流量永遠不會周遊公有網際網路 (對中國資料中心的跨區域呼叫除外)。然後,API Gateway 可以使用 VPC Link 與資源通訊,為 AgentCore Gateway 建立安全途徑,以連接內部服務,同時保持網路隔離。

若要實作安全最佳實務,請將您的 API Gateway 設定為僅將傳入流量限制為 AgentCore Gateway 服務主體或設定的 API 金鑰,以防止來自其他來源的未經授權存取。對於從 AgentCore Gateway 到 API Gateway 的傳出授權,僅支援兩種身分驗證方法:IAM 型身分驗證 (使用閘道服務角色與 AWS Signature 第 4 版進行身分驗證) 和 API 金鑰身分驗證 (由 AgentCore Gateway 管理);API Gateway 目標不支援 OAuth 型授權和跨帳戶 API Gateway,請透過開放 API 目標使用 API Gateway 端點。限制 AgentCore Gateway 執行角色許可,只叫用所需的特定 API Gateway 端點,而不是授予廣泛的 API Gateway 存取權,確保閘道無法與意外的 API 資源互動,並在整個架構中維護最低權限原則。

Amazon API Gateway REST API 階段作為目標

使用 IAM Auth 進行 API Gateway 整合的許可

API Gateway 資源政策鎖定至 AgentCore Gateway

下列資源政策限制 API Gateway 對 AgentCore Gateway 的存取:

{ "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 Gateway 執行角色政策

下列政策授予閘道叫用 API Gateway 的許可:

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

AgentCore Gateway 執行角色信任政策

下列信任政策允許 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 Gateway 目標。不過,您可以將私有 API Gateway 匯出為 OpenAPI 結構描述,並使用具有該結構描述的 Open API 目標,並以 privateEndpoint 設定。將 routingDomain設定為您的 API Gateway 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 中的私有資源

Lambda

AgentCore Gateway 支援 Lambda 目標作為其目標類型之一,允許無縫叫用 Lambda 函數,這些函數可以與 VPC 中的資源通訊。此功能現out-of-the-box,不需要客戶進行額外的組態 - 閘道可以立即調用已設定 VPC 存取的 Lambda 函數,以存取您的內部資源,例如資料庫、APIs 或其他 服務。為了維護安全最佳實務,強烈建議以最少的許可設定 AgentCore Gateway 執行角色,特別是限制它只叫用預期的 Lambda 函數,而不是授予廣泛的 Lambda 執行許可。此最低權限原則可確保閘道或任何其他使用相同角色的呼叫者不會不小心叫用非預期的 Lambda 函數,進而減少安全攻擊面,並在 AWS 您的環境中維持嚴格的存取控制。

私有身分提供者

AgentCore 現在支援連線至傳入 JWT 授權和傳出 OAuth 憑證提供者的私有 OAuth 身分提供者。這可讓您使用自我託管IdPs,例如 Keycloak、PingFederate,或在 VPC 內執行的其他 OIDC 相容授權伺服器,而無需將其公開至公有網際網路。

如需詳細組態指示,請參閱連線至 VPC 中的私有身分提供者

或者,您可以使用攔截器 Lambda 函數進行傳入身分驗證,並覆寫攔截器 Lambda 中的授權標頭,以搭配傳出身分驗證使用:

限制及考量

  • 需要傳入授權 :使用 設定的閘道目標privateEndpoint無法使用 NO_AUTH做為傳入授權方類型,除非閘道上已設定攔截器 Lambda。

如需有關跨帳戶連線和 DNS TTL 組態的其他限制,請參閱使用 VPC Lattice 連線至 VPC 中的私有資源中的限制和考量