Orientações para Segurança de Rede do Atlas
Nesta página
- Recursos do Atlas Network Security
- TLS
- Listas de acesso IP
- Configuração de firewall
- Endpoints privados
- Emparelhamento de VPC/VNet
- Recomendações para Atlas Network Security
- Endpoints privados
- Listas de acesso IP
- Emparelhamento de VPC/VNet
- Exemplos de Automação: Segurança de Rede do Atlas
- Criar uma entrada de lista de acesso IP
- Criar uma conexão de emparelhamento VPC
- Criar um endpoint privado
O Atlas fornece padrões de configuração de rede seguros para seus sistemas de banco de dados , como:
Criptografia de conexão TLS/SSL obrigatória
VPCs para todos os projetos com um ou mais clusters dedicados
Autenticação que usa listas de acesso IP e aceita apenas conexões de fontes que você declarar explicitamente
Você pode configurar ainda mais essas proteções para atender às suas necessidades e preferências exclusivas de segurança.
Use as recomendações desta página para planejar a configuração de segurança de rede dos seus clusters.
Recursos do Atlas Network Security
O Atlas impõe criptografia TLS/SSL para todas as conexões com seus bancos de dados.
Recomendamos o uso de clusters dedicados M10+ porque todos os projetos do Atlas com um ou mais clusters dedicados M10+ recebem sua própria VPC dedicada no AWS ou no Google Cloud. - VNet no Azure.
O Atlas distribui todos os clusters dedicados dentro deste VPC ou VNet.
Por padrão, todo acesso aos seus clusters é bloqueado. Você deve permitir explicitamente uma conexão de entrada por um dos seguintes métodos:
Adicionar endereços IP públicos à sua lista de acesso IP.
Use emparelhamento VPC/VNet para adicionar endereços IP privados.
Adicione endpoints privados, que o Atlas adiciona automaticamente à sua lista de acesso IP. Nenhum outro acesso é adicionado automaticamente.
Você também pode usar vários métodos juntos para aumentar a segurança.
TLS
O Atlas força a criptografia TLS obrigatória das conexões com seus bancos de dados. TLS 1.2 é o protocolo padrão. Para saber mais, consulte a seção Set Minimum TLS Protocol Version de Configurar Configurações Adicionais.
Listas de acesso IP
Como administrador do Atlas, você pode:
Você pode configurar listas de acesso IP para restringir quais endereços IP podem tentar a autenticação no seu banco de dados.
Seus clusters do Atlas permitem o acesso somente a partir dos endereços IP e intervalos de IP do bloco CIDR que você adiciona à sua lista de acesso IP. Os servidores de aplicativos e outros clientes não poderão acessar seus Atlas clusters se seus endereços IP não estiverem incluídos na sua lista de acesso IP.
Você pode configurar entradas de lista de acesso temporárias que expiram automaticamente após um período definido pelo usuário.
Configuração de firewall
Ao se conectar dos servidores de aplicação do cliente ao Atlas e passar por um firewall que bloqueia conexões de rede de saída, você também deve configurar o firewall para permitir que seus aplicativos façam conexões de saída com o tráfego TCP nos hosts do Atlas . Isso concede aos seus aplicativos acesso aos seus clusters.
Os IPs públicos do cluster Atlas permanecem inalterados na maioria dos casos de mudanças no cluster, como dimensionamento vertical, mudanças na topologia ou eventos de manutenção. No entanto, certas alterações de topologia, como a conversão de um conjunto de réplicas para um cluster fragmentado, a adição de fragmentos ou uma mudança de região exigem que você use novos endereços IP.
No caso de converter de um conjunto de réplicas para um cluster fragmentado, a falha em reconectar os clientes do aplicação pode fazer com que seu aplicação sofra interrupções de dados. Se você usar uma string de conexão de lista de sementes de DNS, seu aplicação se conectará automaticamente ao mongos
para o cluster fragmentado. Se você utilizar uma string de conexão padrão , deverá atualizar sua string de conexão para refletir sua nova topologia de cluster .
No caso de adicionar novos shards, a falha em reconectar os clientes do aplicação pode fazer com que seu aplicação sofra uma interrupção de dados.
Endpoints privados
Um endpoint privado facilita uma conexão unidirecional de sua própria VPC para sua VPC do Atlas, sem permitir que o Atlas inicie uma conexão recíproca. Isso permite que você use conexões seguras com o Atlas sem estender seu limite de confiança de rede. Os seguintes endpoints privados estão disponíveis:
AWS PrivateLink, para conexões de AWS VPC
Link privado do Microsoft Azure , para conexões do Microsoft Azure VNets
Private Service Connect, para conexões a partir de VPCs da Google Cloud Platform
Emparelhamento de VPC/VNet
O emparelhamento de rede permite que você conecte suas próprias VPCsa um VPC do Atlas para rotear o tráfego de forma privada e isolar seu fluxo de dados da Internet pública. O Atlas mapeia VPCsum a um para os projetos Atlas.
A maioria das operações realizadas em uma conexão VPC se origina do seu ambiente de aplicativo, minimizando a necessidade de o Atlas fazer solicitações de acesso de saída para VPCs pares. No entanto, se você configurar o Atlas para usar a autenticação LDAP, deverá habilitar o Atlas para se conectar ao ponto de extremidade de autenticação da sua VPC par pelo protocolo LDAP. Observe que a autenticação LDAP está obsoleta no Atlas com 8.0. Recomendamos que você use o Workforce Identity Federation e o Workload Identity Federation em vez disso.
Você pode escolher seu bloco CIDR do Atlas com o assistente de emparelhamento da VPC antes de distribuir seu primeiro cluster. O bloco CIDR do Atlas VPC não deve se sobrepor ao bloco CIDR de nenhuma VPC com a qual você pretende fazer o peering. O Atlas limita o número de instâncias do MongoDB por VPC com base no bloco CIDR. Por exemplo, um projeto com um bloco CIDR de /24
é limitado ao equivalente a 27 conjuntos de réplicas de 3nós.
Recomendações para Atlas Network Security
Endpoints privados
Recomendamos que você configure pontos de extremidade privados para todos os novos projetos de staging e produção para limitar a extensão do limite de confiança da sua rede.
Em geral, recomendamos o uso de pontos de extremidade privados para cada projeto Atlas, pois eles fornecem a segurança mais granular e facilitam a carga administrativa que pode surgir do gerenciamento de listas de acesso IP e grandes blocos de endereços IP à medida que sua rede na nuvem se expande. Existe um custo associado a cada ponto de extremidade, então você pode considerar não exigir pontos de extremidade privados em ambientes de desenvolvimento, mas deve utilizá-los em ambientes de produção para limitar a extensão do limite de confiança da sua rede.
Para saber mais sobre pontos de extremidade privados no Atlas, incluindo limitações e considerações, consulte Saiba mais sobre pontos de extremidade privados no Atlas. Para saber como configurar endpoints privados para seus clusters, consulte Configurar um endpoint privado para um cluster dedicado.
Listas de acesso IP
Recomendamos que você configure uma lista de acesso IP para suas chaves de API e acesso programático para permitir o acesso somente de endereços IP confiáveis, como pipeline de CI/CD ou sistema de orquestração. Essas listas de acesso IP são definidas no plano de controle do Atlas após o provisionamento de uma conta de serviço e são separadas das listas de acesso IP que podem ser definidas no plano de dados do projeto Atlas para conexões com os clusters.
Ao configurar sua lista de acesso IP, recomendamos que você:
Utilize entradas temporárias na lista de acesso em situações onde os membros da equipe necessitam acessar seu ambiente a partir de locais de trabalho temporários ou durante cenários de emergência, onde o acesso humano à produção é necessário para resolver um cenário de interrupção de produção. Recomendamos que você desenvolva um script de automação para adicionar rapidamente acesso temporário e se preparar para esses incidentes.
Defina entradas da lista de acesso IP que cubram os menores segmentos de rede possíveis. Para fazer isso, favoreça endereços IP individuais sempre que possível e evite grandes blocos CIDR.
Emparelhamento de VPC/VNet
Se você configurar o emparelhamento VPC ou VNet, recomendamos que:
Para manter limites de confiança de rede rígidos, configure grupos de segurança e ACLs de rede para evitar o acesso de entrada a sistemas dentro de suas VPCsde aplicativo a partir das VPCs do lado do Atlas.
Crie novas VPCspara atuar como intermediárias entre a infraestrutura de aplicativo sensíveis e suas VPCsdo Atlas. As VPCssão intransitivas, permitindo que você exponha apenas os componentes do seu aplicativo que precisam de acesso ao Atlas.
Exemplos de Automação: Segurança de Rede do Atlas
Veja exemplos do Terraform para aplicar nossas recomendações de Staging/Prod em todos os pilares em um só lugar no Github.
Os exemplos a seguir configuram conexões entre seu ambiente do aplicação e seus clusters Atlas usando listas de acesso IP, emparelhamento deVPC e endpoints privados.
Esses exemplos também incluem outras configurações recomendadas, tais como:
Camada do cluster configurada para
M10
em um ambiente de desenvolvimento/teste. Use o guia de tamanho do cluster para saber qual a camada do cluster recomendada para o tamanho do seu aplicativo.Região única, 3-Conjunto de réplicas de nós/Topologia de implantação de fragmento.
Nossos exemplos usam Amazon Web Services, Azure e Google Cloud Platform de forma intercambiável. Você pode usar qualquer um desses três provedores de nuvem, mas deve alterar o nome da região para corresponder ao provedor de nuvem. Para saber mais sobre os fornecedores de nuvem e suas regiões, consulte Fornecedores de nuvem.
Camada do cluster definida como
M30
para um aplicativo de porte médio. Use o guia de tamanho do cluster para saber qual a camada do cluster recomendada para o tamanho do seu aplicativo.Região única, 3-Conjunto de réplicas de nós/Topologia de implantação de fragmento.
Nossos exemplos usam Amazon Web Services, Azure e Google Cloud Platform de forma intercambiável. Você pode usar qualquer um desses três provedores de nuvem, mas deve alterar o nome da região para corresponder ao provedor de nuvem. Para saber mais sobre os fornecedores de nuvem e suas regiões, consulte Fornecedores de nuvem.
Observação
Antes de configurar conexões com o Atlas CLI, você deve:
Crie sua organização pagadora e crie uma chave de API para a organização pagadora.
Conecte a partir do Atlas CLI utilizando as etapas Programmatic Use para.
Criar uma entrada de lista de acesso IP
Execute o seguinte comando para cada conexão que você deseja permitir. Altere as entradas para utilizar as opções adequadas e os seus valores reais:
atlas accessList create 192.0.2.15 --type ipAddress --projectId 5e2211c17a3e5a48f5497de3 --comment "IP address for app server 2" --output json
Para mais opções de configuração e informações sobre este exemplo, consulte atlas accessLists create.
Para obter informações sobre como criar uma entrada de lista de acesso IP com Amazon Web Services, GCP e Azure, consulte Configurar um endpoint privado para um cluster dedicado
Criar uma conexão de emparelhamento VPC
Execute o seguinte comando para cada VPC que você deseja emparelhar com seu Atlas VPC. Substitua aws
por azure
ou gcp
conforme apropriado, e altere as opções e valores para os apropriados para sua VPC ou 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 obter mais opções de configuração e informações sobre este exemplo, consulte:
atlas networking peering cria Amazon Web Services, para Amazon Web Services VPCs
atlas networking peering create Azure, for Microsoft Azure VNets
criar emparelhamento atlas de rede gcp, para VPCsdo Google Cloud
Criar um endpoint privado
Execute o comando a seguir para cada endpoint privado que você deseja criar. Substitua aws
por azure
ou gcp
conforme apropriado e altere as opções e valores para os apropriados para sua VPC ou VNet:
atlas privateEndpoints aws create --region us-east-1 --projectId 5e2211c17a3e5a48f5497de3 --output json
Para obter mais opções de configuração e informações sobre este exemplo, consulte:
atlas privateEndpoints criação do Amazon Web Services, para conexões do Amazon Web Services VPCs
atlas privateEndpoints azure create, para conexões de VNets do Microsoft Azure
atlas privateEndpoints gcp create, para conexões do GCP Private Service Connect
Observação
Antes de criar recursos com o Terraform, você deve:
Crie sua organização pagadora e crie uma chave de API para a organização pagadora. Armazene sua chave de API como variáveis de ambiente ao executar o seguinte comando no terminal:
export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>" export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
Sugerimos também a criação de um espaço de trabalho para o seu ambiente.
Criar uma entrada de lista de acesso IP
Para adicionar uma entrada à sua lista de acesso IP, crie o seguinte arquivo e coloque-o no diretório do projeto ao qual deseja conceder acesso. Altere os IDs e nomes para usar seus valores:
accessEntryForAddress1.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" }
Depois de criar os arquivos, navegue até o diretório do seu projeto e execute o seguinte comando para inicializar o Terraform:
terraform init
Execute o seguinte comando para visualizar o plano do Terraform:
terraform plan
Execute o comando a seguir para adicionar uma entrada à lista de acesso IP do seu projeto. O comando usa o arquivo e o Terraform MongoDB e HashiCorp para adicionar a entrada.
terraform apply
Quando solicitado, digite yes
e pressione Enter
para aplicar a configuração.
Criar uma conexão de emparelhamento VPC
Para criar uma conexão de emparelhamento entre seu aplicação VPC e seu Atlas VPC, crie o seguinte arquivo e coloque-o no diretório do projeto ao qual você deseja conceder acesso. Altere os IDs e nomes para usar seus 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" } }
Depois de criar o arquivo, navegue até o diretório do projeto e execute o seguinte comando para inicializar o Terraform:
terraform init
Execute o seguinte comando para visualizar o plano do Terraform:
terraform plan
Execute o comando a seguir para adicionar uma conexão de emparelhamento VPC do seu aplicação ao seu projeto. O comando usa o arquivo e o Terraform MongoDB e HashiCorp para adicionar a entrada.
terraform apply
Quando solicitado, digite yes
e pressione Enter
para aplicar a configuração.
Criar um Private Link
Para criar um PrivateLink do seu aplicação VPC para o seu Atlas VPC, crie o seguinte arquivo e coloque-o no diretório do projeto ao qual deseja se conectar. Altere os IDs e nomes para usar seus 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" } }
Depois de criar o arquivo, navegue até o diretório do projeto e execute o seguinte comando para inicializar o Terraform:
terraform init
Execute o seguinte comando para visualizar o plano do Terraform:
terraform plan
Execute o seguinte comando para adicionar um ponto de extremidade PrivateLink do seu aplicativo ao seu projeto. O comando utiliza o arquivo e o MongoDB & HashiCorp Terraform para adicionar a entrada.
terraform apply
Quando solicitado, digite yes
e pressione Enter
para aplicar a configuração.