使用鎖定來保護 Azure Cosmos DB 資源
適用於:NoSQL MongoDB Cassandra Gremlin 桌子
身為管理員,您可能需要鎖定 Azure Cosmos DB 帳戶、資料庫或容器。 鎖定可避免組織中其他使用者不小心刪除或修改重要資源。 您可以將鎖定層級設定為 CanNotDelete
或 ReadOnly
。
層級 | 描述 |
---|---|
CanNotDelete |
授權使用者仍可讀取或修改資源,但無法刪除資源。 |
ReadOnly |
授權使用者可以讀取資源,但無法刪除或更新資源。 套用這個鎖定類似於限制所有經過授權使用者的權限是由讀者角色所授與。 |
必要條件
- 現有的 Azure Cosmos DB 帳戶。
- 如果您有 Azure 訂用帳戶,則請建立新的帳戶。
- 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- 或者,您可以在認可之前免費試用 Azure Cosmos DB。
如何套用鎖定
當您在父範圍套用鎖定時,該範圍內的所有資源都會都繼承相同的鎖定。 甚至您稍後新增的資源都會繼承父項的鎖定。 繼承中限制最嚴格的鎖定優先順序最高。
不同於 Azure 角色型存取控制,您可以使用管理鎖定來對所有使用者和角色套用限制。
Resource Manager 鎖定只會套用於管理平面發生的作業,亦即要傳送至 https://management.azure.com
的作業。 鎖定並不會限制資源執行自己功能的方式。 限制資源的變更,但沒有限制資源的作業。 例如,Azure Cosmos DB 容器上的 ReadOnly 鎖定可防止您刪除或修改容器。 但無法防止您建立、更新或刪除容器中的資料。 允許資料交易,因為那些作業並不會傳送到 https://management.azure.com
。
管理鎖定
除非啟用 disableKeyBasedMetadataWriteAccess
屬性已先鎖定 Azure Cosmos DB 帳戶,否則,資源鎖定不適用於使用者使用帳戶金鑰存取 Azure Cosmos DB 所做的變更。 請確定此屬性不會中斷使用任何 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
範本
套用鎖定至 Azure Cosmos DB 資源時,請使用 Microsoft.Authorization/locks
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'))]"
}
範例
管理 Azure Cosmos DB 的資源鎖定:
- API for Cassandra Keyspace 和資料表 Azure CLI | Azure PowerShell
- API for Gremlin 資料庫和圖形 Azure CLI | Azure PowerShell
- API for MongoDB 資料庫和集合 Azure CLI| Azure PowerShell
- API for NoSQL 資料庫和容器 Azure CLI | Azure PowerShell
- API for Table 資料表 Azure CLI | Azure PowerShell