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.Sync: Endpoints that use
services.cloud.mongodb.comfor Sync WebSocket connections.
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úne 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
You can add a new General Endpoint or Sync Endpoint with the App Services UI or the Admin API.
Agregar un punto final general
Crear un endpoint de la 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 tu terminal, ejecuta el comando AWS CLI generado para crear un Endpoint de VPC.
Agregue el punto final privado a su aplicación
Ahora que has creado el endpoint de la interfaz en tu VPC, necesitas agregarlo a tu 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.Copy your new VPC Endpoint's ID and paste it into the
Your VPC Endpoint IDfield in the App Services UI, then click Next.Si este es el primer nodo privado que creas, verás un cambio que puedes usar para restringir o abrir el acceso desde solicitudes fuera de tu conexión PrivateLink. Por defecto, aplicación Services bloquea todas las solicitudes provenientes del exterior de tu conexión PrivateLink. Esta configuración se aplica a este endpoint y a todos los endpoints adicionales que crees. Consulta cambiar restricciones de acceso para más información.
Haga clic en Finish Endpoint Creation.
Crear un endpoint de la 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" }, ... ] Get the
service_namefield from the desired entry in the previous step.Crea un VPC Endpoint utilizando el AWS CLI create-vpc-endpoint comando. Necesitas un nombre de servicio de endpoint de App Services, ID de VPC, ID de subredes y región de implementación de AWS. El comando debería parecerse a lo siguiente:
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 has creado el endpoint de la interfaz en tu VPC, necesitas agregarlo a tu 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 tengas el ID de tu endpoint VPC, llama a Crear un endpoint privado de VPC con el ID del endpoint, la región de **implementación** en la nube y el tipo de endpoint. Por ejemplo, usando
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." }'
Agrega un endpoint de sincronización
Cada punto final de sincronización debe estar emparejado con un punto final general.
Crear un endpoint de la interfaz de VPC
In the App Services UI, navigate to App Settings and then click the Private Endpoints tab.
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 tu terminal, ejecuta el comando AWS CLI generado para crear un Endpoint de VPC.
También debes crear un endpoint general usando el comando que generan los Servicios de aplicación.
Agregue los puntos finales privados a su aplicación
Ahora que creaste los endpoints de la interfaz en tu VPC, debes agregarlos a tu 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.Copia tus nuevos IDs de Endpoint VPC y pégalos en su respectivo campo
Your VPC Endpoint IDen la Interfaz de usuario Realm, luego haz clic en Next.Si este es el primer nodo privado que creas, verás un cambio que puedes usar para restringir o abrir el acceso desde solicitudes fuera de tu conexión PrivateLink. Por defecto, aplicación Services bloquea todas las solicitudes provenientes del exterior de tu conexión PrivateLink. Esta configuración se aplica a este endpoint y a todos los endpoints adicionales que crees. Consulta cambiar restricciones de acceso para 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 endpoint de la 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" }, ... ] Get the
service_namefield from the desired entry in the previous step.Crea un VPC Endpoint utilizando el AWS CLI create-vpc-endpoint comando. Necesitas un nombre de servicio de endpoint de App Services, ID de VPC, ID de subredes y región de implementación de AWS. El comando debería parecerse a lo siguiente:
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 has creado el endpoint de la interfaz en tu VPC, necesitas agregarlo a tu aplicación.
Encuentra el ID de punto final VPC sincronizar, ya sea en la salida de los comandos CLI que ejecutaste en el paso anterior o en la pantalla de detalles del punto final en el tablero de AWS VPC. Este valor se inicia con
vpce-.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.
Change Access Restrictions
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 nodos privados ignoran las listas de acceso IP
Cuando habilite los nodos privados, aún puede habilitar el acceso a su aplicación App Services utilizando otros métodos, como agregando IP públicas a listas de acceso 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
The Atlas Device SDKs can access your General and Sync endpoints. However, they must use a version that supports the new domain.
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.
If you change your deployment model, then you must create new Private Endpoints for the App's new region.
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.
Por defecto, los nodos privados sólo gestionan solicitudes que se originan dentro de tu VPC. Puedes configurar tu aplicación para aceptar solicitudes también desde internet público. Para aprender cómo, consulta Cambiar restricciones de acceso.
Todas las solicitudes salientes, como un activador de App Services que llama a una API externa, pasan por Internet público.