Configurare un firewall IP in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Per proteggere i dati archiviati nell'account, Azure Cosmos DB supporta un modello di autorizzazione basato su segreti che usa un codice HMAC (Hash-based Message Authentication Code). Azure Cosmos DB supporta anche i controlli di accesso IP per il supporto del firewall in ingresso. Questo modello è simile alle regole del firewall di un sistema di database tradizionale e offre un livello aggiuntivo di sicurezza per l'account. Con i firewall, è possibile configurare l'account Azure Cosmos DB in modo che sia accessibile solo da un set approvato di computer e/o servizi cloud. L'accesso ai dati archiviati nel database di Azure Cosmos DB da questi set approvati di computer e servizi richiederà comunque al chiamante di presentare un token di autorizzazione valido.

Controllo di accesso IP

Per impostazione predefinita, l'account Azure Cosmos DB è accessibile da Internet, purché la richiesta sia accompagnata da un token di autorizzazione valido. Per configurare il controllo degli accessi in base ai criteri IP, l'utente deve fornire il set di indirizzi IP o intervalli di indirizzi IP nel modulo CIDR (Classless Inter-Domain Routing) da includere come elenco consentito di indirizzi IP client per accedere a un determinato account Azure Cosmos DB. Se viene applicata questa configurazione, tutte le richieste provenienti da computer non inclusi in questo elenco ricevono una risposta 403 (Accesso negato). Quando si usa il firewall IP, è consigliabile consentire al portale di Azure di accedere all'account. In questo modo, infatti, è possibile usare Esplora dati e recuperare le metriche relative all'account visualizzate nel portale di Azure. Quando si usa Esplora dati, oltre a consentire portale di Azure di accedere all'account, è necessario aggiornare le impostazioni del firewall per aggiungere l'indirizzo IP corrente alle regole del firewall. Si noti che la propagazione delle modifiche del firewall può richiedere fino a 15 minuti e il firewall può presentare un comportamento incoerente durante questo periodo.

È possibile combinare il firewall basato su IP con il controllo dell'accesso basato su subnet e rete virtuale, in modo da limitare l'accesso a qualsiasi origine che abbia un indirizzo IP pubblico e/o da una subnet specifica all'interno della rete virtuale. Per altre informazioni sull'uso del controllo dell'accesso basato su subnet e rete virtuale, vedere Accedere a risorse di Azure Cosmos DB da reti virtuali.

Per riepilogare, il token di autorizzazione è sempre necessario per accedere a un account Azure Cosmos DB. Se il firewall IP e la rete virtuale Controllo di accesso Elenco (ACL) non sono configurati, è possibile accedere all'account Azure Cosmos DB con il token di autorizzazione. Dopo aver configurato il firewall IP o gli ACL della rete virtuale o entrambi nell'account Azure Cosmos DB, solo le richieste provenienti dalle origini specificate (e con il token di autorizzazione) ottengono risposte valide.

È possibile proteggere i dati archiviati nell'account Azure Cosmos db tramite i firewall IP. Azure Cosmos DB supporta i controlli di accesso IP per il supporto del firewall in ingresso. È possibile impostare un firewall IP per l'account Azure Cosmos DB in uno dei modi seguenti:

  • Dal portale di Azure
  • Creando in modo dichiarativo un modello di Azure Resource Manager
  • A livello programmatico tramite l'interfaccia della riga di comando di Azure o Azure Powershell, aggiornando la proprietà ipRangeFilter

Configurare un firewall IP usando il portale di Azure

Per configurare i criteri di controllo dell'accesso agli indirizzi IP nel portale di Azure, passare alla pagina dell'account Azure Cosmos DB e selezionare Firewall e reti virtuali nel menu di navigazione. Modificare il valore Consentire l'accesso da su Reti selezionatee quindi selezionare Salva. Se si modificano le impostazioni di rete di accesso pubblico, disabilitandola o consentendola per tutte le reti, si perderà l'INDIRIZZO IP del firewall configurato in precedenza.

Screenshot che mostra come aprire la pagina Firewall nel portale di Azure

Quando il controllo dell'accesso IP è attivato, il portale di Azure offre la possibilità di specificare gli indirizzi IP, gli intervalli degli indirizzi IP e le opzioni. Le opzioni consentono l'accesso al portale di Azure e ad altri servizi di Azure. Nelle sezioni seguenti vengono fornite informazioni dettagliate su queste opzioni.

Nota

