Proteggere le risorse di Azure Cosmos DB con blocchi
SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella
In qualità di amministratore, potrebbe essere necessario bloccare un account, un database o un contenitore di Azure Cosmos DB. I blocchi impediscono agli altri utenti dell'organizzazione di modificare o eliminare accidentalmente risorse di importanza fondamentale. È possibile impostare il livello di blocco su CanNotDelete
o su ReadOnly
.
Livello | Descrizione |
---|---|
CanNotDelete |
Gli utenti autorizzati possono leggere e modificare una risorsa, ma non eliminarla. |
ReadOnly |
Gli utenti autorizzati possono leggere una risorsa, ma non eliminarla o aggiornarla. L'applicazione di questo blocco è simile alla concessione a tutti gli utenti autorizzati delle sole autorizzazioni concesse dal ruolo Lettore. |
Prerequisiti
- Un account Azure Cosmos DB esistente.
- Se si dispone di una sottoscrizione di Azure, creare un nuovo account.
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
- In alternativa, è possibile provare Azure Cosmos DB gratuitamente prima di eseguire il commit.
Come vengono applicati i blocchi
Quando si applica un blocco in un ambito padre, tutte le risorse in tale ambito ereditano lo stesso blocco. Anche le risorse aggiunte successivamente ereditano il blocco dal padre. Il blocco più restrittivo nell'ereditarietà ha la precedenza.
Diversamente dal controllo degli accessi in base al ruolo di Azure, i blocchi di gestione consentono di applicare una restrizione a tutti gli utenti e i ruoli.
I blocchi di Resource Manager si applicano solo alle operazioni che si verificano nel piano di gestione, costituito da operazioni inviate a https://management.azure.com
. I blocchi non limitano il modo in cui le risorse eseguono le proprie funzioni. Vengono limitate le modifiche alle risorse, ma non le operazioni delle risorse. Ad esempio, un blocco ReadOnly in un contenitore di Azure Cosmos DB impedisce l'eliminazione o la modifica del contenitore. Non impedisce la creazione, l'aggiornamento o l'eliminazione di dati nel contenitore. Le transazioni di dati sono consentite in quanto tali operazioni non vengono inviate a https://management.azure.com
.
Gestire i blocchi
I blocchi delle risorse non funzionano per le modifiche apportate dagli utenti che accedono ad Azure Cosmos DB usando chiavi dell'account, a meno che l'account Azure Cosmos DB non venga prima bloccato abilitando la proprietà disableKeyBasedMetadataWriteAccess
. Assicurarsi che questa proprietà non interrompa le applicazioni esistenti che apportano modifiche alle risorse usando qualsiasi SDK, portale di Azure o strumenti di terze parti. L'abilitazione di questa proprietà interrompe le applicazioni che si connettono tramite chiavi dell'account per modificare le risorse. Queste modifiche possono includere la modifica della velocità effettiva, l'aggiornamento dei criteri di indice e così via.
$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"
Come prima cosa, aggiornare l'account per impedire modifiche da qualsiasi elemento che si connette tramite le chiavi dell'account.
$parameters = @{
Name = $ACCOUNT_NAME
ResourceGroupName = $RESOURCE_GROUP_NAME
DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters
Creare un blocco di eliminazione in una risorsa dell'account Azure Cosmos DB e in tutte le risorse figlio.
$parameters = @{
ResourceGroupName = $RESOURCE_GROUP_NAME
ResourceName = $ACCOUNT_NAME
LockName = $LOCK_NAME
ApiVersion = "2020-04-01"
ResourceType = "Microsoft.DocumentDB/databaseAccounts"
LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters
Template
Quando si applica un blocco a una risorsa di Azure Cosmos DB, usare la risorsa Azure Resource Manager (ARM) Microsoft.Authorization/locks
.
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2017-04-01",
"name": "cosmoslock",
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
],
"properties": {
"level": "CanNotDelete",
"notes": "Do not delete Azure Cosmos DB account."
},
"scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}
Esempi
Gestire i blocchi delle risorse per Azure Cosmos DB:
- API per keyspace Cassandra e tabella dell'interfaccia della riga di comando | di Azure PowerShell
- API per database Gremlin e grafico dell'interfaccia della riga di comando di Azure | di Azure PowerShell
- API per il database MongoDB e raccolta dell'interfaccia della riga di comando di Azure| di Azure PowerShell
- API per il database NoSQL e contenitore dell'interfaccia della riga di comando di Azure | di Azure PowerShell
- Tabella API per Table dell'interfaccia della riga di comando di Azure | di Azure PowerShell