ロックを使用して Azure Cosmos DB リソースを保護する
適用対象: NoSQL MongoDB Cassandra Gremlin Table
管理者として、Azure Cosmos DB アカウント、データベース、またはコンテナーをロックする必要がある場合があります。 ロックにより、組織内の他のユーザーが重要なリソースを誤って削除または変更することを防ぎます。 ロック レベルは、CanNotDelete
または ReadOnly
に設定できます。
Level | 説明 |
---|---|
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 portal、またはサード パーティ製のツールを使ってリソースに変更を加える既存のアプリケーションが、このプロパティによって中断されないことを確認します。 このプロパティを有効にすると、アカウント キーを介して接続してリソースを変更するアプリケーションが中断されます。 これらの変更には、スループットの変更、インデックス ポリシーの更新などが含まれます。
$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 リソースにロックを適用する場合、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 のリソース ロックを管理します。
- Cassandra API のキースペースとテーブル Azure CLI | Azure PowerShell
- Gremlin API のデータベースとグラフ Azure CLI | Azure PowerShell
- MongoDB API のデータベースとコレクション Azure CLI| Azure PowerShell
- NoSQL API のデータベースとコンテナー Azure CLI | Azure PowerShell
- Table API のテーブル Azure CLI | Azure PowerShell