Partilhar via


Ativar acesso privado no Azure DocumentDB

O Azure Private Link é um serviço poderoso que permite aos utilizadores ligar-se ao Azure DocumentDB através de um endpoint privado designado. Este endpoint privado consiste em endereços IP privados localizados numa sub-rede dentro da sua própria rede virtual. O endpoint permite-lhe restringir o acesso ao produto Azure DocumentDB apenas sobre IPs privados. O risco de exfiltração de dados é substancialmente reduzido, ao integrar o Private Link com políticas NSG rigorosas. Para uma compreensão mais profunda dos endpoints privados, considere consultar What is Azure Private Link?.

Observação

O Private Link protege a sua ligação, no entanto, não impede que os seus endpoints Azure DocumentDB sejam resolvidos por DNS público. A filtragem dos pedidos recebidos é tratada ao nível da aplicação, não ao nível do transporte ou da rede.

O Private Link oferece a flexibilidade de aceder ao Azure DocumentDB, quer a partir da sua rede virtual, quer de qualquer rede virtual peered conectada. Além disso, os recursos ligados ao Private Link são acessíveis localmente através de peering privado, via VPN ou Azure ExpressRoute.

Para estabelecer uma ligação, o Azure DocumentDB com Private Link suporta métodos de aprovação automática e manual.

Pré-requisitos

  • Uma assinatura do Azure

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

Crie um cluster com um endpoint privado usando o portal Azure

Siga estes passos para criar um novo cluster Azure DocumentDB com um endpoint privado utilizando o portal Azure:

  1. Inicia sessão no portal Azure e depois seleciona Criar um recurso no canto superior esquerdo do portal Azure.

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

  3. Na página de opção Selecionar API, no mosaico 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 o nome e a localização do Cluster , e insira e confirme a palavra-passe do administrador.

  6. Selecione Próximo: Networking.

  7. Selecione o separador de Redes , para método de Conectividade, selecione Acesso Privado.

  8. Na página Criar endpoint privado, insira ou escolha os valores adequados para:

    Configuração Valor
    Grupo de recursos Selecione um grupo de recursos.
    Nome Introduza qualquer nome para o seu endpoint privado. Se este nome for adotado, crie um nome único.
    Nome da Interface de Rede Introduza qualquer nome para a sua Interface de Rede. Se este nome for adotado, crie um nome único.
    Localização Selecione a região onde quer implementar o Private Link. Crie o endpoint privado no mesmo local onde existe a sua rede virtual.
    Tipo de recurso Selecione Microsoft.DocumentDB/mongoClusters.
    Recurso alvo Selecione o recurso Azure DocumentDB que criou.
    Subrecurso de destino Selecione o tipo de subrecurso para o recurso selecionado anteriormente que o seu endpoint privado deveria poder aceder.
    Rede virtual Selecione sua rede virtual.
    Subnet Selecione sua sub-rede.
    Integrar com zona DNS privada Selecione Sim. Para estabelecer ligação de forma privada ao ponto final privado, precisa de um registo DNS. Recomendamos que integre o seu endpoint privado com uma zona DNS privada. Também pode usar os seus próprios servidores DNS ou criar registos DNS usando os ficheiros host nas suas máquinas virtuais. Quando seleciona sim para esta opção, também é criado um grupo privado de zonas DNS. O grupo de zonas DNS é uma ligação entre a zona DNS privada e o endpoint privado. Este link ajuda-te a atualizar automaticamente a zona DNS privada quando há uma atualização para o endpoint privado. Por exemplo, quando adiciona ou remove regiões, a zona DNS privada é automaticamente atualizada.
    Nome da configuração Selecione a sua subscrição e grupo de recursos. A zona DNS privada é determinada automaticamente. Não podes alterar isso usando o portal Azure.
  9. Selecione Ok.

  10. Selecione Próximo: Etiquetas>Reveja + crie. Na página Rever + criar, selecione Criar.

Habilitar 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. Selecione Adicionar ponto de extremidade privado.

    Captura de ecrã de selecionar Adicionar ponto final privado na rede.

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

    Observação

    A menos que você tenha um bom motivo para escolher o contrário, recomendamos escolher uma assinatura e uma região que correspondam às do seu cluster. 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 Seguinte: Recurso. Escolha "Microsoft.DocumentDB/mongoClusters" para o tipo de Recurso, e escolha o cluster-alvo para Recurso. Para o sub-recurso Target, escolha "MongoCluster".

  4. Selecione Next: Virtual Network. Escolha a rede virtual e a sub-rede desejadas. Em Configuração de IP privado, selecione Alocar endereço IP estaticamente ou manter o padrão, Alocar endereço IP dinamicamente.

  5. Selecione Next: DNS.

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

Observação