Dopo aver abilitato i criteri di controllo dell'accesso a un indirizzo IP per l'account di Azure Cosmos DB, qualsiasi richiesta all'account di Azure Cosmos DB da computer non inclusi nell'elenco degli intervalli di indirizzi IP consentiti viene respinto. Anche l'esplorazione delle risorse di Azure Cosmos DB dal portale viene bloccata per garantire l'integrità del controllo di accesso.

Consentire le richieste dal portale di Azure

Quando si abilitano i criteri di controllo di accesso IP a livello di codice, è necessario aggiungere l'indirizzo IP per il portale di Azure alla proprietà ipRangeFilter per mantenere l'accesso. Gli indirizzi IP del portale sono i seguenti:

Area Indirizzo IP
Cina 139.217.8.252
US Gov 52.244.48.71
Tutte le altre aree 104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26

È possibile abilitare le richieste di accesso al portale di Azure selezionando l'opzione Consenti l'accesso da portale di Azure, come illustrato nello screenshot seguente:

Screenshot che mostra come abilitare l'accesso al portale di Azure

Nuovi indirizzi IP portale di Azure

I servizi portale di Cosmos DB stanno passando alla nuova infrastruttura nel 2024. Nell'ambito di questa transizione, gli account con firewall abilitato richiedono che nuovi indirizzi IP possano continuare ad accedere ad alcune funzionalità del portale, ad esempio Esplora dati. Questo spostamento introduce anche indirizzi IP dedicati per gli account dell'API Mongo DB e Apache Cassandra.

Durante questa transizione, l'opzione Consenti l'accesso da portale di Azure aggiunge indirizzi IP correnti e nuovi alle impostazioni del firewall dell'account (inclusi gli indirizzi specifici di MongoDB e Cassandra per tali account) Al termine della transizione, verrà resa disponibile un'opzione del portale per rimuovere gli indirizzi IP precedenti.

Pubblico di Azure
API dell'account di database Indirizzi IP
Tutte le date 13.91.105.215, 4.210.172.107, 13.88.56.148, 40.91.218.243
Solo MongoDB 20.245.81.54, 40.118.23.126, 40.80.152.199, 13.95.130.121
Solo Apache Cassandra 40.113.96.14, 104.42.11.145, 137.117.230.240, 168.61.72.237
Azure Cina
API dell'account di database Indirizzi IP
Tutte le date 163.228.137.6, 143.64.170.142
Solo MongoDB 52.131.240.99, 143.64.61.130
Solo Apache Cassandra 40.73.99.146, 143.64.62.47
Azure Governo Statunitense
API dell'account di database Indirizzi IP
Tutte le date 52.247.163.6, 52.244.134.181
Solo MongoDB 52.244.176.112, 52.247.148.42
Solo Apache Cassandra 52.244.50.101, 52.227.165.24

Nota

Se si verificano problemi di connessione all'account Azure Cosmos DB dalla Esplora dati, vedere la guida alla risoluzione dei problemi di Esplora dati.

Consentire le richieste dai data center globali di Azure o da altre origini all'interno di Azure

Se si accede all'account Azure Cosmos DB dai servizi che non forniscono un indirizzo IP statico (ad esempio Analisi di flusso di Azure, Funzioni di Azure) è comunque possibile usare il firewall IP per limitare l'accesso. È possibile abilitare l'accesso da altre origini all'interno di Azure selezionando l'opzione Accetta connessioni dai data center di Azure, come illustrato nello screenshot seguente:

Screenshot che mostra come accettare le connessioni dai data center di Azure

Quando si abilita questa opzione, l'indirizzo 0.0.0.0 IP viene aggiunto all'elenco di indirizzi IP consentiti. L'indirizzo 0.0.0.0 IP limita le richieste all'account Azure Cosmos DB dall'intervallo ip del data center di Azure. Questa impostazione non consente l'accesso ad altri intervalli IP all'account Azure Cosmos DB.

Nota

Questa opzione permette di configurare il firewall in maniera tale da consentire tutte le richieste da Azure, incluse le richieste dalle sottoscrizioni di altri clienti distribuite in Azure. L'elenco di indirizzi IP consentiti da questa opzione è ampia perciò limita l'efficacia di un criterio firewall. Usare questa opzione solo se le richieste non hanno origine da indirizzi IP statici o subnet nelle reti virtuali. Scegliendo automaticamente questa opzione viene consentito l'accesso dal portale di Azure poiché il portale di Azure viene distribuito in Azure.

