Partager via


Protéger les ressources Azure Cosmos DB avec des verrous

S’APPLIQUE À : NoSQL MongoDB Cassandra Gremlin Table

En tant qu’administrateur, vous pouvez être amené à verrouiller un compte, une base de données ou un conteneur Azure Cosmos DB. Les verrous empêchent les autres utilisateurs de votre organisation de supprimer ou de modifier accidentellement des ressources critiques. Vous pouvez définir le niveau de verrouillage sur CanNotDelete ou sur ReadOnly.

Level Description
CanNotDelete Les utilisateurs autorisés peuvent toujours lire et modifier une ressource, mais pas la supprimer.
ReadOnly Les utilisateurs autorisés peuvent lire une ressource, mais pas la supprimer ou la mettre à jour. Appliquer ce verrou revient à limiter à tous les utilisateurs autorisés les autorisations accordées par le rôle Lecteur.

Prérequis

Application des verrous

Lorsque vous appliquez un verrou à une étendue parente, toutes les ressources de cette étendue héritent du même verrou. Même les ressources que vous ajoutez par la suite héritent du verrou du parent. Le verrou le plus restrictif de l’héritage est prioritaire.

Contrairement au contrôle d'accès basé sur les rôles Azure, vous utilisez des verrous de gestion pour appliquer une restriction à tous les utilisateurs et rôles.

Les verrous Resource Manager s'appliquent uniquement aux opérations qui se produisent dans le plan de gestion, c'est-à-dire les opérations envoyées à https://management.azure.com. Les verrous ne limitent pas la manière dont les ressources exécutent leurs propres fonctions. Les modifications des ressources sont limitées, mais pas les opérations sur les ressources. Par exemple, un verrou ReadOnly appliqué à un conteneur Azure Cosmos DB vous empêchera de supprimer ou de modifier le conteneur. Il ne vous empêche pas de créer, de mettre à jour ou de supprimer des données dans le conteneur. Les transactions de données sont autorisées, car ces opérations ne sont pas envoyées à https://management.azure.com.

Gérer les verrous

Les verrous de ressources ne fonctionnent pas pour les modifications qui sont apportées par les utilisateurs qui accèdent à Azure Cosmos DB à l’aide de clés de compte, sauf si le compte Azure Cosmos DB est d’abord verrouillé par l’activation de la propriété disableKeyBasedMetadataWriteAccess. Assurez-vous que cette propriété ne bloque pas les applications existantes qui modifient les ressources à l’aide d’un kit de développement logiciel (SDK), du portail Azure ou d’outils tiers. L’activation de cette propriété bloque les applications se connectant avec des clés de compte pour modifier les ressources. Ces modifications peuvent inclure un changement du débit, une mise à jour des stratégies d’index, etc.

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

Commencez par mettre le compte à jour pour empêcher toutes les applications qui se connectent via des clés de compte de modifier les ressources.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

Créez un verrou de suppression sur une ressource de compte Azure Cosmos DB et toutes les ressources enfants.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

Modèle

Lorsque vous appliquez un verrou à une ressource Azure Cosmos DB, utilisez la ressource 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'))]"
}

Exemples

Gérer les verrous de ressources pour Azure Cosmos DB :

Étapes suivantes