次の方法で共有


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

適用対象: NoSQL MongoDB Cassandra Gremlin Table

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

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

前提条件

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

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

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

次のステップ