Configurare un firewall IP in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Per proteggere i dati archiviati in un account personale, Azure Cosmos DB supporta un modello di autorizzazione basato su segreto che usa un codice di autenticazione messaggi basato su hash (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 un account Azure Cosmos DB in modo che sia accessibile solo da un set di computer e/o servizi cloud approvato. Per l'accesso ai dati archiviati nel database Azure Cosmos DB da questi set di computer e servizi approvati, è comunque necessario che il chiamante presenti un token di autorizzazione valido.

Controllo di accesso IP

Per impostazione predefinita, un account Azure Cosmos è accessibile da Internet purché la richiesta sia accompagnata da un token di autorizzazione valido. Per configurare il controllo di accesso IP basato su criteri, l'utente deve fornire il set di indirizzi IP o di intervalli di indirizzi IP in formato CIDR (Classless Inter-Domain Routing), in modo che venga incluso come elenco di IP client consentiti per l'accesso 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 al portale di Azure di accedere all'account, è anche necessario aggiornare le impostazioni del firewall per aggiungere l'indirizzo IP corrente alle regole del firewall. 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 gli elenchi di controllo di accesso della rete virtuale non sono configurati, è possibile accedere all'account Azure Cosmos DB con il token di autorizzazione. Dopo aver configurato il firewall IP e/o gli elenchi di controllo di accesso della rete virtuale 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 tramite il portale di Azure

Per impostare i criteri di controllo di accesso IP nella portale di Azure, passare alla pagina dell'account Azure Cosmos DB e selezionare Rete nel menu di spostamento. Modificare il valore Consentire l'accesso da su Reti selezionatee quindi selezionare Salva. Se non si aggiungono ancora indirizzi IP, è anche necessario selezionare la casella per confermare che tutte le reti virtuali e gli indirizzi IP verranno bloccati. Se si modificano le impostazioni di rete di accesso pubblico, disabilitandola o consentendola per tutte le reti, si perde l'IP del firewall configurato in precedenza.

Screenshot delle impostazioni del firewall di rete di Azure Cosmos DB nella 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 abilita un criterio di controllo di accesso IP a livello di codice, potrebbe essere necessario aggiungere gli indirizzi IP per i servizi portale di Azure alla proprietà ipRangeFilter per continuare a usare alcune funzionalità del portale.

Gli scenari del portale che richiedono l'abilitazione di questa opzione includono:

  • In particolare per l'API per MongoDB o l'API per Apache Cassandra, l'accesso agli account con Esplora dati o <cosmos.azure.com>
  • Per tutte le API, usare i pannelli di Azure Cosmos DB seguenti all'interno del portale di Azure:
    • Sfoglia le raccolte
    • Power BI
    • Azure Synapse

È possibile abilitare le richieste di accesso al portale di Azure selezionando l'opzione Aggiungi indirizzi IP middleware del portale di Azure, come illustrato nello screenshot seguente:

Screenshot delle opzioni per aggiungere indirizzi IP middleware alla rete nel portale di Azure.

Gli indirizzi IP middleware del portale di Azure verranno aggiunti a un elenco separato, come illustrato nello screenshot seguente. Fare clic su Salva per aggiungere questi indirizzi all'account del database. Altre informazioni sugli indirizzi IP middleware sono disponibili più avanti in questo articolo.

Screenshot dell'elenco di indirizzi IP middleware per la rete nel portale di Azure.

È possibile rimuovere gli indirizzi IP middleware del portale di Azure facendo clic sull'opzione Rimuovi indirizzi IP middleware del portale di Azure e quindi selezionando Salva.

Indirizzi IP middleware del portale di Azure

Di seguito sono elencati gli indirizzi IP middleware del portale di Azure. Alcuni indirizzi IP sono necessari solo per api dell'account di database specifiche. Quando si aggiungono gli indirizzi IP middleware nel portale, come descritto in precedenza, verranno aggiunti solo gli indirizzi IP necessari per l'account.

Ad esempio:

  • Per un account API per NoSQL, verranno aggiunti gli indirizzi IP della categoria Tutti .

  • Per un account API per MongoDB, verranno aggiunti solo gli indirizzi IP delle categorie All e MongoDB .

Pubblico di Azure
API dell'account 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 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 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

Indirizzi IP middleware legacy

I servizi del portale di Cosmos DB sono passati di recente alla nuova infrastruttura che richiedeva nuovi indirizzi IP middleware. Con il completamento di tale transizione, gli indirizzi IP legacy usati dall'infrastruttura precedente possono ora essere rimossi in modo sicuro. Se l'account ha indirizzi IP middleware legacy presenti nelle regole del firewall, verrà visualizzata l'opzione Rimuovi indirizzi IP middleware legacy del portale di Azure. Selezionare l'opzione e quindi Salva per rimuovere gli indirizzi IP legacy.

Screenshot dell'opzione per rimuovere gli indirizzi IP middleware legacy per la rete nel portale di Azure.

Gli indirizzi IP legacy dipendono dall'ambiente cloud:

Ambiente di Azure Indirizzi IP
Pubblico di Azure 104.42.195.92, 40.76.54.131, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure Cina 139.217.8.252, 52.176.6.30, 52.169.50.45, 52.187.184.26
Azure Governo Statunitense 52.244.48.71, 52.176.6.30, 52.169.50.45, 52.187.184.26

Nota

Se si verificano problemi di connessione all'account Azure Cosmos DB da 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 dell'opzione per accettare connessioni dall'interno dei data center di Azure pubblici nella portale di Azure.

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

Nota

L'impostazione di publicNetworkAccess su Disabled ha la precedenza su questa opzione Accetta connessione dall'interno dei data center di Azure. Vedere blocking-public-network-access-during-account-creation

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 l'indirizzo IP corrente. Quindi selezionare Salva.

Screenshot dell'opzione per aggiungere l'indirizzo IP corrente alla rete nel portale di Azure.

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 da macchine virtuali, è necessario configurare gli indirizzi IP pubblici della macchina virtuale e/o del set di scalabilità di macchine virtuali come uno degli indirizzi IP consentiti per l'account di Azure Cosmos DB configurando il criterio di controllo dell'accesso agli indirizzi 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 attuale di intervalli di indirizzi IP in uscita da aggiungere alle impostazioni del firewall, vedere Scaricare gli intervalli IP e i tag del servizio di Azure.

Per automatizzare l'elenco, vedere Usare l'API di individuazione dei 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 il firewall IP per un account Azure Cosmos DB già distribuito, assicurarsi che la matrice locations 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 una proprietà ipRangeFilter, ovvero un elenco di indirizzi IP delimitati da virgole.

L'esempio illustra come viene esposta la proprietà ipRules 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": "13.91.105.215"
      },
      {
        "ipAddressOrRange": "4.210.172.107"
      },
      {
        "ipAddressOrRange": "13.88.56.148"
      },
      {
        "ipAddressOrRange": "40.91.218.243"
      }
    ]
  }
}

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":"13.91.105.215,4.210.172.107,13.88.56.148,40.91.218.243"
  }
}

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 hanno esito negativo. Assicurarsi che nell'elenco non sia specificato alcun indirizzo IP privato.