Condividi tramite


Abilitare l'accesso privato in Azure DocumentDB

Collegamento privato di Azure è un servizio potente che consente agli utenti di connettersi ad Azure DocumentDB tramite un endpoint privato designato. Questo endpoint privato è costituito da indirizzi IP privati che si trovano in una subnet all'interno della propria rete virtuale. L'endpoint consente di limitare l'accesso al prodotto Azure DocumentDB esclusivamente tramite indirizzi IP privati. Il rischio di esfiltrazione dei dati è notevolmente ridotto grazie all'integrazione di Collegamento privato con criteri NSG rigorosi. Per una comprensione più approfondita degli endpoint privati, vedere Informazioni sul collegamento privato di Azure.

Annotazioni

Il collegamento privato protegge la connessione, tuttavia, non impedisce che gli endpoint di Azure DocumentDB vengano risolti da DNS pubblico. La filtraggio delle richieste in ingresso viene gestita a livello di applicazione, non a livello di trasporto o di rete.

Collegamento privato offre la flessibilità necessaria per accedere ad Azure DocumentDB dall'interno della rete virtuale o da qualsiasi rete virtuale con peering connessa. Inoltre, le risorse collegate al collegamento privato sono accessibili in locale tramite peering privato, tramite VPN o Azure ExpressRoute.

Per stabilire una connessione, Azure DocumentDB con collegamento privato supporta sia metodi di approvazione automatici che manuali.

Prerequisiti

  • Una sottoscrizione di Azure

  • Un cluster Di Azure DocumentDB esistente

Creare un cluster con un endpoint privato usando il portale di Azure

Seguire questa procedura per creare un nuovo cluster Di Azure DocumentDB con un endpoint privato usando il portale di Azure:

  1. Accedere al portale di Azure e quindi selezionare Crea una risorsa nell'angolo superiore sinistro del portale di Azure.

  2. Nella pagina Crea una risorsa selezionare Database e quindi Azure DocumentDB.

  3. Nella pagina Selezionare l'opzione API selezionare Crea nel riquadro MongoDB .

  4. Scegliere il tipo di risorsa cluster .

  5. Nella pagina Crea un cluster di Azure DocumentDB selezionare o creare un gruppo di risorse, immettere un nome cluster e un percorso e immettere e confermare la password dell'amministratore.

  6. Selezionare Avanti: Rete.

  7. Selezionare la scheda Rete , in Metodo di connettività, selezionare Accesso privato.

  8. Nella schermata Crea endpoint privato immettere o selezionare i valori appropriati per:

    Impostazione Value
    Gruppo di risorse Selezionare un gruppo di risorse.
    Nome Inserire un qualsiasi nome per l'endpoint privato. Se questo nome viene preso, crearne uno univoco.
    Nome interfaccia di rete Immettere qualsiasi nome per l'interfaccia di rete. Se questo nome viene preso, crearne uno univoco.
    Posizione Selezionare l'area in cui si vuole distribuire il collegamento privato. Creare l'endpoint privato nella stessa posizione in cui esiste la rete virtuale.
    Tipo di risorsa Seleziona Microsoft.DocumentDB/mongoClusters.
    Risorsa di destinazione Selezionare la risorsa azure DocumentDB creata.
    Sottorisorsa di destinazione Selezionare il tipo di sottorisorsa per la risorsa selezionata in precedenza a cui l'endpoint privato deve avere la possibilità di accedere.
    Rete virtuale Selezionare la rete virtuale.
    Subnet Selezionare la subnet.
    Integra con la zona DNS privato Selezionare . Per connettersi in privato con l'endpoint privato, è necessario un record DNS. È consigliabile integrare l'endpoint privato con una zona DNS privata. È anche possibile usare i propri server DNS o creare record DNS usando i file host nelle macchine virtuali. Quando si seleziona Sì per questa opzione, viene creato anche un gruppo di zone DNS privato. Il gruppo di zone DNS è un collegamento tra la zona DNS privata e l'endpoint privato. Questo collegamento consente di aggiornare automaticamente la zona DNS privata quando viene eseguito un aggiornamento all'endpoint privato. Ad esempio, quando si aggiungono o si rimuovono aree, la zona DNS privata viene aggiornata automaticamente.
    Nome della configurazione Selezionare la sottoscrizione e il gruppo di risorse. La zona DNS privata viene determinata automaticamente. Non è possibile modificarlo usando il portale di Azure.
  9. Selezionare OK.

  10. Selezionare Avanti: Tag>Rivedi + crea. Nella pagina Rivedi e crea selezionare Crea.