Richieste dall'IP corrente

Per semplificare lo sviluppo, il portale di Azure consente di identificare e aggiungere l'indirizzo IP del computer client all'elenco di indirizzi consentiti. Le app in esecuzione nel computer possono quindi accedere all'account Azure Cosmos DB.

L'indirizzo IP del client viene rilevato automaticamente dal portale. Potrebbe trattarsi dell'indirizzo IP del client del computer oppure dell'indirizzo IP del gateway di rete. Assicurarsi di rimuovere questo indirizzo IP prima di eseguire i carichi di lavoro nell'ambiente di produzione.

Per aggiungere l'indirizzo IP corrente all'elenco di indirizzi IP, selezionare Aggiungi indirizzo IP corrente. Quindi selezionare Salva.

Screenshot che mostra come configurare le impostazioni del firewall per l'IP corrente

Richieste da servizi cloud

In Azure, i servizi cloud sono uno strumento comune per ospitare la logica del servizio di livello intermedio usando Azure Cosmos DB. Per consentire l'accesso a un account di Azure Cosmos DB da un servizio cloud, è necessario aggiungere l'indirizzo IP pubblico del servizio cloud all'elenco di indirizzi IP consentiti associato all'account di Azure Cosmos DB configurando il criterio di controllo dell'accesso agli indirizzi IP. In questo modo, tutte le istanze del ruolo dei servizi cloud hanno accesso all'account di Azure Cosmos DB.

È possibile recuperare gli indirizzi IP per i servizi cloud nel portale di Azure, come mostrato nello screenshot seguente:

Screenshot che mostra l'indirizzo IP pubblico per un servizio cloud visualizzato nel portale di Azure

Quando si aumenta il numero di istanze del servizio cloud aggiungendo istanze del ruolo, le nuove istanze hanno automaticamente accesso all'account di Azure Cosmos DB dal momento che fanno parte dello stesso servizio cloud.

Richieste da macchine virtuali

Per ospitare servizi di livello intermedio con Azure Cosmos DB è possibile usare anche macchine virtuali o set di scalabilità di macchine virtuali. Per configurare l'account Azure Cosmos DB in modo che consenta l'accesso dalle macchine virtuali, è necessario configurare l'indirizzo IP pubblico della macchina virtuale e/o del set di scalabilità di macchine virtuali come uno degli indirizzi IP consentiti per l'account Azure Cosmos DB configurando i criteri di controllo di accesso IP.

È possibile recuperare gli indirizzi IP per le macchine virtuali nel portale di Azure, come mostrato nello screenshot seguente:

Screenshot che mostra un indirizzo IP pubblico per una macchina virtuale visualizzata nel portale di Azure

Quando si aggiungono istanze di macchina virtuale al gruppo, queste ricevono automaticamente l'accesso all'account di Azure Cosmo DB.

Richieste da Internet

Quando si accede a un account di Azure Cosmos DB da un computer in Internet, l'indirizzo IP o l'intervallo di indirizzi IP client del computer deve essere aggiunto all'elenco di indirizzi IP consentiti per l'account di Azure Cosmos.

Aggiungere regole in uscita al firewall

Per accedere a un elenco corrente di intervalli IP in uscita da aggiungere alle impostazioni del firewall, vedere Scaricare intervalli IP e tag di servizio di Azure.

Per automatizzare l'elenco, vedere Usare l'API individuazione tag del servizio.

Configurare un firewall IP usando un modello di Resource Manager

Per configurare il controllo di accesso all'account Azure Cosmos DB, assicurarsi che il modello di Resource Manager specifichi la proprietà ipRules con una matrice di intervalli IP consentiti. Se si configura firewall IP in un account Azure Cosmos DB già distribuito, verificare che la locations matrice corrisponda a quella attualmente distribuita. Non è possibile modificare contemporaneamente la matrice locations e altre proprietà. Per altre informazioni ed esempi di modelli di Azure Resource Manager per Azure Cosmos DB, vedere Modelli di Azure Resource Manager per Azure Cosmos DB

Importante

La proprietà ipRules è stata introdotta con l'API versione 2020-04-01. Le versioni precedenti hanno esposto invece una proprietà ipRangeFilter , ovvero un elenco di indirizzi IP delimitati da virgole.

