Share via


ロックを使用して Azure Cosmos DB リソースを保護する

適用対象: NoSQL MongoDB Cassandra Gremlin Table

管理者として、Azure Cosmos DB アカウント、データベース、またはコンテナーをロックする必要がある場合があります。 ロックにより、組織内の他のユーザーが重要なリソースを誤って削除または変更することを防ぎます。 ロック レベルは、CanNotDelete または ReadOnly に設定できます。

Level 説明
CanNotDelete 許可されているユーザーはリソースの読み取りと変更はできますが、リソースを削除することはできません。
ReadOnly 許可されているユーザーはリソースの読み取りはできますが、リソースを削除または更新することはできません。 このロックの適用は、すべての正規ユーザーのアクセス許可を、閲覧者ロールによって与えられるアクセス許可に制限することに似ています。

前提条件

ロックが適用されるしくみ

親スコープでロックを適用すると、そのスコープ内のすべてのリソースは同じロックを継承します。 後で追加するリソースも、親からロックを継承します。 継承されるロックの中で最も制限の厳しいロックが優先されます。

Azure ロールベースのアクセス制御とは異なり、管理ロックを使用すると、すべてのユーザーとロールに対して制限を適用することができます。 Azure Cosmos DB のロールベースのアクセス制御の詳細については、「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、またはサード パーティ製のツールを使ってリソースに変更を加える既存のアプリケーションが、このプロパティによって中断されないことを確認します。 このプロパティを有効にすると、アカウント キーを介して接続してリソースを変更するアプリケーションが中断されます。 これらの変更には、スループットの変更やインデックス ポリシーの更新などが含まれることがあります。詳細について、およびアプリケーションが引き続き機能することを確認するためのチェックリストについては、「Azure Cosmos DB SDK からの変更の防止」を参照してください

$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 のリソース ロックを管理します。

次のステップ