Condividi tramite


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

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. Per informazioni sul controllo degli accessi in base al ruolo per Azure Cosmos DB, vedere Controllo degli accessi in base al ruolo di Azure in Azure Cosmos DB.

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. Per altre informazioni e per esaminare un elenco di controllo per assicurarsi che le applicazioni continuino a funzionare, vedere Impedire le modifiche dagli SDK di Azure Cosmos DB

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

Passaggi successivi