Configurare l'accesso ad Azure Cosmos DB dalle reti virtuali (VNet)
SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella
È possibile configurare l'account Azure Cosmos DB per consentire l'accesso solo da una subnet specifica di rete virtuale di Azure (VNet). Abilitare l'endpoint di servizio in una subnet all'interno di una rete virtuale per controllare l'accesso ad Azure Cosmos DB. Il traffico proveniente da tale subnet viene inviato ad Azure Cosmos DB con l'identità della subnet e della rete virtuale. Dopo aver abilitato l'endpoint del servizio Azure Cosmos DB, è possibile limitare l'accesso alla subnet aggiungendola all'account Azure Cosmos DB.
Per impostazione predefinita, un account di Azure Cosmos DB è accessibile da qualsiasi provider di origine purché la richiesta sia accompagnata da un token di autorizzazione valido. Quando si aggiunge una o più subnet all'interno delle reti virtuali, solo le richieste provenienti da tali subnet otterranno una risposta valida. Le richieste provenienti da qualsiasi altra origine riceveranno una risposta 403 (Non consentito).
È possibile configurare gli account Azure Cosmos DB per consentire l'accesso da una sola subnet specifica di una rete virtuale di Azure. Per limitare l'accesso a un account Azure Cosmos DB con le connessioni da una subnet in una rete virtuale:
Abilitare l'endpoint di servizio per Azure Cosmos DB per inviare la subnet e l'identità di rete virtuale ad Azure Cosmos DB.
Aggiungere una regola nell'account Azure Cosmos DB per specificare la subnet come origine da cui è possibile accedere all'account.
Nota
Dopo aver abilitato l'endpoint di servizio per l'account Azure Cosmos DB in una subnet, l'origine del traffico che raggiunge Azure Cosmos DB passa da un indirizzo IP pubblico a una rete virtuale e una subnet. La commutazione del traffico si applica a tutti gli account di Azure Cosmos DB a cui si accede da questa subnet. Se gli account di Azure Cosmos usano un firewall basato su protocollo IP per consentire l'accesso a questa subnet, le richieste provenienti dalla subnet abilitata al servizio non corrispondono più alle regole del firewall IP e vengono rifiutate.
Per altre informazioni, vedere la procedura descritta nella sezione Migrazione da una regola del firewall IP a un elenco di controllo di accesso della rete virtuale di questo articolo.
Le sezioni seguenti descrivono come configurare un endpoint servizio di rete virtuale per un account Azure Cosmos DB.
Configurare un endpoint di servizio tramite il portale di Azure
Configurare un endpoint di servizio per una rete virtuale e una subnet Azure esistenti
Nel riquadro Tutte le risorse individuare l'account Azure Cosmos DB da proteggere.
Selezionare Rete nel menu delle impostazioni
Selezionare per consentire l'accesso da Reti selezionate.
Per concedere l'accesso a una subnet della rete virtuale esistente, in Reti virtuali selezionare Add existing Azure virtual network (Aggiungi rete virtuale di Azure esistente).
Selezionare la sottoscrizione da cui si vuole aggiungere una rete virtuale di Azure. Selezionare le reti virtuali e le subnet di Azure a cui si vuole consentire l'accesso al proprio account Azure Cosmos DB. Selezionare quindi Abilita per abilitare le reti selezionate con gli endpoint di servizio per "Microsoft.AzureCosmosDB". Al termine selezionare Aggiungi.
Nota
La configurazione di un endpoint servizio VNet può richiedere fino a 15 minuti per propagarsi e l'endpoint può presentare un comportamento incoerente durante questo periodo.
Dopo aver abilitato l'account Azure Cosmos DB per l'accesso da una rete virtuale, il traffico sarà consentito solo dalla subnet scelta. La rete virtuale e la subnet aggiunte verranno visualizzate come illustrato nello screenshot seguente:
Nota
Per abilitare gli endpoint servizio di rete virtuale sono necessarie le autorizzazioni seguenti per la sottoscrizione:
- Sottoscrizione con la rete virtuale: Collaboratore Rete
- Sottoscrizione con account Azure Cosmos DB: Collaboratore Account DocumentDB
- Se la rete virtuale e l'account Azure Cosmos DB si trovano in sottoscrizioni differenti, assicurarsi che la sottoscrizione con rete virtuale disponga anche del provider di risorse
Microsoft.DocumentDB
registrato. Per registrare un provider di risorse, vedere l'articolo Provider e tipi di risorse di Azure.
Ecco le istruzioni per registrare la sottoscrizione con il provider di risorse.
Configurare un endpoint di servizio per una rete virtuale e una subnet Azure nuove
Nel riquadro Tutte le risorse individuare l'account Azure Cosmos DB da proteggere.
Selezionare Rete nel menu delle impostazioni e scegliere di consentire l'accesso da Reti selezionate.
Per concedere l'accesso a una nuova rete virtuale di Azure, in Reti virtuali selezionare Add new virtual network (Aggiungi nuova rete virtuale).
Fornire i dettagli necessari per creare una nuova rete virtuale e quindi selezionare Crea. La subnet verrà creata con un endpoint di servizio per "Microsoft.AzureCosmosDB" abilitato.
Se l'account Azure Cosmos DB viene usato da altri servizi di Azure, come Azure AI Search o si accede a questo account da Analisi di flusso o Power BI, consentire l'accesso selezionando Accetta connessioni dai data center di Azure globali.
Per assicurarsi di avere accesso alle metriche di Azure Cosmos DB dal portale, è necessario abilitare le opzioni Consentire l'accesso dal portale di Azure. Per altre informazioni su queste opzioni, vedere l'articolo Configurare un firewall IP. Dopo avere abilitato l'accesso, selezionare Salva per salvare le impostazioni.
Rimuovere una rete virtuale o una subnet
Nel riquadro Tutte le risorse individuare l'account Azure Cosmos DB per cui sono stati assegnati gli endpoint di servizio.
Selezionare Rete nel menu delle impostazioni.
Per rimuovere una regola della rete virtuale o della subnet, selezionare ... accanto alla rete virtuale o alla subnet, quindi selezionare Rimuovi.
Seleziona Salva per applicare le modifiche.
Configurare un endpoint di servizio tramite Azure PowerShell
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Usare questa procedura per configurare un endpoint di servizio per un account Azure Cosmos DB usando Azure PowerShell:
Installare Azure PowerShell e accedere.
Abilitare l'endpoint di servizio per una subnet esistente di una rete virtuale.
$resourceGroupName = "<Resource group name>" $vnetName = "<Virtual network name>" $subnetName = "<Subnet name>" $subnetPrefix = "<Subnet address range>" $serviceEndpoint = "Microsoft.AzureCosmosDB" Get-AzVirtualNetwork ` -ResourceGroupName $resourceGroupName ` -Name $vnetName | Set-AzVirtualNetworkSubnetConfig ` -Name $subnetName ` -AddressPrefix $subnetPrefix ` -ServiceEndpoint $serviceEndpoint | Set-AzVirtualNetwork
Nota
Quando si usa PowerShell o l'interfaccia della riga di comando di Azure, assicurarsi di specificare l'elenco completo dei filtri IP e degli ACL della rete virtuale nei parametri e non solo quelli che devono essere aggiunti.
Ottenere informazioni sulla rete virtuale.
$vnet = Get-AzVirtualNetwork ` -ResourceGroupName $resourceGroupName ` -Name $vnetName $subnetId = $vnet.Id + "/subnets/" + $subnetName
Preparare una regola di Rete virtuale di Azure Cosmos DB
$vnetRule = New-AzCosmosDBVirtualNetworkRule ` -Id $subnetId
Aggiornare le proprietà dell'account Azure Cosmos DB con la nuova configurazione dell'endpoint di rete virtuale:
$accountName = "<Azure Cosmos DB account name>" Update-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName ` -EnableVirtualNetwork $true ` -VirtualNetworkRuleObject @($vnetRule)
Eseguire il comando seguente per verificare che l'account Azure Cosmos DB venga aggiornato con l'endpoint servizio di rete virtuale configurato nel passaggio precedente:
$account = Get-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName $account.IsVirtualNetworkFilterEnabled $account.VirtualNetworkRules
Configurare un endpoint di servizio tramite l'interfaccia della riga di comando di Azure
Gli account Azure Cosmos DB possono essere configurati per gli endpoint di servizio quando vengono creati o aggiornati in un secondo momento se la subnet è già configurata per loro. Gli endpoint di servizio possono essere abilitati anche nell'account Azure Cosmos DB in cui la subnet non è ancora configurata. L'endpoint di servizio inizierà quindi a funzionare quando la subnet viene configurata in un secondo momento. Questa flessibilità consente agli amministratori che non hanno accesso sia all'account Azure Cosmos DB che alle risorse di rete virtuale per rendere le configurazioni indipendenti l'una dall'altra.
Creare un nuovo account Azure Cosmos DB e connetterlo a una subnet back-end per una nuova rete virtuale
In questo esempio, la rete virtuale e la subnet vengono create con gli endpoint di servizio abilitati per entrambi quando vengono creati.
# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet
# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'
# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'
# Create a resource group
az group create -n $resourceGroupName -l $location
# Create a virtual network with a front-end subnet
az network vnet create \
-n $vnetName \
-g $resourceGroupName \
--address-prefix 10.0.0.0/16 \
--subnet-name $frontEnd \
--subnet-prefix 10.0.1.0/24
# Create a back-end subnet with service endpoints enabled for Azure Cosmos DB
az network vnet subnet create \
-n $backEnd \
-g $resourceGroupName \
--address-prefix 10.0.2.0/24 \
--vnet-name $vnetName \
--service-endpoints Microsoft.AzureCosmosDB
svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)
# Create an Azure Cosmos DB account with default values and service endpoints
az cosmosdb create \
-n $accountName \
-g $resourceGroupName \
--enable-virtual-network true \
--virtual-network-rules $svcEndpoint
Connettersi e configurare un account Azure Cosmos DB a una subnet back-end in modo indipendente
Questo esempio illustra come connettere un account Azure Cosmos DB a una rete virtuale esistente o nuova. In questo esempio la subnet non è ancora configurata per gli endpoint di servizio. Configurare un endpoint di servizio tramite il parametro --ignore-missing-vnet-service-endpoint
. Tale configurazione consente di completare l'account Azure Cosmos DB senza errori prima di completare la configurazione della subnet della rete virtuale. Una volta completata la configurazione della subnet, l'account Azure Cosmos DB diventerà accessibile tramite la subnet configurata.
# Create an Azure Cosmos DB Account with a service endpoint connected to a backend subnet
# that is not yet enabled for service endpoints.
# Resource group and Azure Cosmos DB account variables
resourceGroupName='MyResourceGroup'
location='West US 2'
accountName='mycosmosaccount'
# Variables for a new Virtual Network with two subnets
vnetName='myVnet'
frontEnd='FrontEnd'
backEnd='BackEnd'
# Create a resource group
az group create -n $resourceGroupName -l $location
# Create a virtual network with a front-end subnet
az network vnet create \
-n $vnetName \
-g $resourceGroupName \
--address-prefix 10.0.0.0/16 \
--subnet-name $frontEnd \
--subnet-prefix 10.0.1.0/24
# Create a back-end subnet but without configuring service endpoints (--service-endpoints Microsoft.AzureCosmosDB)
az network vnet subnet create \
-n $backEnd \
-g $resourceGroupName \
--address-prefix 10.0.2.0/24 \
--vnet-name $vnetName
svcEndpoint=$(az network vnet subnet show -g $resourceGroupName -n $backEnd --vnet-name $vnetName --query 'id' -o tsv)
# Create an Azure Cosmos DB account with default values
az cosmosdb create -n $accountName -g $resourceGroupName
# Add the virtual network rule but ignore the missing service endpoint on the subnet
az cosmosdb network-rule add \
-n $accountName \
-g $resourceGroupName \
--virtual-network $vnetName \
--subnet svcEndpoint \
--ignore-missing-vnet-service-endpoint true
read -p'Press any key to now configure the subnet for service endpoints'
az network vnet subnet update \
-n $backEnd \
-g $resourceGroupName \
--vnet-name $vnetName \
--service-endpoints Microsoft.AzureCosmosDB
Intervallo di porte quando si usa la modalità diretta
Quando si usano endpoint di servizio con un account Azure Cosmos DB tramite una connessione in modalità diretta, è necessario assicurarsi che la porta TCP sia aperta da 10000 a 20000.
Migrazione da una regola del firewall IP a un ACL di rete virtuale
Per eseguire la migrazione di un account Azure Cosmos DB dall'uso delle regole del firewall IP all'uso degli endpoint servizio di rete virtuale, seguire questa procedura.
Dopo aver configurato un account Azure Cosmos DB per un endpoint di servizio per una subnet, ogni richiesta da tale subnet viene inviata in modo differente ad Azure Cosmos DB. Le richieste vengono inviate con informazioni sull'origine della rete virtuale e della subnet anziché con un indirizzo IP pubblico di origine. Queste richieste non corrispondono più a un filtro IP configurato nell'account Azure Cosmos DB, motivo per cui sono necessari i passaggi seguenti per evitare tempi di inattività.
Ottenere informazioni sulla rete virtuale e sulla subnet:
$resourceGroupName = "myResourceGroup" $accountName = "mycosmosaccount" $vnetName = "myVnet" $subnetName = "mySubnet" $vnet = Get-AzVirtualNetwork ` -ResourceGroupName $resourceGroupName ` -Name $vnetName $subnetId = $vnet.Id + "/subnets/" + $subnetName
Preparare un nuovo oggetto regola di rete virtuale per l'account Azure Cosmos DB:
$vnetRule = New-AzCosmosDBVirtualNetworkRule ` -Id $subnetId
Aggiornare l'account Azure Cosmos DB per abilitare l'accesso all'endpoint di servizio dalla subnet:
Update-AzCosmosDBAccount ` -ResourceGroupName $resourceGroupName ` -Name $accountName ` -EnableVirtualNetwork $true ` -VirtualNetworkRuleObject @($vnetRule)
Ripetere i passaggi precedenti per tutti gli account Azure Cosmos DB a cui si accede dalla subnet.
Abilitare l'endpoint del servizio Azure Cosmos DB nella rete virtuale e nella subnet usando il passaggio illustrato nella sezione Abilitare l'endpoint servizio per una subnet esistente di una rete virtuale di questo articolo.
Rimuovere la regola del firewall IP per la subnet dalle regole del firewall dell'account Azure Cosmos DB.
Domande frequenti
Ecco alcune domande frequenti sulla configurazione dell'accesso da reti virtuali:
Azure Notebooks e Mongo/Cassandra Shell sono attualmente compatibili con gli account abilitati per la rete virtuale?
Al momento, le integrazioni di Mongo Shell e Cassandra Shell in Esplora dati di Azure Cosmos DB non sono supportate con l'accesso VNet. Questa integrazione è attualmente in fase di sviluppo attivo.
È possibile specificare l'endpoint servizio di rete virtuale e i criteri di controllo di accesso IP per un account Azure Cosmos DB?
È possibile abilitare l'endpoint servizio di rete virtuale e i criteri di controllo di accesso IP (detti anche firewall) per un account Azure Cosmos DB. Queste due funzionalità sono complementari e garantiscono collettivamente isolamento e sicurezza dell'account di Azure Cosmos DB. L'utilizzo del firewall IP garantisce che gli indirizzi IP statici possano accedere all'account.
Come è possibile limitare l'accesso alla subnet all'interno di una rete virtuale?
Esistono due passaggi necessari per limitare l'accesso all'account Azure Cosmos DB da una subnet. In primo luogo, si consente al traffico dalla subnet di portare le rispettive subnet e l'identità di rete virtuale ad Azure Cosmos DB. La modifica dell'identità del traffico viene eseguita abilitando l'endpoint di servizio per Azure Cosmos DB nella subnet. Successivamente viene aggiunta una regola nell'account di Azure Cosmos DB che specifica questa subnet come un'origine da cui è possibile accedere all'account.
Gli elenchi di accesso virtuale della rete virtuale e il Firewall IP rifiutano le richieste o le connessioni?
Quando vengono aggiunte regole di accesso al firewall IP o alla rete virtuale, solo le richieste provenienti da origini autorizzate ricevono risposte valide. Le altre richieste vengono rifiutate con un errore 403 (Non consentito). È importante distinguere il firewall dell'account Azure Cosmos DB da un firewall a livello di connessione. L'origine può comunque connettersi al servizio e le connessioni stesse non vengono rifiutate.
Le richieste hanno iniziato a bloccarsi dopo aver abilitato l'endpoint del servizio ad Azure Cosmos DB nella subnet. Che cosa è successo?
Dopo aver abilitato l'endpoint di servizio per Azure Cosmos DB in una subnet, l'origine del traffico che raggiunge l'account passa dall'indirizzo IP pubblico alla rete virtuale e alla subnet. Se l'account Azure Cosmos DB dispone solo di un firewall basato su protocollo IP, il traffico dalla subnet del servizio abilitato non corrisponderebbe alle regole del firewall IP e pertanto sarebbe rifiutato. Esaminare i passaggi per eseguire facilmente la migrazione dal firewall basato su protocollo IP per il controllo di accesso basato sulla rete virtuale.
Sono necessarie autorizzazioni aggiuntive per il controllo degli accessi in base al ruolo di Azure per gli account Azure Cosmos DB con endpoint servizio di VNet?
Dopo aver aggiunto gli endpoint del servizio VNet a un account Azure Cosmos DB, per apportare qualsiasi modifica alle impostazioni dell'account è necessario accedere all'azione Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action
per tutte le VNet configurate nell'account Azure Cosmos DB. Questa operazione è necessaria perché il processo di autorizzazione convalida l'accesso alle risorse (incluse le risorse di database e di rete virtuale) prima di valutare le proprietà.
Viene convalidata l'autorizzazione per l'azione della risorsa di rete virtuale anche se l'utente non specifica gli elenchi di controllo di accesso di rete virtuale usando l'interfaccia della riga di comando di Azure. Attualmente, il piano di controllo di un account Azure Cosmos DB supporta l'impostazione dello stato completo dell'account Azure Cosmos DB. Uno dei parametri per le chiamate del piano di controllo è virtualNetworkRules
. Se questo parametro non viene specificato, l'interfaccia della riga di comando di Azure esegue una chiamata Get Database per recuperare il parametro virtualNetworkRules
e usa questo valore nella chiamata di aggiornamento.
Anche le reti virtuali con peering hanno accesso all'account Azure Cosmos DB?
Solo la rete virtuale e le subnet aggiunte all'account Azure Cosmos DB possono avere accesso. Le VNet con peering non possono accedere all'account fino a quando le subnet all'interno delle reti virtuali con peering non vengono aggiunte all'account.
Qual è il numero massimo di subnet consentite per accedere a un singolo account Azure Cosmos DB?
Attualmente, è consentito avere al massimo 256 subnet per un account Azure Cosmos DB.
È possibile abilitare l'accesso da VPN ed Express Route?
Per l'accesso all'account Azure Cosmos DB tramite Express Route da locale, è necessario abilitare il peering Microsoft. Dopo avere inserito il firewall IP o le regole di accesso di rete virtuale, è possibile aggiungere gli indirizzi IP pubblici usati per il peering Microsoft sul firewall IP dell'account Azure Cosmos DB per consentire l'accesso dei servizi locali all'account Azure Cosmos DB.
È necessario aggiornare le regole dei gruppi di sicurezza di rete (NSG)?
Le regole NSG vengono utilizzate per limitare la connettività da e verso una subnet con la rete virtuale. Quando si aggiunge un endpoint del servizio per Azure Cosmos DB alla subnet, non è necessario aprire la connettività in uscita dell’NSG per l'account Azure Cosmos DB.
Gli endpoint di servizio sono disponibili per tutte le reti virtuali?
No, solo le reti virtuali di Azure Resource Manager hanno un endpoint di servizio abilitato. Le reti virtuali classiche non supportano gli endpoint di servizio.
Quando è necessario accettare connessioni da data center di Azure globali per un account Azure Cosmos DB?
Questa impostazione deve essere abilitata solo quando si desidera che l'account Azure Cosmos DB sia accessibile a qualsiasi servizio di Azure in qualsiasi area di Azure. Altri servizi proprietari di Azure, ad esempio Azure Data Factory e Azure AI Search, forniscono documentazione su come proteggere l'accesso alle origini dati, inclusi gli account Azure Cosmos DB, ad esempio:
- Rete virtuale gestita di Azure Data Factory
- Accesso dell'indicizzatore di Azure AI Search alle risorse protette
Passaggi successivi
- Per configurare un firewall per Azure Cosmos DB, vedere l'articolo Supporto del firewall.