Atlas proporciona valores predeterminados de configuración de red seguros para sus implementaciones de bases de datos, como:
Obligatorio Cifrado de conexiónTLS/SSL
VPCpara 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
Puede configurar aún más estas protecciones para satisfacer sus necesidades y preferencias de seguridad únicas.
Utilice las recomendaciones de esta página para planificar la configuración de seguridad de red de sus clústeres.
Características de Atlas Network Security
Atlas aplica el cifradoTLS/SSL para todas las conexiones a sus bases de datos.
Recomendamos utilizar clústeres dedicados M10+, porque todos los proyectos Atlas con uno o más clústeres dedicados M10+ reciben sus propios clústeres dedicados:
VPC en AWS o Google Cloud.
Red virtual en Azure.
Atlas implementa todos los clústeres dedicados dentro de esta VPC o VNet.
De forma predeterminada, se bloquea todo acceso a los clústeres. Debe 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.
Utilice VPC o VNet peering 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 TLS obligatorio en las conexiones a sus bases de datos. TLS 1.2 es el protocolo predeterminado. Para obtener más información, consulte Set Minimum TLS Protocol Version sección de Configurar ajustes adicionales.
listas de acceso IP
Como administrador de Atlas, usted puede:
Configure listas de acceso IP para limitar qué direcciones IP pueden intentar autenticarse en su base de datos.
Permita el acceso solo desde las direcciones IP y los rangos de IP de bloque CIDR que agregue a su lista de acceso IP. Recomendamos permitir el acceso a los segmentos de red más pequeños posibles, como un segmento individual. /32 DIRECCIÓN.
Deniegue a los servidores de aplicaciones y a otros clientes el acceso a sus clústeres Atlas si sus direcciones IP no están incluidas en su lista de acceso IP.
Configure entradas de lista de acceso temporales que caduquen automáticamente después de un período definido por el usuario.
Configuración del firewall
Al conectarse desde los servidores de aplicaciones cliente a Atlas y atravesar un firewall que bloquea las conexiones de red salientes, también debe configurar el firewall para permitir que sus aplicaciones realicen conexiones salientes al tráfico TCP en los hosts de Atlas. Esto permite que sus aplicaciones accedan a sus clústeres.
Las direcciones IP públicas del clúster Atlas se mantienen en la mayoría de los casos de cambios en el clúster,como el escalamiento vertical, los cambiosde topología o los eventos de mantenimiento. Sin embargo, ciertos cambios de topología, como la conversión de un conjunto de réplicas a un clúster fragmentado, la adición de fragmentos o un cambio de región, requieren el uso de nuevas direcciones IP.
Al convertir un conjunto de réplicas a un clúster fragmentado, la imposibilidad de reconectar a los clientes de la aplicación podría provocar interrupciones de datos en la aplicación. Si utiliza una cadena de conexión de lista de semillas DNS, la aplicación se conectará automáticamente al del clúster fragmentado. Si utiliza una cadena de conexión estándar, debe actualizarla para reflejar la nueva topología del mongos clúster.
En el caso de agregar nuevos fragmentos, la falla en la reconexión de los clientes de la aplicación puede provocar que su aplicación sufra una interrupción de datos.
Nodos privados
Un punto final privado facilita una conexión unidireccional desde una VPC, que usted administra directamente, a su VPC de Atlas, sin permitir que Atlas inicie una conexión recíproca. Esto le permite usar conexiones seguras a Atlas sin ampliar el límite de confianza de su red. Están disponibles los siguientes puntos finales privados:
Microsoft Azure Private Link, para conexiones desde redes virtuales de Microsoft Azure
Conexión de servicio privado, para conexiones desde VPC deGoogle Cloud
Emparejamiento de VPC/VNet
El emparejamiento de red le permite conectar sus propias VPCcon una VPC de Atlas para enrutar el tráfico de forma privada y aislar el flujo de datos de la internet pública. Atlas asigna las VPCindividualmente a los proyectos de 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 la red Atlas.
Las implementaciones multirregionales protegidas con puntos finales privados tienen las siguientes consideraciones únicas:
Para los endpoints privados globales, Atlas genera automáticamente un registro SRV que apunta a todos los nodos del clúster Atlas. El controlador de MongoDB intenta conectarse a cada registro SRV desde la aplicación. Esto permite al controlador gestionar una conmutación por error sin esperar la replicación DNS ni requerir que actualice la cadena de conexión del controlador.
Para facilitar la generación automática de registros SRV para todos los nodos de su clúster Atlas, debe establecer una conexión de emparejamiento de VPC entre las VPCde su aplicación y debe conectar las VPCde su aplicación a su VPC de MongoDB mediante PrivateLink o equivalente.
Debe habilitar puntos finales privados en cada región donde tenga 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 del paradigma de implementación
Las siguientes recomendaciones se 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, recomendamos usar endpoints privados para cada proyecto de Atlas, ya que este enfoque proporciona la seguridad más granular y alivia la carga administrativa que puede derivar de la gestión de listas de acceso IP y grandes bloques de direcciones IP a medida que su red en la nube escala. Cada endpoint tiene un costo. Por lo tanto, es posible que no necesite endpoints privados en entornos de bajo nivel, pero debería aprovecharlos en entornos de alto nivel para limitar la extensión del límite de confianza de su red.
Si las VPC o VNets en las que está implementada su aplicación no pueden conectarse entre sí, posiblemente debido a una combinación de implementaciones locales y en la nube, es posible que desee considerar un punto final privado regional.
Con puntos finales privados regionales, puede hacer lo siguiente:
Conecte un único punto final privado a varias redes virtuales o VPC sin conectarlas directamente entre sí.
Mitigar fallas parciales de regiones en las que uno o más servicios dentro de una región fallan.
Para conectarse en red 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 puntos de conexión privados en Atlas, incluidas sus limitaciones y consideraciones, consulte Más información sobre los puntos de conexión privados en Atlas. Para saber cómo configurar puntos de conexión privados para sus clústeres, consulte Configurar un punto de conexión privado para un clúster dedicado.
Orientación específica para proveedores de nube
AWS: Recomendamos el peering de VPC entre todas sus VPC autogestionadas que necesiten conectarse a Atlas. Aproveche los puntos de conexión privados globales.
Azure: Recomendamos el emparejamiento de redes virtuales entre todas sus redes virtuales autoadministradas que necesiten conectarse a Atlas. Aproveche los puntos de conexión privados globales.
GCP: No se requiere el emparejamiento entre sus VPC autogestionadas al usar GlobalConnect. Todas las regiones de Atlas deben estar conectadas en red con puntos de conexión privados a su 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 una cantidad manejable de cadenas de conexión almacenadas internamente que permitan a un controlador conectarse a todos los nodos en un clúster multirregional, lo cual es necesario para garantizar que el controlador 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, puede realizar solo una de las siguientes acciones:
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 crea más de un punto de conexión privado en una sola región de GCP, no podrá crear puntos de conexión privados en AWS ni en ninguna otra región de GCP.
Para obtener más información, consulte ¿Por qué los puntos finales regionalizados solo están disponibles para clústeres fragmentados?
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.
Puedes tener hasta 40 nodos al implementar proyectos Atlas que usan GCP Private Service Connect en varias regiones. Este total excluye las siguientes instancias:
Regiones delGCP que 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. Por lo tanto, no se pueden tener más de 1024 conexiones desde una sola máquina virtual de GCP a un clúster de Atlas.
Para obtener más información, consulte la documentación de NAT en la nube de GCP.
GCP Private Service Connect es específico de cada región. Sin embargo, puedes configurar el acceso global para acceder a endpoints privados desde una región diferente.
Para aprender más, consulta Soporte Multiregión.
Listas de acceso IP
Le recomendamos configurar una lista de acceso IP para sus claves de API y acceso programático, a fin de permitir el acceso únicamente desde direcciones IP de confianza, como su canalización de CI/CD o su sistema de orquestación. Estas listas de acceso IP se configuran en el plano de control de Atlas al aprovisionar una cuenta de servicio y son independientes de las listas de acceso IP que se pueden configurar en el plano de datos del proyecto de Atlas para las conexiones a los clústeres.
Al configurar su lista de acceso IP, le recomendamos que:
Utilice las entradas de la lista de acceso temporal cuando los miembros del equipo necesiten acceder a su entorno desde ubicaciones de trabajo temporales o durante situaciones de emergencia donde se requiera acceso de personal a producción para resolver una interrupción de la producción. Le recomendamos crear un script de automatización para agregar rápidamente el acceso temporal y prepararse 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 de VPC/VNet
Si configura el emparejamiento de VPC o VNet, le recomendamos que:
Para mantener límites de confianza de red estrictos, configure grupos de seguridad y ACL de red para evitar el acceso entrante a los sistemas dentro de las VPC de su aplicación desde la VPC del lado Atlas.
Cree nuevas VPCpara que actúen como intermediarias entre la infraestructura de aplicaciones confidenciales y sus VPC deAtlas. LasVPCson intransitivas, lo que le permite exponer únicamente aquellos componentes de su aplicación que necesitan acceso a Atlas.
Ejemplos de automatización: Atlas Network Security
Los siguientes ejemplos configuran conexiones entre su entorno de aplicación y sus clústeres Atlas mediante listas de acceso IP, emparejamiento deVPC y puntos finales privados.
Estos ejemplos también se aplican a 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 conjunto de réplicas/fragmentos de región única y 3nodos.
Nuestros ejemplos utilizan AWS, Azure y Google Cloud indistintamente. Puede usar cualquiera de estos tres proveedores de nube, pero debe cambiar el nombre de la región para que coincida con el del proveedor. Para obtener más información sobre los proveedores de nube y sus regiones, consulte Proveedores de nube.
El nivel de clúster está configurado en
M30para una aplicación de tamaño mediano. Consulte la guía de tamaño de clúster para conocer el nivel de clúster recomendado para el tamaño de su aplicación.Topología de implementación de conjunto de réplicas/fragmentos de región única y 3nodos.
Nuestros ejemplos utilizan AWS, Azure y Google Cloud indistintamente. Puede usar cualquiera de estos tres proveedores de nube, pero debe cambiar el nombre de la región para que coincida con el del proveedor. Para obtener más información sobre los proveedores de nube y sus regiones, consulte Proveedores de nube.
Nota
Antes de poder configurar conexiones con la CLI de Atlas, debe:
Crea tu organización pagadora y crea una clave de API para la organización pagadora.
Conéctese desde la CLI de Atlas siguiendo los pasos Programmatic Use para.
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 obtener más opciones de configuración e información sobre este ejemplo, consulte atlas accessLists create.
Para obtener información sobre cómo crear una entrada de lista de acceso IP con AWS, GCP y Azure, consulte Configurar un punto de conexión privado para un clúster dedicado.
Crear una conexión de peering de VPC
Ejecute el siguiente código para cada VPC que desee conectar a su VPC de Atlas. Reemplace aws por azure o gcp según corresponda y modifique las opciones y los valores según su 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:
Creación de peering de redes Atlas en AWS para VPCde AWS
atlas networking emparejamiento create azure, para VNets de Microsoft Azure
Creación de interconexión de redes Atlas GCP para VPC deGoogle Cloud
Crear un punto final privado
Ejecute el siguiente comando para cada punto final privado que desee crear. Reemplace aws por azure o gcp según corresponda y modifique las opciones y los valores según los requisitos de su 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 desde redes virtuales de Microsoft Azure
atlas privateEndpoints gcp create, para conexiones desde GCP Private Service Connect
Nota
Antes de poder crear recursos con Terraform, debes:
Cree su organización pagadora y genere una clave API para ella. Guarde su clave API como variables de entorno ejecutando el siguiente comando en la 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 su entorno.
Crear una entrada de lista de acceso IP
Para agregar una entrada a su lista de acceso IP, cree el siguiente archivo y colóquelo en el directorio del proyecto al que desea otorgar acceso. Cambie los ID y los nombres para usar sus 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, navegue al directorio de su proyecto y ejecute 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 solicite, 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 al directorio de su 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 una conexión de emparejamiento de VPC 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 solicite, 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 al directorio de su 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 solicite, escriba yes y presione Enter para aplicar la configuración.