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.
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:
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:
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.
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:
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:
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.