Abilitare l'accesso privato in un cluster esistente

Per creare un endpoint privato in un nodo in un cluster esistente, aprire la pagina Rete per il cluster.

  1. Selezionare Aggiungi endpoint privato.

    Screenshot che mostra la selezione di Aggiungi endpoint privato nella schermata Rete.

  2. Nella scheda Nozioni di base della schermata Crea un endpoint privato verificare Sottoscrizione, Gruppo di risorse e Area. Immettere un Nome per l'endpoint, ad esempio my-cluster-1 e un Nome di interfaccia di rete, ad esempio my-cluster-1-nic.

    Annotazioni

    A meno che non si abbia un buon motivo per decidere diversamente, è consigliabile scegliere una sottoscrizione e un'area corrispondenti a quelle del cluster. I valori predefiniti per i campi modulo potrebbero non essere corretti. Controllarli e aggiornarli, se necessario.

  3. Selezionare Avanti: Risorsa. Scegliere "Microsoft.DocumentDB/mongoClusters" per Tipo di risorsa e scegliere il cluster di destinazione per Risorsa. Per Sotto-risorsa di destinazione scegliere "MongoCluster".

  4. Selezionare Avanti: Rete virtuale. Scegliere Rete virtuale e Subnet desiderate. In Configurazione IP privato selezionare Allocare staticamente indirizzo IP o mantenere l'indirizzo IP predefinito, Allocare dinamicamente indirizzo IP.

  5. Selezionare Avanti: DNS.

  6. In Integrazione DNS privato, per Integrazione con zona DNS privata, mantenere l'impostazione predefinita o selezionare No.

Annotazioni

L'integrazione DNS privata deve essere abilitata nel cluster per una risoluzione DNS corretta.

  1. Selezionare Avanti: Tag e aggiungere eventuali tag desiderati.

  2. Selezionare Rivedi e crea. Esaminare le impostazioni e, se soddisfano, selezionare Crea.

Creare un endpoint privato usando l'interfaccia della riga di comando di Azure

Eseguire lo script dell'interfaccia della riga di comando di Azure seguente per creare un endpoint privato denominato myPrivateEndpoint per un account Azure DocumentDB esistente. Sostituire i valori delle variabili con i dettagli del tuo 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 

Integrare l'endpoint privato con una zona DNS privata

Dopo aver creato l'endpoint privato, è necessario integrarlo con una zona DNS privata usando lo script dell'interfaccia della riga di comando di Azure seguente:

Annotazioni

L'integrazione DNS privata deve essere abilitata nel cluster per una risoluzione DNS corretta.

#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 

Ottenere la stringa di connessione per connettersi

Usare mongodb+srv sempre la stringa di connessione per connettersi al database da un client con un indirizzo IP privato che ha accesso all'endpoint privato assegnato al cluster di Azure DocumentDB.

  1. Selezionare un cluster Di Azure DocumentDB esistente.
  2. Nella barra laterale del cluster, in Impostazioniselezionare Stringhe di connessione.
  3. Copiare la stringa di connessione globale di lettura-scrittura o la stringa di connessione autonoma per l'autenticazione nativa di DocumentDB o l'autenticazione Microsoft Entra ID.

Annotazioni

In un cluster di replica vengono fornite solo stringhe di connessione automatica.

  1. Usare la stringa di connessione copiata negli strumenti di gestione o dell'applicazione per connettersi al cluster.
az network private-link-resource list \
  -g <rg-name> \
  -n <resource-name> \
  --type Microsoft.DocumentDB/mongoClusters 

Verificare e risolvere i problemi di connettività dell'endpoint privato

Dopo aver creato un endpoint privato per il cluster Azure DocumentDB, è importante verificare che la risoluzione DNS funzioni correttamente e che le applicazioni possano connettersi tramite l'endpoint privato.

