使用 VPC 私有端点(预览)
您可以使用私有端点从虚拟私有云 (VPC) 内访问 Atlas App Services。 这是与Atlas App Services的私有连接,不Go公共互联网。 来自 VPC 外部的请求会返回 404
错误。
私有端点仅适用于本地部署到Atlas App Services 中某个地区的Amazon Web Services 应用程序。它们使用 连接到您的Amazon Web ServicesVPC AWS PrivateLink。要学习;了解详情,请参阅 什么是AWS PrivateLink ? 在Amazon Web Services 文档中。
App Services私有端点有两种:
常规:使用
services.cloud.mongodb.com
进行客户端 HTTP 请求的端点。同步:使用
services.cloud.mongodb.com
进行同步 WebSocket 连接的端点。
重要
私有端点不支持自定义HTTPS endpoints和Data API端点。
开始之前
收集以下信息:
您的VPCID ,您可以在 仪表盘盘中找到该 ID,也可以通过运行Amazon Web ServicesVPC describe-vpcs Amazon Web ServicesCLI中的命令。
您的 子网 ID ,您可以在Amazon Web ServicesVPC 仪表盘或通过运行 describe-subnets Amazon Web ServicesCLI中的命令。
为您的VPC设置私有托管区域。 为此,您需要VPC ID 。 使用 ModifyVpcAttribute 设立以下VPC属性设置为 true:
EnableDnsHostnames
EnableDnsSupport
您还必须安装并验证Amazon Web Services CLI 。
添加私有端点
您可以使用App Services用户界面或 Admin API添加新的常规端点或同步端点。
添加通用端点
创建VPC接口端点
在App Services用户界面中,导航到 App Settings ,然后单击Private Endpoints标签页。
单击 Add Private Endpoint,然后单击 General。
在各自的字段中添加VPC ID和子网 ID(逗号分隔列表),然后点击Next 。
复制生成的VPC Interface Endpoint Command 。 该命令应如下所示:
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids> 在终端中,执行生成的Amazon Web Services CLI命令以创建VPC端点。
将私有端点添加到您的应用程序
现在您已经在 VPC 中创建了接口端点,您需要将其添加到您的应用中。
在上一步中运行的 VPCID命令的输出中,或在CLIAmazon Web ServicesVPC 仪表盘的 端点详细信息 屏幕上,找到 Endpoint 。该值以
vpce-
开头。复制新VPC端点的ID并将其粘贴到App Services用户界面中的
Your VPC Endpoint ID
字段中,然后单击Next 。如果这是您创建的第一个私有端点,您将看到一个开关,您可以使用它来限制或开放 PrivateLink 连接之外的请求的所有访问权限。默认情况下,App Services 会阻塞 PrivateLink 连接之外的所有请求。此设置适用于该端点和您创建的所有其他端点。有关更多信息,请参阅更改访问限制。
单击 Finish Endpoint Creation(连接)。
创建VPC接口端点
调用列出VPC私有端点服务端点。
筛选响应对象以查找应用的部署地区和要创建的端点类型的条目。
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoint_service_infos \ -H "Authorization: Bearer <access_token>" [ { "cloud_provider_region": "aws-us-east-1", "service_name": "com.amazonaws.vpce.us-east-1.vpce-svc-0718bec2c0bdeab5c", "endpoint_type": "general" }, ... ] 从上一步中所需的条目中获取
service_name
字段。VPC使用Amazon Web ServicesCLI 创建 端点 create-vpc-endpoint 命令。您需要App Services端点服务名称、 VPC ID 、子网 ID 和Amazon Web Services部署地区。 该命令应如下所示:
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids>
将私有端点添加到您的应用程序
现在您已经在 VPC 中创建了接口端点,您需要将其添加到您的应用中。
在上一步中运行的 VPCID命令的输出中,或在CLIAmazon Web ServicesVPC 仪表盘的 端点详细信息 屏幕上,找到 Endpoint 。该值以
vpce-
开头。获得VPC端点的ID后,使用端点ID、云部署地区和端点类型调用创建VPC私有端点。 示例,使用
aws-us-east-1
:
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoints \ -X POST \ -H "Authorization: Bearer <accessToken>" \ -H "Content-Type: application/json" \ -d '{ "cloud_provider_region": "<your-cloud-deployment-region>", "cloud_provider_endpoint_id": "<your-vpc-endpoint-id>", "endpoint_type": "general", "comment": "Optional: add a comment describing the endpoint." }'
添加同步端点
每个同步端点都必须与一个通用端点配对。
创建VPC接口端点
在App Services用户界面中,导航到App Settings ,然后单击Private Endpoints标签页。
单击 Add Private Endpoint,然后单击 Sync。
在各自的字段中添加VPC ID和子网 ID(逗号分隔列表),然后点击Next 。
复制生成的VPC Interface Endpoint Command 。 该命令应如下所示:
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids> 在终端中,执行生成的Amazon Web Services CLI命令以创建VPC端点。
您还必须使用App Services生成的命令创建常规端点。
将私有端点添加到您的应用程序
现在您已经在 VPC 中创建了接口端点,您需要将它们添加到您的应用中。
在上一步中运行的 命令的输出中,或在 仪表盘的端点详细信息屏幕上,找到 Sync 和 GeneralVPC Endpoint IDs CLIAmazon Web ServicesVPC。该值以
vpce-
开头。复制新的VPC端点 ID,并将其粘贴到App Services用户界面中各自的
Your VPC Endpoint ID
字段中,然后单击Next 。如果这是您创建的第一个私有端点,您将看到一个开关,您可以使用它来限制或开放 PrivateLink 连接之外的请求的所有访问权限。默认情况下,App Services 会阻塞 PrivateLink 连接之外的所有请求。此设置适用于该端点和您创建的所有其他端点。有关更多信息,请参阅更改访问限制。
您还必须按照本页面上创建一般私有端点的步骤创建一般私有端点。
单击 Finish Endpoint Creation(连接)。
创建VPC接口端点
调用列出VPC私有端点服务端点。
筛选响应对象以查找应用的部署地区和要创建的端点类型的条目。
curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoint_service_infos \ -H "Authorization: Bearer <access_token>" [ { "cloud_provider_region": "aws-us-east-1", "service_name": "com.amazonaws.vpce.us-east-1.vpce-svc-0718bec2c0bdeab5c", "endpoint_type": "sync" }, ... ] 从上一步中所需的条目中获取
service_name
字段。VPC使用Amazon Web ServicesCLI 创建 端点 create-vpc-endpoint 命令。您需要App Services端点服务名称、 VPC ID 、子网 ID 和Amazon Web Services部署地区。 该命令应如下所示:
aws ec2 create-vpc-endpoint \ --vpc-endpoint-type Interface --service-name <App Services Endpoint Service Name> \ --vpc-id <your-vpc-id> \ --region <your-aws-deployment-region> \ --subnet-ids <your-subnet-ids>
将私有端点添加到您的应用程序
现在您已经在 VPC 中创建了接口端点,您需要将其添加到您的应用中。
在上一步中运行的 命令的输出中,或在 仪表盘的端点详细信息屏幕上,找到同步VPC 端点IDCLIAmazon Web ServicesVPC 。该值以
vpce-
开头。通过调用创建VPC私有端点及其端点ID、云部署地区和端点类型来创建同步私有端点。 示例,使用
aws-us-east-1
:curl https://services.cloud.mongodb.com/api/admin/v3.0/groups/{groupId}/apps/{appId}/security/private_endpoints \ -X POST \ -H "Authorization: Bearer <accessToken>" \ -H "Content-Type: application/json" \ -d '{ "cloud_provider_region": "<your-cloud-deployment-region>", "cloud_provider_endpoint_id": "<your-vpc-endpoint-id>", "endpoint_type": "sync", "comment": "Optional: add a comment describing the endpoint." }' 您还必须按照本页面上创建一般私有端点的步骤创建一般私有端点。
更改访问限制
默认情况下,所有私有端点仅处理内部请求。您可以选择开放 PrivateLink 连接之外的所有请求的访问。
重要
此设置对所有端点都是全局的。
您可以通过三种方式切换此设置:
在用户界面的Private Endpoints标签页的端点列表中,单击Restrict Access按钮。
在用户界面中,创建第一个私有端点时,您可以选择在Modify Your VPC Private DNS步骤中切换此设置。
在 Admin API中,使用布尔值调用“切换非VPC请求”(
true
可删除默认限制,false
可恢复默认限制。)
私有端点忽略 IP 访问列表
启用私有端点时,您仍然可以使用其他方法启用对App Services应用程序的访问权限,例如将公共 IP 添加到IP访问权限列表。
无需将私有 IP 添加到 IP 访问列表,因为通过私有端点的请求会忽略 IP 访问列表。
支持的 SDK 版本
Atlas Device SDK 可以访问权限常规端点和同步端点。 但是,它们必须使用支持新域的版本。
私有端点限制
您不能将私有端点与全球部署的应用程序或部署到 Azure 或 GCP 的本地应用程序一起使用。
如果启用了私有端点,则无法使用公共互联网连接访问权限您的应用程序。 所有请求都必须通过私有端点发出。
如果更改部署模型,则必须为应用程序的新地区创建新的私有端点。
您不能同时使用私有端点并允许通过MongoDB传输协议进行连接。 如果已启用其中一个,则无法启用另一个。
默认,私有端点仅处理源自VPC内部的请求。 您可以将应用配置为也接受来自公共互联网的请求。 要学习;了解如何操作,请参阅更改访问限制。
所有出站请求(例如App Services trigger调用外部API ) Go会通过公共互联网。