Atlas proporciona configuraciones de red seguras por defecto para sus implementaciones de la base de datos, tales como:
Obligatorio TLS/ Cifrado de la conexión SSL
VPCs para todos los proyectos con uno o más clústeres dedicados.
Autenticación que utiliza listas de acceso IP y solo acepta conexiones de bases de datos de fuentes que usted declara explícitamente
Puedes configurar aún más estas protecciones para satisfacer tus necesidades y preferencias únicas de seguridad.
Utilice las recomendaciones de esta página para planificar la configuración de seguridad de red de sus clústeres.
Funcionalidades para la seguridad de red de Atlas
Atlas aplica el cifrado TLS/SSL para todas las conexiones a sus bases de datos.
Recomendamos usar clústeres dedicados M10+ porque todos los proyectos de Atlas con uno o más clústeres dedicados M10+ reciben sus propios recursos dedicados:
VPC en AWS o Google Cloud.
VNet on Azure.
Atlas implementa todos los clústeres dedicados dentro de esta VPC o VNet.
Por defecto, se bloquea todo acceso a los clústeres. Debes permitir explícitamente una conexión entrante mediante uno de los siguientes métodos:
Agregue puntos finales privados, que Atlas agrega automáticamente a su lista de acceso IP. Ningún otro acceso se agrega automáticamente.
Utiliza el emparejamiento de VPC o VNet para agregar direcciones IP privadas.
Agregue direcciones IP públicas a su lista de acceso IP.
También puedes utilizar varios métodos juntos para mayor seguridad.
TLS
Atlas aplica el cifrado obligatorio TLS de las conexiones con tus bases de datos. TLS 1.2 es el protocolo por defecto. Para obtener más información, consulta el sitio Set Minimum TLS Protocol Version sección de Configure ajustes adicionales.
Listas de acceso IP
Como administrador de Atlas, usted puede:
Configura listas de acceso IP para limitar qué direcciones IP pueden intentar la autenticación en tu base de datos.
Permite el acceso solo desde las direcciones IP y los rangos de IP de bloque CIDR que agregues a tu lista de acceso IP. Se recomienda permitir el acceso a los segmentos de red más pequeños posibles, como un individuo /32 DIRECCIÓN.
Deniega el acceso de servidores de aplicaciones y otros clientes a tus clusters de Atlas si sus direcciones IP no están incluidas en tu lista de acceso IP.
Configura entradas temporales de la lista de acceso que expiran automáticamente después de un período definido por el usuario.
Configuración del firewall
Cuando te conectes desde los servidores de tu aplicación cliente a Atlas y pases por un cortafuegos que bloquea salidas de red, también debes configurar tu cortafuegos para permitir que tus aplicaciones realicen conexiones salientes al tráfico TCP en los hosts de Atlas. Esto concede a tus aplicaciones acceso a tus clústeres.
Las IP públicas del clúster de Atlas siguen siendo las mismas en la mayoría de los casos de cambios en el clúster como escalado vertical, cambios de topología o eventos de mantenimiento. Sin embargo, ciertos cambios en la topología, como una conversión de un set de réplicas a un clúster, la incorporación de particiones, o un cambio de región requieren que se utilicen nuevas direcciones IP.
En el caso de convertir de un set de réplicas a un clúster, no volver a conectar los clientes de la aplicación podría provocar que la misma sufra interrupciones de datos. Si utilizas una cadena de conexión de la lista de nodos iniciales DNS, tu aplicación se conecta automáticamente al mongos para tu clúster. Si usas una cadena de conexión estándar, debes actualizar tu cadena de conexión para reflejar tu nueva topología de clúster.
En el caso de añadir nuevas particiones, la imposibilidad de reconectar los clientes de la aplicación puede hacer que tu aplicación sufra una interrupción de datos.
Nodos privados
Un endpoint privado facilita una conexión unidireccional desde una VPC, que gestionas directamente, a tu VPC Atlas, sin permitir que Atlas inicie una conexión recíproca. Esto le permite utilizar conexiones seguras a Atlas sin ampliar su límite de confianza de red. Están disponibles los siguientes nodos privados:
Enlace privado de AWS, para conexiones desde AWS VPCs
Microsoft Azure Private Link, para conexiones desde VNets de Microsoft Azure
Conexión de servicio privado, para conexiones desde VPC deGoogle Cloud
Emparejamiento VPC/VNet
El emparejamiento de redes le permite conectar sus propios VPCcon una VPC Atlas para enrutar el tráfico de manera privada y aislar el flujo de datos de la Internet pública. Atlas asigna mapas de VPCuno a uno a proyectos Atlas.
La mayoría de las operaciones realizadas a través de una conexión VPC se originan en el entorno de su aplicación, lo que minimiza la necesidad de que Atlas realice solicitudes de acceso salientes a las VPCdel mismo nivel. Sin embargo, si configura Atlas para usar la autenticación LDAP, debe habilitarla para que se conecte de salida al punto final de autenticación de su VPC del mismo nivel mediante el protocolo LDAP. Tenga en cuenta que la autenticación LDAP está obsoleta en Atlas 8 0con.. Le recomendamos que utilice Workforce Identity Federation y Workload Identity Federation en su lugar.
Puede elegir su bloque CIDR de Atlas con el asistente de emparejamiento de VPC antes de implementar su primer clúster. El bloque CIDR de Atlas de VPC no debe solaparse con el bloque CIDR de ninguna VPC con la que desee emparejarse. Atlas limita el número de instancias de MongoDB por VPC según el bloque CIDR. Por ejemplo, un proyecto con un bloque CIDR de /24 está limitado al equivalente de 27 3conjuntos de réplicas de nodos.
Recomendaciones para la seguridad de la red Atlas
Las implementaciones de una sola región no tienen consideraciones únicas para la seguridad de red de Atlas.
Las implementaciones multirregionales protegidas con puntos finales privados tienen las siguientes consideraciones únicas:
Para nodos privados globales, Atlas genera automáticamente un registro SRV que apunta a todos los nodos de clúster de Atlas. El controlador de MongoDB intenta conectarse a cada registro SRV desde tu aplicación. Esto permite que el driver gestione un evento de failover sin esperar la replicación de DNS y sin requerir que actualices la cadena de conexión del driver.
Para facilitar la generación automática de registros SRV para todos los nodos en tu clúster de Atlas, debes establecer una conexión de emparejamiento VPC entre las VPCde tu aplicación y debes conectar tus VPCde aplicación a tu VPC de MongoDB usando PrivateLink o equivalente.
Debes habilitar nodos privados en cada región donde tengas un clúster Atlas implementado.
Google Cloud Private Service Connect es específico de la región. Sin embargo, puedes configurar el acceso global para acceder a nodos privados desde una región diferente.
Para aprender más, consulta Soporte Multiregión.
Todas las recomendaciones paradigmáticas de implementación
Las siguientes recomendaciones aplican a todos paradigmas de implementación.
Nodos privados
Le recomendamos que configure puntos finales privados para todos los nuevos proyectos de producción y ensayo para limitar la extensión del límite de confianza de su red.
En general, se recomienda utilizar nodos privados para cada Proyecto de Atlas, ya que este enfoque ofrece la seguridad más detallada y alivia la carga administrativa que puede derivarse de gestionar listas de acceso IP y bloques grandes de direcciones IP a medida que su red en la nube escala. Hay un costo asociado con cada punto final. Por lo tanto, es posible que no necesite nodos privados en entornos inferiores, pero debería aprovecharlos en entornos superiores para limitar la extensión del límite de confianza de su red.
Si las VPC o las VNet en las que se implementa tu aplicación no pueden emparejarse entre sí, posiblemente debido a una combinación de implementaciones on-premises y en la nube, tal vez quieras considerar un nodo privado regional.
Con nodos privados regionales, puedes hacer lo siguiente:
Conecte un único nodo privado a varias VNet o VPC sin emparejarlas directamente entre sí.
Mitigar fallos parciales de región en los que fallan uno o más servicios dentro de una región.
Para conectarse con puntos finales regionales, debe hacer lo siguiente:
Realice comprobaciones de estado periódicas y rigurosas para validar la conectividad y el funcionamiento correctos entre el clúster y la aplicación. Puede hacer ping al clúster con el comando
db.runCommand("ping")para confirmar la conectividad rápidamente o ejecutarrs.conf()para obtener información detallada sobre cada nodo del clúster.Utiliza una cadena de conexión distinta para cada región.
Utilice el enrutamiento entre regiones a Atlas para mantener la disponibilidad en caso de una desconexión de Atlas VPC.
Para obtener más información sobre los nodos privados en Atlas, incluidas las limitaciones y consideraciones, consulta Obtenga más información sobre los nodos privados en Atlas. Para aprender cómo configurar nodos privados para tus clústeres, consulta Configura un nodo privado para un clúster dedicado.
Orientaciones específicas del proveedor de nube
AWS: Recomendamos el emparejamiento VPC entre todas tus VPC autogestionadas que deben conectarse a Atlas. Aprovechar los nodos privados globales.
Azure: recomendamos emparejamiento VNet en todas sus VNets autogestionadas que necesiten conectarse a Atlas. Aproveche los nodos privados globales.
GCP: No es necesario el emparejamiento entre las VPC autogestionadas al usar GlobalConnect. Todas las regiones de Atlas deben estar interconectadas con nodos privados a tu VPC autogestionada en cada región.
Consideraciones y limitaciones de los puntos finales privados deGCP
Se accede a los servicios de Atlas a través de los puntos de conexión de servicio privado de GCP en los puertos a partir de 1024. Los puertos pueden cambiar en circunstancias específicas, incluyendo (entre otras) cambios en el clúster.
Private Service Connect de GCP debe estar activo en todas las regiones en las que implementes un clúster multiregional. Recibirás un error si Private Service Connect de GCP está activo en algunas, pero no en todas, las regiones de destino.
Para mantener un número manejable de cadenas de conexión almacenadas internamente que permitan a un driver conectarse a todos los nodos en un clúster multiregional, lo que se requiere para asegurar que el driver esté conectado a un nodo primario asignado dinámicamente dentro del clúster y, por lo tanto, pueda realizar todas las operaciones contra la base de datos, solo se puede hacer uno de los siguientes:
Implementar un nodo en más de una región y tener un nodo privado por región.
Ten varios nodos privados en una región y ningún otro nodo privado.
Importante
Esta limitación se aplica a todos los proveedores de nube. Por ejemplo, si creas más de un nodo privado en una sola región en GCP, no puedes crear nodos privados en AWS ni en ninguna otra región de GCP.
Para obtener más información, consulta ¿Por qué los endpoints regionalizados solo están disponibles para clústeres particionados?
En clústeres fragmentados, el tráfico entre nodos se enruta a través de procesos mongos, que están conectados a todos los nodos del clúster de forma predeterminada. Por lo tanto, puede crear cualquier número de puntos de conexión privados en una región determinada.Consulte (Opcional) Puntos de conexión privados regionalizados para clústeres fragmentados multirregionales para obtener más información.
Puede tener hasta 40 nodos cuando implemente proyectos de Atlas que utilicen GCP Private Service Connect en varias regiones. Este total excluye las siguientes instancias:
Las regiones de GCP se comunican entre sí
Clústeres gratuitos o clústeres compartidos
Los objetivos direccionables incluyen:
GCP Private Service Connect admite hasta 1024 conexiones salientes por máquina virtual. Como resultado, no puedes tener más de 1024 conexiones desde una sola GCP máquina virtual a un clúster Atlas.
Para obtener más información, consulta la GCP documentación de NAT de la nube.
GCP Private Service Connect es específico de cada región. Sin embargo, puedes configurar acceso global para acceder a nodos privados desde una región diferente.
Para aprender más, consulta Soporte Multiregión.
Listas de acceso IP
Recomendamos que configures una lista de acceso IP para tus claves API y acceso programático, de modo que permitas el acceso solo desde direcciones IP confiables, como tu pipeline de CI/CD o sistema de orquestación. Estas listas de acceso de IP se configuran en el plano de control de Atlas al aprovisionar una cuenta de servicio y son independientes de las listas de acceso de IP que se pueden configurar en el plano de datos del Proyecto de Atlas para conexiones a los clústeres.
Cuando configure su lista de acceso IP, le recomendamos que:
Utilice entradas temporales en la lista de acceso en situaciones en las que los miembros del equipo requieran acceso a su entorno desde ubicaciones de trabajo temporales o durante escenarios de emergencia, donde se necesite acceso de personas para resolver un escenario de caída en producción. Te recomendamos que crees un script de automatización para añadir rápidamente acceso temporal como preparación para estos incidentes.
Defina entradas de la lista de acceso IP que cubran los segmentos de red más pequeños posibles. Para ello, priorice las direcciones IP individuales siempre que sea posible y evite grandes bloques CIDR.
Emparejamiento VPC/VNet
Si configura el emparejamiento de VPC o VNet, le recomendamos que:
Para mantener límites estrictos de confianza en la red, configura grupos de seguridad y ACLs de red para evitar el acceso entrante a los sistemas dentro de tus VPCs de aplicaciones desde el lado de Atlas VPC.
Cree nuevas VPCpara que funcionen como intermediarias entre la infraestructura de aplicaciones confidenciales y sus VPCde Atlas. VPCson intransitivas, permitiéndote exponer solo aquellos componentes de tu aplicación que necesitan acceder a Atlas.
Ejemplos de automatización: Atlas Network Security
Los siguientes ejemplos configuran las conexiones entre su entorno de aplicación y sus clústeres Atlas utilizando listas de acceso IP, VPC emparejamiento y nodos privados.
Estos ejemplos también aplican otras configuraciones recomendadas, entre ellas:
El nivel de clúster está configurado en
M10para un entorno de desarrollo y pruebas. Consulta la guía de tamaño de clúster para conocer el nivel de clúster recomendado para el tamaño de tu aplicación.Topología de implementación de un solo set de réplicas/región con 3nodos y partición.
Nuestros ejemplos utilizan AWS, Azure y Google Cloud de manera intercambiable. Puedes usar cualquiera de estos tres proveedores de nube, pero debes cambiar el nombre de la región para que coincida con el proveedor de nube. Para conocer los proveedores de nube y sus regiones, consulta Proveedores de Nube.
Nivel de clúster establecido en
M30para una aplicación de tamaño mediano. Utiliza la guía de tamaños de clúster para conocer el nivel de clúster recomendado para el tamaño de tu aplicación.Topología de implementación de un solo set de réplicas/región con 3nodos y partición.
Nuestros ejemplos utilizan AWS, Azure y Google Cloud de manera intercambiable. Puedes usar cualquiera de estos tres proveedores de nube, pero debes cambiar el nombre de la región para que coincida con el proveedor de nube. Para conocer los proveedores de nube y sus regiones, consulta Proveedores de Nube.
Nota
Antes de que pueda configurar conexiones con la Atlas CLI, debe:
Crea tu organización pagadora y crea una clave de API para la organización pagadora.
Conéctese desde la Atlas CLI utilizando los pasos para Programmatic Use.
Crear una entrada de lista de acceso IP
Ejecute el siguiente comando para cada conexión que desee permitir. Modifique las entradas para usar las opciones adecuadas y sus valores reales:
atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json
Para más opciones de configuración e información sobre este ejemplo, consulta atlas accessLists create.
Para obtener información sobre cómo crear una entrada en la lista de acceso IP con AWS, GCP y Azure, consulta Configurar un endpoint privado para un clúster dedicado
Crear una conexión de peering de VPC
Ejecuta el siguiente código para cada VPC que quieras conectar a tu VPC de Atlas. Reemplaza aws por azure o gcp según corresponda, y cambia las opciones y valores a los adecuados para tu VPC o VNet:
atlas networking peering create aws --accountId 854333054055 --atlasCidrBlock 192.168.0.0/24 --region us-east-1 --routeTableCidrBlock 10.0.0.0/24 --vpcId vpc-078ac381aa90e1e63
Para obtener más opciones de configuración e información sobre este ejemplo, consulta:
Atlas networking emparejamiento create AWS, para AWS VPCs
atlas networking emparejamiento create azure, para VNets de Microsoft Azure
atlas networking emparejamiento create gcp, para Google Cloud VPCs
Crear un endpoint privado
Ejecuta el siguiente comando para cada nodos privados que desees crear. Reemplace aws por azure o gcp según corresponda, y cambie las opciones y los valores a los apropiados para el VPC o VNet:
atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json
Para obtener más opciones de configuración e información sobre este ejemplo, consulta:
atlas privateEndpoints aws create, para conexiones desde AWS VPC
atlas privateEndpoints azure create, para conexiones de Microsoft Azure VNets
atlas privateEndpoints gcp crear, para conexiones desde GCP Private Service Connect
Nota
Antes de poder crear recursos con Terraform, debe:
Crea tu organización pagadora y crea una clave de API para la organización pagadora. Guarde su clave API como variables de entorno ejecutando el siguiente comando en el terminal:
export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>" export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
También sugerimos crear un espacio de trabajo para tu entorno.
Crear una entrada de lista de acceso IP
Para añadir una entrada a tu lista de acceso IP, crea el siguiente archivo y colócalo en el directorio del proyecto al que deseas otorgar acceso. Cambia los ID y los nombres para utilizar tus valores:
Entrada de acceso para dirección1.tf
# Add an entry to your IP Access List resource "mongodbatlas_access_list_api_key" "address_1" { org_id = "<org-id>" ip_address = "2.3.4.5" api_key_id = "a29120e123cd" }
Después de crear los archivos, navega hasta el directorio de tu proyecto y ejecuta el siguiente comando para inicializar Terraform:
terraform init
Ejecute el siguiente comando para ver el plan de Terraform:
terraform plan
Ejecuta el siguiente comando para agregar una entrada a la lista de acceso IP para tu Proyecto. El comando utiliza el archivo y MongoDB y HashiCorp Terraform para agregar la entrada.
terraform apply
Cuando se le indique, escriba yes y presione Enter para aplicar la configuración.
Crear una conexión de peering de VPC
Para crear una conexión de emparejamiento entre su VPC de la aplicación y la VPC de Atlas, cree el siguiente archivo y colóquelo en el directorio del proyecto al que desea conceder acceso. Cambiar los IDs y nombres para usar sus valores:
vpcConnection.tf
# Define your application VPC resource "aws_default_vpc" "default" { tags = { Name = "Default VPC" } } # Create the peering connection request resource "mongodbatlas_network_peering" "mongo_peer" { accepter_region_name = "us-east-2" project_id = local.project_id container_id = one(values(mongodbatlas_advanced_cluster.test.container_id)) provider_name = "AWS" route_table_cidr_block = "172.31.0.0/16" vpc_id = aws_default_vpc.default.id aws_account_id = local.AWS_ACCOUNT_ID } # Accept the connection resource "aws_vpc_peering_connection_accepter" "aws_peer" { vpc_peering_connection_id = mongodbatlas_network_peering.mongo_peer.connection_id auto_accept = true tags = { Side = "Accepter" } }
Después de crear el archivo, navegue a su directorio de proyecto y ejecute el siguiente comando para inicializar Terraform:
terraform init
Ejecute el siguiente comando para ver el plan de Terraform:
terraform plan
Ejecute el siguiente comando para añadir una conexión de emparejamiento de VPC desde su aplicación a su proyecto. El comando utiliza el archivo y MongoDB & HashiCorp Terraform para añadir la entrada.
terraform apply
Cuando se le indique, escriba yes y presione Enter para aplicar la configuración.
Crear un enlace privado
Para crear un enlace privado desde la VPC de su aplicación a la VPC de Atlas, cree el siguiente archivo y colóquelo en el directorio del proyecto al que desea conectarse. Cambie los ID y los nombres para usar sus valores:
privateLink.tf
resource "mongodbatlas_privatelink_endpoint" "test" { project_id = "<project-id>" provider_name = "AWS/AZURE" region = "US_EAST_1" timeouts { create = "30m" delete = "20m" } }
Después de crear el archivo, navegue a su directorio de proyecto y ejecute el siguiente comando para inicializar Terraform:
terraform init
Ejecute el siguiente comando para ver el plan de Terraform:
terraform plan
Ejecute el siguiente comando para agregar un punto final de PrivateLink desde su aplicación a su proyecto. El comando usa el archivo y MongoDB y HashiCorp Terraform para agregar la entrada.
terraform apply
Cuando se le indique, escriba yes y presione Enter para aplicar la configuración.