L'esempio seguente mostra come la proprietà ipRules viene esposta nell'API versione 2020-04-01 o successiva:

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2020-04-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRules": [
      {
        "ipAddressOrRange": "40.76.54.131"
      },
      {
        "ipAddressOrRange": "52.176.6.30"
      },
      {
        "ipAddressOrRange": "52.169.50.45"
      },
      {
        "ipAddressOrRange": "52.187.184.26"
      }
    ]
  }
}

Di seguito è riportato lo stesso esempio per qualsiasi versione dell'API precedente alla versione 2020-04-01:

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "enableAutomaticFailover": "[parameters('automaticFailover')]",
    "ipRangeFilter":"40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26"
  }
}

Configurare un criterio di controllo di accesso IP usando l'interfaccia della riga di comando di Azure

Il comando seguente illustra come creare un account Azure Cosmos DB con controllo di accesso IP:

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
resourceGroupName='MyResourceGroup'
accountName='mycosmosaccount'
ipRangeFilter='192.168.221.17,183.240.196.255,40.76.54.131'

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --locations regionName='East US 2' failoverPriority=1 isZoneRedundant=False \
    --ip-range-filter $ipRangeFilter

Configurare un criterio di controllo di accesso IP usando PowerShell

Lo script seguente illustra come creare un account Azure Cosmos DB con controllo di accesso IP:

# Create an Azure Cosmos DB account with default values and IP Firewall enabled
$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$ipRules = @("192.168.221.17","183.240.196.255","40.76.54.131")

$locations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0; "isZoneRedundant"=False },
    @{ "locationName"="East US 2"; "failoverPriority"=1, "isZoneRedundant"=False }
)

# Make sure there are no spaces in the comma-delimited list of IP addresses or CIDR ranges.
$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$locations;
    "ipRules"=$ipRules
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2020-04-01" -ResourceGroupName $resourceGroupName `
    -Name $accountName -PropertyObject $CosmosDBProperties

Risolvere i problemi con un criterio di controllo di accesso IP

È possibile risolvere i problemi con un criterio di controllo accesso IP usando le opzioni seguenti:

Azure portal

Abilitando i criteri di controllo dell'accesso agli indirizzi IP per l'account di Azure Cosmos DB, viene bloccata qualsiasi richiesta all'account da computer non inclusi nell'elenco degli intervalli di indirizzi IP consentiti. Per abilitare operazioni sul piano dati del portale, ad esempio l'esplorazione di contenitori e le query nei documenti, è quindi necessario consentire esplicitamente l'accesso al portale di Azure usando il riquadro Firewall nel portale.

SDK

Quando si accede a risorse di Azure Cosmos DB usando gli SDK da computer che non sono presenti nell'elenco consentito, viene restituita una risposta generica di tipo 403 Accesso negato senza altri dettagli. Verificare l'elenco di IP consentiti per l'account e assicurarsi che la configurazione corretta dei criteri venga applicata all'account Azure Cosmos DB.

IP di origine nelle richieste bloccate

Abilitare la registrazione diagnostica nell'account Azure Cosmos DB. Questi log mostrano ogni richiesta e risposta. I messaggi relativi al firewall vengono registrati con un codice di errore 403. Filtrando questi messaggi, è possibile visualizzare gli IP di origine per le richieste bloccate. Vedere Registrazione diagnostica di Azure Cosmos DB.

Richieste provenienti da una subnet con endpoint di servizio per Azure Cosmos DB abilitato

Le richieste provenienti da una subnet nella rete virtuale che dispone di un endpoint del servizio per Azure Cosmos DB abilitato invia la rete virtuale e l'identità del subnet per gli account Azure Cosmos DB. Queste richieste non dispongono dell'indirizzo IP pubblico dell'origine perciò vengono rifiutati dai filtri IP. Per consentire l'accesso da subnet specifiche nelle reti virtuali, aggiungere un elenco di controllo di accesso della rete virtuale descritta in Come configurare la rete virtuale e l'accesso basato su subnet per l'account Azure Cosmos DB. L'applicazione delle regole del firewall può richiedere fino a 15 minuti e il firewall può presentare un comportamento incoerente durante questo periodo.

Indirizzi IP privati nell'elenco di indirizzi consentiti

La creazione o l'aggiornamento di un account Azure Cosmos DB con un elenco di indirizzi IP privati contenenti indirizzi IP privati avranno esito negativo. Assicurarsi che nell'elenco non sia specificato alcun indirizzo IP privato.

Passaggi successivi

Per configurare un endpoint servizio di rete virtuale per l'account Azure Cosmos DB, vedere gli articoli seguenti: