Compartir a través de


Protección de recursos de Azure Cosmos DB con bloqueos

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Como administrador, puede ser que tengas que bloquear una cuenta, base de datos o contenedor de Azure Cosmos DB. Los bloqueos impiden que otros usuarios de la organización eliminen o modifiquen accidentalmente los recursos críticos. Puede establecer el nivel de bloqueo en CanNotDelete o ReadOnly.

Nivel Descripción
CanNotDelete Los usuarios autorizados pueden leer y modificar recursos, pero no eliminarlos.
ReadOnly Los usuarios autorizados solo pueden leer recursos, pero no actualizarlos ni eliminarlos. Aplicar este bloqueo es similar a restringir todos los usuarios autorizados a los permisos concedidos por el rol Lector.

Requisitos previos

Cómo se aplican los bloqueos

Cuando se aplica un bloqueo en un ámbito primario, todos los recursos heredan el mismo bloqueo. Incluso los recursos que agregue posteriormente heredan el bloqueo del elemento primario. El bloqueo más restrictivo de toda la herencia tiene prioridad.

A diferencia del control de acceso basado en rol de Azure, los bloqueos de administración se usan para aplicar una restricción a todos los usuarios y roles. Para obtener información acerca del control de acceso basado en rol para Azure Cosmos DB, vea Control de acceso basado en rol en Azure Cosmos DB.

Los bloqueos de Resource Manager solo se aplican a las operaciones que se producen en el plano de administración, que se compone de las operaciones enviadas a https://management.azure.com. Los bloqueos no restringen cómo los recursos realizan sus propias funciones. Los cambios de recursos están restringidos, pero las operaciones de recursos no lo están. Por ejemplo, un bloqueo ReadOnly en un contenedor de Azure Cosmos DB impide que lo elimine o modifique. Pero no le impide crear, actualizar o eliminar datos de este. Se permiten las transacciones de datos porque esas operaciones no se envían a https://management.azure.com.

Administración de bloqueos

Los bloqueos de recursos no funcionan para los cambios que realizan los usuarios que acceden a Azure Cosmos DB mediante claves de cuenta, a menos que la cuenta de Azure Cosmos DB se bloquee por primera vez habilitando la propiedad disableKeyBasedMetadataWriteAccess. Asegúrese de que esta propiedad no interrumpa las aplicaciones existentes que realicen cambios en los recursos mediante ningún SDK, Azure Portal o herramientas de terceros. Al habilitar esta propiedad, se interrumpirán las aplicaciones que se conecten a través de claves de cuenta para modificar los recursos. Estas modificaciones podrían incluir cambiar el rendimiento, actualizar directivas de índice, etc. Para más información y para revisar una lista de comprobación con la que asegurarse de que las aplicaciones sigan funcionando, consulte Impedir cambios de los SDK de Azure Cosmos DB

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

En primer lugar, actualice la cuenta para evitar cambios por cualquier cosa que se conecte a través de claves de cuenta.

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

Cree una eliminación de bloqueo en un recurso de cuenta de Azure Cosmos DB y todos los recursos secundarios.

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

Plantilla

Al aplicar un bloqueo a un recurso de Azure Cosmos DB, use el recurso Microsoft.Authorization/locks de Azure Resource Manager (ARM).

{
  "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'))]"
}

Ejemplos

Administración de bloqueos de recursos para Azure Cosmos DB:

Pasos siguientes