A integração de DNS privado deve estar ativada no cluster para a correta resolução de DNS.

  1. Selecione Next: Tags, e adicione as tags desejadas.

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

Crie um endpoint privado usando Azure CLI

Execute o seguinte script Azure CLI para criar um endpoint privado chamado myPrivateEndpoint para uma conta Azure DocumentDB existente. Substitua os valores das variáveis 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 endpoint privado com uma zona DNS privada

Depois de criar o endpoint privado, deve integrá-lo com uma zona DNS privada usando o seguinte script Azure CLI:

Observação

A integração de DNS privado deve estar ativada no cluster para a correta resolução de DNS.

#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 

Obtenha a cadeia de ligação para conectar-se

Use sempre mongodb+srv a string de ligação para se ligar à base de dados a partir de um cliente com um endereço IP privado que tenha acesso ao endpoint privado atribuído ao cluster Azure DocumentDB.

  1. Selecione um cluster Azure DocumentDB existente.
  2. Na barra lateral do cluster, em Configurações, selecione Cadeias de conexão.
  3. Copie a cadeia global de leitura-escrita ou auto-ligação para autenticação nativa do DocumentDB ou autenticação Microsoft Entra ID.

Observação

Em um cluster réplica, são fornecidas apenas cadeias de ligação próprias.

  1. Utilize a cadeia de ligação copiada na sua aplicação ou ferramentas de gestão para conectar ao cluster.
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

Verificar e resolver problemas na conectividade dos endpoints privados

Depois de criar um endpoint privado para o seu cluster Azure DocumentDB, é importante verificar se a resolução DNS está a funcionar corretamente e que as suas aplicações conseguem ligar-se através do endpoint privado.

Verificar o estado do endpoint privado

Primeiro, confirme que o endpoint privado está devidamente provisionado e ligado:

  1. No portal Azure, navegue até ao seu cluster Azure DocumentDB.
  2. Na barra lateral do cluster, em Definições, selecione Rede.
  3. Verifique se o endpoint privado aparece na lista com o estado de Aprovado.
  4. Selecione o nome do endpoint privado para visualizar os seus detalhes, incluindo o endereço IP privado atribuído.

Também pode usar o Azure CLI para verificar o estado do endpoint privado:

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

Testar resolução DNS

Azure DocumentDB utiliza registos SRV para a descoberta de serviços quando utiliza o formato de cadeia de ligação mongodb+srv. Para verificar se a resolução DNS está a funcionar corretamente, teste a resolução DNS de uma máquina virtual ou recurso dentro da mesma rede virtual ou de uma rede peered.

Testes DNS do Windows

A partir de uma máquina Windows ligada à rede virtual, utilize os seguintes comandos:

  1. Teste a resolução do registo 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 seu cluster dentro da zona DNS privada.

  2. Resolva os nomes de host dos nós individuais para verificar se correspondem a endereços IP privados:

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

    A saída deve mostrar 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
    

Testes DNS em Linux e macOS

A partir de uma máquina Linux ou macOS ligada à rede virtual, utilize os seguintes comandos:

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

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

    A saída deve mostrar registos SRV com alvos apontando para os seus nós do cluster.

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

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

    Os registos A devem ser resolvidos para endereços IP privados no espaço de endereços 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 encontrar problemas de conectividade, verifique o seguinte:

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

  • Verifique se a zona DNS privada está corretamente ligada à sua rede virtual.
  • Confirme que o grupo de zonas DNS está devidamente configurado no endpoint privado.
  • Verifique se as definições de DNS da sua rede virtual estão definidas para usar DNS fornecido pelo Azure (168.63.129.16) ou um servidor DNS personalizado que encaminhe consultas para o Azure DNS.
  • Certifique-se de que está a testar a partir de um recurso dentro da rede virtual ou de uma rede devidamente emparelhada.

Tempos de espera ou falhas de ligação

  • Verifique se as regras do Network Security Group (NSG) na sub-rede permitem conectividade de saída na porta 27017 (porta padrão do MongoDB).
  • Confirme que a interface de rede do endpoint privado tem o endereço IP privado correto atribuído.
  • Verifique se a aplicação ou cliente está a usar o formato correto de string de ligação (mongodb+srv).
  • Certifique-se de que as regras do firewall no cluster Azure DocumentDB permitem ligações a partir do endpoint privado.

Zona DNS privada não está a ser resolvida

  • Verifique se o nome da zona DNS privada corresponde ao formato esperado: privatelink.mongocluster.cosmos.azure.com.
  • Verifique se existem registos A na zona DNS privada dos seus nós do cluster.
  • Confirme que a ligação de rede virtual está ativa e devidamente configurada na zona DNS privada.

Ver detalhes do endpoint privado

Para ver informações detalhadas sobre a configuração do seu endpoint privado, utilize o seguinte comando Azure CLI:

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

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