Puede usar un punto de conexión privado para acceder a Atlas App Services desde su nube virtual privada (VPC). Se trata de una conexión privada a Atlas App Services que no se conecta a través de la red pública de internet. Las solicitudes externas a su VPC devuelven un... 404 error.
Los puntos de conexión privados solo están disponibles para las aplicaciones de Atlas App Services implementadas localmente en una región de AWS. Se conectan a su VPC de AWS mediante AWS PrivateLink. Para obtener más información, consulte ¿Qué es AWS PrivateLink? en la documentación de AWS.
Hay dos tipos de puntos finales privados de App Services:
General: Puntos finales que utilizan
services.cloud.mongodb.compara solicitudes HTTP del cliente.Sincronización: puntos finales que utilizan
services.cloud.mongodb.compara conexiones WebSocket de sincronización.
Importante
Los puntos finales HTTPS personalizados y los puntos finales de API de datos no son compatibles con puntos finales privados.
Antes de comenzar
Reúna la siguiente información:
Su ID de VPC, que puede encontrar en el panel de AWS VPC o ejecutando el comando describe-vpcs en la CLI de AWS.
Sus ID de subred, que puede encontrar en el panel de AWS VPC o ejecutando el comando describe-subnets en la AWS CLI.
Configure una zona alojada privada para su VPC. Necesita su ID de VPC para esto. Utilice ModifyVpcAttribute para establecer los siguientes atributos de VPC como verdaderos:
EnableDnsHostnamesEnableDnsSupport
También debe instalar y autenticar la AWS CLI.
Agregar un punto final privado
Puede agregar un nuevo punto final general o un punto final de sincronización con la interfaz de usuario de App Services o la API de administración.
Agregar un punto final general
Crear un punto final de interfaz de VPC
En la interfaz de usuario de App Services, navegue hasta App Settings, luego haga clic en la pestaña Private Endpoints.
Hacer clic en Add Private Endpoint, luego hacer clic en General.
Agregue su ID de VPC y las ID de subred (lista separada por comas) en sus campos separados, luego haga clic en Next.
Copia el VPC Interface Endpoint Command generado. El comando debería ser similar a esto:
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> En su terminal, ejecute el comando AWS CLI generado para crear un punto final de VPC.
Agregue el punto final privado a su aplicación
Ahora que ha creado el punto final de la interfaz en su VPC, debe agregarlo a su aplicación.
Busque el ID del punto de conexión de la VPC, ya sea en la salida del comando CLI que ejecutó en el paso anterior o en la pantalla de detalles del punto de conexión del panel de AWS VPC. Este valor empieza
vpce-por.Copie el ID de su nuevo punto final de VPC y péguelo en el campo
Your VPC Endpoint IDen la interfaz de usuario de App Services, luego haga clic en Next.Si este es el primer punto de conexión privado que crea, verá un interruptor que puede usar para restringir o habilitar el acceso a solicitudes externas a su conexión PrivateLink. De forma predeterminada, App Services bloquea todas las solicitudes externas a su conexión PrivateLink. Esta configuración se aplica a este punto de conexión y a todos los demás que cree. Consulte "Cambiar las restricciones de acceso" para obtener más información.
Haga clic en Finish Endpoint Creation.
Crear un punto final de interfaz de VPC
Llame al punto final de servicios de punto final privado de VPC de lista.
Filtra el objeto de respuesta para encontrar la entrada correspondiente a la región de implementación de tu aplicación y al tipo de endpoint que deseas crear.
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" }, ... ] Obtenga el campo
service_namede la entrada deseada en el paso anterior.Cree un punto de conexión de VPC con el comando create-vpc-endpoint de la AWS CLI. Necesitará un nombre de servicio de punto de conexión de App Services, un ID de VPC, ID de subred y una región de implementación de AWS. El comando debería ser similar a este:
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>
Agregue el punto final privado a su aplicación
Ahora que ha creado el punto final de la interfaz en su VPC, debe agregarlo a su aplicación.
Busque el ID del punto de conexión de la VPC, ya sea en la salida del comando CLI que ejecutó en el paso anterior o en la pantalla de detalles del punto de conexión del panel de AWS VPC. Este valor empieza
vpce-por.Cuando tenga el ID de su punto de conexión de VPC, ejecute "Crear un punto de conexión privado de VPC" con el ID de punto de conexión, la región de implementación en la nube y el tipo de punto de conexión. Por ejemplo,
aws-us-east-1usando:
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." }'
Agrega un endpoint de sincronización
Cada punto final de sincronización debe estar emparejado con un punto final general.
Crear un punto final de interfaz de VPC
En la interfaz de usuario de App Services, navegue hasta App Settings y luego haga clic en la pestaña Private Endpoints.
Hacer clic en Add Private Endpoint, luego hacer clic en Sync.
Agregue su ID de VPC y las ID de subred (lista separada por comas) en sus campos separados, luego haga clic en Next.
Copia el VPC Interface Endpoint Command generado. El comando debería ser similar a esto:
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> En su terminal, ejecute el comando AWS CLI generado para crear un punto final de VPC.
También debe crear un punto final general utilizando el comando que genera App Services.
Agregue los puntos finales privados a su aplicación
Ahora que ha creado los puntos finales de la interfaz en su VPC, debe agregarlos a su aplicación.
Busque los ID de los puntos de conexión de sincronización y generales de VPC, ya sea en la salida de los comandos de la CLI que ejecutó en el paso anterior o en la pantalla de detalles del punto de conexión del panel de AWS VPC. Este valor empieza
vpce-por.Copie los nuevos ID de punto final de VPC y péguelos en el campo
Your VPC Endpoint IDcorrespondiente en la interfaz de usuario de App Services, luego haga clic en Next.Si este es el primer punto de conexión privado que crea, verá un interruptor que puede usar para restringir o habilitar el acceso a solicitudes externas a su conexión PrivateLink. De forma predeterminada, App Services bloquea todas las solicitudes externas a su conexión PrivateLink. Esta configuración se aplica a este punto de conexión y a todos los demás que cree. Consulte "Cambiar las restricciones de acceso" para obtener más información.
También debe crear un punto final privado general siguiendo los pasos para crear un punto final privado general en esta página.
Haga clic en Finish Endpoint Creation.
Crear un punto final de interfaz de VPC
Llame al punto final de servicios de punto final privado de VPC de lista.
Filtra el objeto de respuesta para encontrar la entrada correspondiente a la región de implementación de tu aplicación y al tipo de endpoint que deseas crear.
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" }, ... ] Obtenga el campo
service_namede la entrada deseada en el paso anterior.Cree un punto de conexión de VPC con el comando create-vpc-endpoint de la AWS CLI. Necesitará un nombre de servicio de punto de conexión de App Services, un ID de VPC, ID de subred y una región de implementación de AWS. El comando debería ser similar a este:
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>
Agregue el punto final privado a su aplicación
Ahora que ha creado el punto final de la interfaz en su VPC, debe agregarlo a su aplicación.
Busque el ID del punto de conexión de sincronización de VPC, ya sea en la salida de los comandos de la CLI que ejecutó en el paso anterior o en la pantalla de detalles del punto de conexión del panel de AWS VPC. Este valor empieza
vpce-por.Cree un punto de conexión privado de sincronización llamando a "Crear un punto de conexión privado de VPC" con su ID de punto de conexión, región de implementación en la nube y tipo de punto de conexión. Por ejemplo,
aws-us-east-1usando: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." }' También debe crear un punto final privado general siguiendo los pasos para crear un punto final privado general en esta página.
Cambiar restricciones de acceso
De forma predeterminada, todos los puntos de conexión privados solo gestionan solicitudes internas. Puede optar por permitir el acceso a todas las solicitudes externas a su conexión PrivateLink.
Importante
Esta configuración es global para todos sus puntos finales.
Puede alternar esta configuración de tres maneras:
En la interfaz de usuario, desde la lista de endpoints en la pestaña Private Endpoints, haz clic en el botón Restrict Access.
En la interfaz de usuario, al crear su primer punto final privado, tiene la opción de alternar esta configuración en el paso Modify Your VPC Private DNS.
En la API de administración, llama a Alternar solicitudes que no sean VPC con un valor booleano (
truepara remover la restricción por defecto, ofalsepara restablecerla).
Los puntos finales privados ignoran las listas de acceso IP
Cuando habilita puntos finales privados, aún puede habilitar el acceso a su aplicación de App Services mediante otros métodos, como agregar IP públicas a las listas de acceso de IP.
No es necesario agregar direcciones IP privadas a las listas de acceso de IP, ya que las solicitudes a través de puntos finales privados ignoran las listas de acceso de IP.
Versiones del SDK compatibles
Los SDK de dispositivos Atlas pueden acceder a sus puntos finales generales y de sincronización. Sin embargo, deben usar una versión compatible con el nuevo dominio.
Limitaciones de los puntos finales privados
No puedes usar nodos privados con apps desplegadas de manera global o apps locales desplegadas en Azure o GCP.
No puedes usar conexiones públicas a internet para acceder a tu aplicación si tienes habilitado un punto de conexión privado. Todas las solicitudes deben pasar por él.
Si cambia su modelo de implementación, deberá crear nuevos puntos finales privados para la nueva región de la aplicación.
No se pueden usar puntos de conexión privados y permitir conexiones mediante el protocolo de conexión MongoDB simultáneamente. Si uno está habilitado, no se puede habilitar el otro.
De forma predeterminada, los puntos de conexión privados solo gestionan las solicitudes que se originan dentro de su VPC. Puede configurar su aplicación para que también acepte solicitudes de la red pública de internet. Para saber cómo, consulte Cambiar las restricciones de acceso.
Todas las solicitudes salientes, como un activador de App Services que llama a una API externa, pasan por Internet público.