Compartilhar via


Habilitar o acesso privado no Azure DocumentDB

O Link Privado do Azure é um serviço poderoso que permite que os usuários se conectem ao Azure DocumentDB por meio de um ponto de extremidade privado designado. Esse endpoint privado consiste em endereços IP privados localizados em uma subrede na sua própria rede virtual. O endpoint permite restringir o acesso ao produto Azure DocumentDB somente por IPs privados. O risco de exfiltração de dados é substancialmente reduzido, integrando o Private Link a políticas rigorosas de NSG. Para obter uma compreensão mais profunda dos pontos de extremidade privados, considere verificar o que é o Link Privado do Azure?.

Observação

O Link Privado protege sua conexão, no entanto, não impede que os pontos de extremidade do Azure DocumentDB sejam resolvidos pelo DNS público. A filtragem de solicitações de entrada é tratada no nível do aplicativo, não no nível de transporte ou rede.

O Link Privado oferece a flexibilidade para acessar o Azure DocumentDB de dentro de sua rede virtual ou de qualquer rede virtual emparelhada conectada. Além disso, os recursos vinculados ao Link Privado são acessíveis localmente por meio de emparelhamento privado, por meio de VPN ou do Azure ExpressRoute.

Para estabelecer uma conexão, o Azure DocumentDB com o Link Privado dá suporte a métodos de aprovação automáticos e manuais.

Pré-requisitos

  • Uma assinatura do Azure

    • Se você não tiver uma assinatura do Azure, crie uma conta gratuita
  • Um cluster existente do Azure DocumentDB

Criar um cluster com um ponto de extremidade privado usando o portal do Azure

Siga estas etapas para criar um novo cluster do Azure DocumentDB com um ponto de extremidade privado usando o portal do Azure:

  1. Entre no portal do Azure e selecione Criar um recurso no canto superior esquerdo do portal do Azure.

  2. Na página Criar um recurso , selecione Bancos de Dados e selecione O Azure DocumentDB.

  3. Na página de opção Selecionar API, no bloco do MongoDB , selecione Criar.

  4. Escolha o tipo de recurso do cluster .

  5. Na página Criar um cluster do Azure DocumentDB , selecione ou crie um grupo de recursos, insira um nome de cluster e local e insira e confirme a senha do administrador.

  6. Selecione Avançar: Rede.

  7. Selecione a guia Rede , para o método Conectividade, selecione Acesso privado.

  8. Na tela Criar ponto de extremidade privado, insira ou selecione os valores apropriados para:

    Configurações Value
    Grupo de recursos Selecione um grupo de recursos.
    Nome Insira qualquer nome para o ponto de extremidade privado. Se esse nome for usado, crie um único.
    Nome da Interface de Rede Insira qualquer nome para sua Interface de Rede. Se esse nome for usado, crie um único.
    Localização Selecione a região em que você deseja implantar o Link Privado. Crie o ponto de extremidade privado no mesmo local onde sua rede virtual existe.
    Tipo de recurso Selecione Microsoft.DocumentDB/mongoClusters.
    Recurso de destino Selecione o recurso do Azure DocumentDB que você criou.
    Sub-recurso de destino Selecione o tipo de subrecurso para o recurso selecionado anteriormente que seu ponto de extremidade privado possa acessar.
    Rede virtual Selecione sua rede virtual.
    Sub-rede Selecione sua sub-rede.
    Integrar com a zona DNS privada Selecione Sim. Para se conectar em particular com o seu ponto de extremidade privado, você precisa de um registro DNS. Recomendamos que você integre seu ponto de extremidade privado a uma zona DNS privada. Você também pode usar seus próprios servidores DNS ou criar registros DNS usando os arquivos de host em suas máquinas virtuais. Quando você seleciona sim para essa opção, um grupo de zonas DNS privado também é criado. O grupo de zonas DNS é uma conexão entre a zona DNS privada e o ponto de extremidade privado. Esse link ajuda você a gerenciar automaticamente a atualização da zona de DNS privada quando houver uma atualização no endpoint privado. Por exemplo, quando você adiciona ou remove regiões, a zona DNS privada é atualizada automaticamente.
    Nome da configuração Selecione sua assinatura e grupo de recursos. A zona DNS privada é determinada automaticamente. Você não pode alterá-lo usando o portal do Azure.
  9. Selecione OK.

  10. Selecione Avançar: Tags>Revisar + criar. Na página Revisar + criar , selecione Criar.

Habilitar o acesso privado em um cluster existente

