Защита ресурсов Azure Cosmos DB с помощью блокировок
Область применения: Nosql Mongodb Кассандра Гремлин Таблица
Администратору может потребоваться заблокировать учетную запись Azure Cosmos DB, базу данных или контейнер. Блокировка предотвращает случайное удаление или изменение критических ресурсов другими пользователями в организации. Можно установить уровень блокировки CanNotDelete
или ReadOnly
.
Level | Description |
---|---|
CanNotDelete |
Авторизованные пользователи смогут только читать и изменять этот ресурс, но не удалять его. |
ReadOnly |
Авторизованные пользователи смогут читать ресурс, но не смогут его удалить или обновить. Применение этой блокировки подобно ограничению авторизованных пользователей с помощью разрешений, предоставляемых для роли Читатель. |
Необходимые компоненты
- Существующая учетная запись Azure Cosmos DB.
- Если у вас есть подписка Azure, создайте новую учетную запись.
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- Кроме того, перед фиксацией можно воспользоваться бесплатной службой Azure Cosmos DB.
Применение блокировок
При применении блокировки к родительской области все ресурсы в этой области наследуют ту же блокировку. Даже ресурсы, добавляемые позже, наследуют блокировку от родительского ресурса. Приоритет имеет наиболее строгая блокировка.
В отличие от управления доступом на основе ролей административные блокировки позволяют применить ограничения для всех пользователей и ролей.
Блокировки 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:
- API для пространства ключей Cassandra и таблицы Azure CLI | Azure PowerShell
- API для базы данных Gremlin и графа Azure CLI | Azure PowerShell
- API для базы данных MongoDB и коллекции Azure CLI| Azure PowerShell
- API для базы данных NoSQL и контейнера Azure CLI | Azure PowerShell
- API для таблицы Azure CLI | Azure PowerShell