Verificare lo stato dell'endpoint privato

Prima di tutto, verificare che l'endpoint privato sia stato configurato correttamente e che la connessione sia attiva.

  1. Nel portale di Azure passare al cluster Azure DocumentDB.
  2. Nella barra laterale del cluster, in Impostazioni selezionare Rete.
  3. Verificare che l'endpoint privato venga visualizzato nell'elenco con lo stato Approvato.
  4. Selezionare il nome dell'endpoint privato per visualizzarne i dettagli, incluso l'indirizzo IP privato assegnato.

È anche possibile usare l'interfaccia della riga di comando di Azure per controllare lo stato dell'endpoint privato:

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

Testare la risoluzione DNS

Azure DocumentDB usa i record SRV per l'individuazione dei servizi quando si usa il formato della mongodb+srv stringa di connessione. Per verificare che la risoluzione DNS funzioni correttamente, testare la risoluzione DNS da una macchina virtuale o una risorsa all'interno della stessa rete virtuale o di una rete con peering.

Test DNS di Windows

Da una macchina Windows connessa alla rete virtuale, usare i comandi seguenti:

  1. Testare la risoluzione dei record SRV:

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

    L'output dovrebbe mostrare i record SRV che puntano ai nodi del cluster all'interno della zona DNS privata.

  2. Risolvere i nomi host dei singoli nodi per verificare che risolvano in indirizzi IP privati.

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

    L'output dovrebbe visualizzare indirizzi IP privati (ad esempio, 10.x.x.x) anziché indirizzi IP pubblici.

  3. Usare nslookup come alternativa:

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

Test DNS di Linux e macOS

Da una macchina Linux o macOS connessa alla rete virtuale, usare i comandi seguenti:

  1. Testare la risoluzione dei record SRV:

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

    L'output dovrebbe mostrare i record SRV con target che puntano verso i nodi del cluster.

  2. Risolvere i nomi host dei singoli nodi:

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

    I record A devono risolversi in indirizzi IP privati nello spazio di indirizzi della rete virtuale.

  3. Usare nslookup come alternativa:

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

Scenari comuni di risoluzione dei problemi

Se si verificano problemi di connettività, verificare quanto segue:

La risoluzione DNS ha esito negativo o restituisce indirizzi IP pubblici

  • Verificare che la zona DNS privata sia collegata correttamente alla rete virtuale.
  • Verificare che il gruppo di zone DNS sia configurato correttamente nell'endpoint privato.
  • Verificare che le impostazioni DNS della rete virtuale siano impostate per l'uso del DNS fornito da Azure (168.63.129.16) o di un server DNS personalizzato che inoltra le query a DNS di Azure.
  • Assicurarsi di eseguire il test da una risorsa all'interno della rete virtuale o da una rete con peering corretta.

Timeout o errori di connessione

  • Verificare che le regole del gruppo di sicurezza di rete (NSG) nella subnet consentano la connettività in uscita sulla porta 27017 (porta predefinita mongoDB).
  • Verificare che all'interfaccia di rete dell'endpoint privato sia assegnato l'indirizzo IP privato corretto.
  • Verificare che l'applicazione o il client usi il formato corretto della stringa di connessione (mongodb+srv).
  • Assicurarsi che le regole del firewall nel cluster di Azure DocumentDB consentano le connessioni dall'endpoint privato.

Zona DNS privata non risolta

  • Verificare che il nome della zona DNS privato corrisponda al formato previsto: privatelink.mongocluster.cosmos.azure.com.
  • Verificare che i record A esistano nella zona DNS privata per i nodi del cluster.
  • Verificare che il collegamento alla rete virtuale sia attivo e configurato correttamente nella zona DNS privata.

Visualizzare i dettagli dell'endpoint privato

Per visualizzare informazioni dettagliate sulla configurazione dell'endpoint privato, usare il comando seguente dell'interfaccia della riga di comando di 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

Questo comando visualizza le informazioni sulla chiave, tra cui l'indirizzo IP privato, il nome di dominio completo (FQDN) e lo stato di provisioning.