Para criar um ponto de extremidade privado para um nó em um cluster existente, abra a página Rede do cluster.

  1. SelecioneAdicionar ponto de extremidade privado.

    Captura de tela da seleção Adicionar ponto de extremidade privado na tela Rede.

  2. Na guia Informações básicas da tela Criar um ponto de extremidade privado, confirme a Assinatura, o Grupo de recursos e a Região. Insira um Nome para o endpoint, como my-cluster-1, e um Nome da interface de rede, como my-cluster-1-nic.

    Observação

    Recomendamos a escolha de uma assinatura e uma região que correspondam às do grupo de servidores, a menos que haja um bom motivo para fazer outra escolha. Os valores padrão para os campos de formulário podem não estar corretos. Verifique-os e atualize-os, se necessário.

  3. Selecione Avançar: Recurso. Escolha "Microsoft.DocumentDB/mongoClusters" para o tipo de recurso e escolha o cluster de destino para o Recurso. Para o sub-recurso de destino, escolha "MongoCluster".

  4. Selecione Próximo: Rede Virtual. Escolha a Rede virtual e a Sub-rede desejadas. Em Configuração de IP privado, selecione Alocar endereço IP estaticamente ou mantenha o Endereço IP alocado dinamicamente padrão.

  5. Selecione Avançar: DNS.

  6. Em Integração de DNS privado, para Integrar à zona DNS privada, mantenha o padrão Sim ou selecione Não.

Observação

A integração DNS privada precisa ser habilitada no cluster para uma resolução DNS adequada.

  1. Selecione Avançar: marcas e adicione as marcas desejadas.

  2. Selecione Examinar + criar. Examine as configurações e selecione Criar quando estiver satisfeito.

Criar um ponto de extremidade privado usando a CLI do Azure

Execute o script da CLI do Azure a seguir para criar um ponto de extremidade privado chamado myPrivateEndpoint para uma conta do Azure DocumentDB existente. Substitua os valores de variável pelos detalhes do seu ambiente.

# Resource group where the Azure DocumentDB account and virtual network resources are located  
ResourceGroupName="myResourceGroup" 

# Name of the existing Azure DocumentDB account  
ClusterName="myMongoCluster" 

# Subscription ID where the Azure DocumentDB account and virtual network resources are located  
SubscriptionId="<your Azure subscription ID>"  

# API type of your Azure DocumentDB account: Sql, SqlDedicated, MongoCluster, Cassandra, Gremlin, or Table 
SubResourceType="MongoCluster"  

# Name of the virtual network to create  
VNetName="myVnet"  

# Name of the subnet to create  
SubnetName="mySubnet"  

# Name of the private endpoint to create  
PrivateEndpointName="myPrivateEndpoint"  

# Name of the private endpoint connection to create 
PrivateConnectionName="myConnection" 

az network vnet create \
  --name $VNetName \
  --resource-group $ResourceGroupName \
  --subnet-name $SubnetName 

az network vnet subnet update \
  --name <name> \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --disable-private-endpoint-network-policies true 

az network private-endpoint create \
  --name $PrivateEndpointName \
  --resource-group $ResourceGroupName \
  --vnet-name $VNetName \
  --subnet $SubnetName \
  --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.DocumentDB/mongoClusters/$ClusterName" \
  --group-ids MongoCluster --connection-name $PrivateConnectionName 

Integrar o ponto de extremidade privado a uma zona DNS privada

Depois de criar o ponto de extremidade privado, você deve integrá-lo a uma zona DNS privada usando o seguinte script da CLI do Azure:

Observação

A integração DNS privada precisa ser habilitada no cluster para uma resolução DNS adequada.

#Zone name differs based on the API type and group ID you are using. 
zoneName="privatelink.mongocluster.cosmos.azure.com" 

az network private-dns zone create \
  --resource-group $ResourceGroupName \
  --name $zoneName 

az network private-dns link vnet create --resource-group $ResourceGroupName \
  --zone-name $zoneName \
  --name <dns-link-name> \
  --virtual-network $VNetName \
  --registration-enabled false 

#Create a DNS zone group
az network private-endpoint dns-zone-group create \
  --resource-group $ResourceGroupName \
  --endpoint-name <pe-name> \
  --name <zone-group-name> \
  --private-dns-zone $zoneName \
  --zone-name mongocluster 

Obter cadeia de conexão para se conectar

Sempre use a cadeia de conexão mongodb+srv para se conectar ao banco de dados de um cliente com um endereço IP privado que tenha acesso ao ponto de extremidade privado atribuído ao cluster do Azure DocumentDB.

  1. Selecione um cluster existente do Azure DocumentDB.
  2. Na barra lateral do cluster, em Configurações, selecione Cadeias de conexão.
  3. Copie a cadeia de caracteres de conexão global de leitura/gravação ou própria para autenticação nativa do DocumentDB ou autenticação da ID do Microsoft Entra ID.

Observação

Em um cluster de réplica, somente cadeias de conexão próprias são fornecidas.

  1. Use a cadeia de conexão copiada em seu aplicativo ou ferramentas de gerenciamento para se conectar ao cluster.
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

