Поделиться через


Защита ресурсов Azure Cosmos DB с помощью блокировок

Область применения: Nosql Mongodb Кассандра Гремлин Таблица

Администратору может потребоваться заблокировать учетную запись Azure Cosmos DB, базу данных или контейнер. Блокировка предотвращает случайное удаление или изменение критических ресурсов другими пользователями в организации. Можно установить уровень блокировки CanNotDelete или ReadOnly.

Level Description
CanNotDelete Авторизованные пользователи смогут только читать и изменять этот ресурс, но не удалять его.
ReadOnly Авторизованные пользователи смогут читать ресурс, но не смогут его удалить или обновить. Применение этой блокировки подобно ограничению авторизованных пользователей с помощью разрешений, предоставляемых для роли Читатель.

Необходимые компоненты

Применение блокировок

При применении блокировки к родительской области все ресурсы в этой области наследуют ту же блокировку. Даже ресурсы, добавляемые позже, наследуют блокировку от родительского ресурса. Приоритет имеет наиболее строгая блокировка.

В отличие от управления доступом на основе ролей административные блокировки позволяют применить ограничения для всех пользователей и ролей.

Блокировки Resource Manager применяются только к операциям, выполняемым в плоскости управления, которая включает в себя операции, передаваемые на https://management.azure.com. Эти блокировки не мешают ресурсам осуществлять свои собственные операции. Ограничиваются изменения ресурсов, но не операции с ними. Например, блокировка ReadOnly в контейнере Azure Cosmos DB запрещает удаление или изменение контейнера. Однако она не мешает создавать, обновлять и удалять данные в контейнере. Транзакции с данными разрешены, поскольку эти операции не отправляются в https://management.azure.com.

Управление блокировками

Блокировки ресурсов не работают для изменений, внесенных пользователями, обращающимися к Azure Cosmos DB с помощью ключей учетных записей, если только учетная запись Azure Cosmos DB не заблокирована, включив disableKeyBasedMetadataWriteAccess это свойство. Это свойство следует включать с осторожностью, чтобы не нарушить работу существующих приложений, которые вносят изменения в ресурсы с помощью любого пакета SDK, портала Azure или сторонних средств. Включение этого свойства нарушает приложения, которые подключаются через ключи учетной записи для изменения ресурсов. Эти изменения могут включать изменение пропускной способности, обновление политик индекса и т. д.

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

Сначала обновите учетную запись таким образом, чтобы предотвратить внесение изменений с помощью ключей учетной записи.

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

Создайте блокировку удаления для ресурса учетной записи Azure Cosmos DB и всех дочерних ресурсов.

$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

При применении блокировки к ресурсу Azure Cosmos DB используйте ресурс 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'))]"
}

Примеры

Управление блокировками ресурсов для Базы данных Cosmos Azure:

Следующие шаги