Condividi tramite


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 portale di Azure di accedere all'account. L'accesso è necessario per consentire l'uso di Esplora dati e recuperare le metriche per l'account visualizzato 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 la subnet e il controllo di accesso alla rete virtuale. Combinandole, è possibile limitare l'accesso a qualsiasi origine con un indirizzo IP pubblico e/o da una subnet specifica all'interno della rete virtuale. Per altre informazioni sull'uso della subnet e del controllo degli accessi in base alla rete virtuale, vedere Accedere alle risorse di Azure Cosmos DB dalle 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 List (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 di 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 tramite 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 perde l'IP del firewall che potrebbe essere stato 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 scenari del portale che richiedono l'abilitazione di questa opzione includono:

  • Accedere all'API per MongoDB o all'API per gli account Apache Cassandra con Esplora dati o <cosmos.azure.com>
  • Usando i pannelli di Azure Cosmos DB seguenti all'interno del portale di Azure:
    • Replica globale dei dati
    • Sfoglia le raccolte
    • Power BI
    • Azure Synapse

Gli indirizzi IP del portale sono i seguenti:

Paese Indirizzo IP
Cina 139.217.8.252
US Gov 52.244.48.71
Tutte le altre aree 104.42.195.92

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

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

Nuovi indirizzi IP del 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, viene resa disponibile un'opzione del portale per rimuovere gli indirizzi IP precedenti.

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

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 che mostra come accettare le connessioni dai data center 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 per 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 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 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 locations matrice 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 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": "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 al 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 alle risorse di Azure Cosmos DB tramite SDK da computer non inclusi nell'elenco consentito, viene restituita una risposta generica 403 Accesso negato senza dettagli aggiuntivi. 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 potrebbe 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 CONSENTITi contenenti indirizzi IP privati hanno esito negativo. Assicurarsi che nell'elenco non sia specificato alcun indirizzo IP privato.