Verificar e solucionar problemas de conectividade de ponto de extremidade privado

Depois de criar um ponto de extremidade privado para o cluster do Azure DocumentDB, é importante verificar se a resolução de DNS está funcionando corretamente e se seus aplicativos podem se conectar por meio do ponto de extremidade privado.

Verificar o status do ponto de extremidade privado

Primeiro, confirme se o ponto de extremidade privado está provisionado e conectado corretamente:

  1. No portal do Azure, navegue até o cluster do Azure DocumentDB.
  2. Na barra lateral do cluster, em Configurações, selecione Rede.
  3. Verifique se o ponto de extremidade privado aparece na lista com um status de Aprovado.
  4. Selecione o nome do ponto de extremidade privado para exibir seus detalhes, incluindo o endereço IP privado atribuído.

Você também pode usar a CLI do Azure para verificar o status do endereço privado:

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName

Testar a resolução DNS

O Azure DocumentDB usa registros SRV para a descoberta de serviços ao usar o formato de cadeia de conexão mongodb+srv. Para verificar se a resolução DNS está funcionando corretamente, teste a resolução DNS de uma máquina virtual ou recurso dentro da mesma rede virtual ou de uma rede emparelhada.

Teste de DNS do Windows

Em um computador Windows conectado à rede virtual, use os seguintes comandos:

  1. Teste a resolução do registro SRV:

    Resolve-DnsName -Name _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com -Type SRV
    

    A saída deve mostrar registros SRV apontando para os nós do cluster dentro da zona de DNS privado.

  2. Resolva os nomes de host dos nós individuais para verificar se eles são resolvidos para endereços IP privados.

    Resolve-DnsName -Name <your-node-hostname>.mongocluster.cosmos.azure.com
    

    A saída deve exibir endereços IP privados (por exemplo, 10.x.x.x) em vez de endereços IP públicos.

  3. Use nslookup como alternativa:

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

Teste de DNS do Linux e macOS

Em um computador Linux ou macOS conectado à rede virtual, use os seguintes comandos:

  1. Teste a resolução do registro SRV:

    dig _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com SRV
    

    A saída deve mostrar registros SRV com destinos apontando para os nós do cluster.

  2. Resolva os nomes de host dos nós individuais:

    dig <your-node-hostname>.mongocluster.cosmos.azure.com
    

    Os registros A devem ser resolvidos para endereços IP privados no espaço de endereço da sua rede virtual.

  3. Use nslookup como alternativa:

    nslookup -type=SRV _mongodb._tcp.<your-cluster-name>.mongocluster.cosmos.azure.com
    nslookup <your-node-hostname>.mongocluster.cosmos.azure.com
    

Cenários comuns de solução de problemas

Se você encontrar problemas de conectividade, verifique o seguinte:

A resolução DNS falha ou retorna endereços IP públicos

  • Verifique se a zona DNS privada está vinculada corretamente à sua rede virtual.
  • Confirme se o grupo de zonas DNS está configurado corretamente no ponto de extremidade privado.
  • Verifique se as configurações de DNS da rede virtual estão definidas para usar o DNS fornecido pelo Azure (168.63.129.16) ou um servidor DNS personalizado que encaminha consultas para o DNS do Azure.
  • Certifique-se de que esteja testando de um recurso dentro da rede virtual ou de uma rede corretamente emparelhada.

Timeouts de conexão ou falhas

  • Verifique se as regras do NSG (Grupo de Segurança de Rede) na sub-rede permitem a conectividade de saída na porta 27017 (porta padrão do MongoDB).
  • Confirme se a interface de rede do endpoint privado tem o endereço IP privado correto atribuído.
  • Verifique se o aplicativo ou o cliente está usando o formato de cadeia de conexão correto (mongodb+srv).
  • Verifique se as regras de firewall no cluster do Azure DocumentDB permitem conexões do ponto de extremidade privado.

Zona DNS privada que não está sendo resolvida

  • Verifique se o nome da zona DNS privada corresponde ao formato esperado: privatelink.mongocluster.cosmos.azure.com.
  • Verifique se existem registros A na zona DNS privada para seus nós de cluster.
  • Confirme se o link de rede virtual está ativo e configurado corretamente na zona DNS privada.

Exibir detalhes do ponto de extremidade privado

Para exibir informações detalhadas sobre sua configuração de ponto de extremidade privado, use o seguinte comando da CLI do Azure:

az network private-endpoint show \
  --resource-group $ResourceGroupName \
  --name $PrivateEndpointName \
  --query '{Name:name, PrivateIpAddress:customDnsConfigs[0].ipAddresses[0], FQDN:customDnsConfigs[0].fqdn, ProvisioningState:provisioningState}' \
  --output table

Esse comando exibe informações importantes, incluindo o endereço IP privado, o FQDN (nome de domínio totalmente qualificado) e o estado de provisionamento.