Azure Cosmos DB アカウントを復元するためのアクセス許可を管理する
適用対象: NoSQL MongoDB Gremlin Table
Azure Cosmos DB を使用すると、継続的バックアップ アカウントの復元のアクセス許可を切り分けて、特定のロールまたはプリンシパルに制限することができます。 これらのアクセス許可は、次の図に示すように、サブスクリプション スコープで、またはソース アカウント スコープでよりきめ細かく適用できます。
スコープは、アクセス権があるリソースのセットです。スコープの詳細については、Azure RBAC のドキュメントを参照してください。 Azure Cosmos DB で適用できるスコープは、ほとんどのユース ケースの場合、ソースのサブスクリプションとデータベース アカウントです。 復元操作を実行するプリンシパルには、宛先リソース グループに対する書き込みアクセス許可が必要です。
Azure portal を使用して復元のためのロールを割り当てる
復元を実行するには、ユーザーまたはプリンシパルに、復元するためのアクセス許可 ("復元/アクション" アクセス許可) と、新しいアカウントをプロビジョニングするためのアクセス許可 ("書き込み" アクセス許可) が必要です。 これらのアクセス許可を付与するために、サブスクリプションの所有者は CosmosRestoreOperator
と Cosmos DB Operator
の組み込みロールをプリンシパルに割り当てることができます。
Azure portal にサインインし、サブスクリプションに移動します。
CosmosRestoreOperator
ロールはサブスクリプション レベルで使用できます。[アクセス制御 (IAM)] を選択します。
[追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。
次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。
設定 値 Role CosmosRestoreOperator アクセスの割り当て先 ユーザー、グループ、またはサービス プリンシパル メンバー <任意のユーザー> Cosmos DB オペレーター ロールで手順 4 を繰り返して、書き込みアクセス許可を付与します。 このロールを Azure portal から割り当てると、サブスクリプション全体に対する復元アクセス許可が付与されます。
アクセス許可のスコープ
Scope | 例 |
---|---|
サブスクリプション | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
リソース グループ | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/Example-cosmosdb-rg |
CosmosDB 復元可能アカウント リソース | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e |
復元可能アカウント リソースは、CLI では az cosmosdb restorable-database-account list --account-name <accountname>
コマンド、または PowerShell では Get-AzCosmosDBRestorableDatabaseAccount -DatabaseAccountName <accountname>
コマンドレットの出力から抽出できます。 出力の name 属性は、復元可能アカウントの instanceID
を表します。
復元元のアカウントに対するアクセス許可
次のアクセス許可は、継続的バックアップ モードのアカウントの復元に関連するさまざまなアクティビティの実行に必要です。
注意
アクセス許可は、アカウント スコープまたはサブスクリプション スコープで、復元可能なデータベース アカウントに割り当てることができます。 リソース グループのスコープにアクセス許可を割り当てることはできません。
権限 | 影響 | 最小スコープ | 最大スコープ |
---|---|---|---|
Microsoft.Resources/deployments/validate/action 、Microsoft.Resources/deployments/write |
これらのアクセス許可は、ARM テンプレートのデプロイで、復元されたアカウントを作成するために必要です。 このロールを設定する方法については、次のサンプルのアクセス許可 RestorableAction を参照してください。 | 適用できません | 該当なし |
Microsoft.DocumentDB/databaseAccounts/write |
このアクセス許可は、アカウントをリソース グループに復元するために必要です。 | 復元されたアカウントが作成されるリソース グループ。 | 復元されたアカウントが作成されるサブスクリプション。 |
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action リソース グループをアクセス許可のスコープとして選択することはできません。 |
このアクセス許可は、ソースの復元可能データベース アカウント スコープで、それに対して復元操作を実行できるようにするために必要です。 | 復元するソース アカウントに属する RestorableDatabaseAccount リソース。 この値は、復元可能データベース アカウント リソースの ID プロパティによっても示されます。 復元可能なアカウントの例: /subscriptions/subscriptionId/providers/Microsoft.DocumentDB/locations/regionName/restorableDatabaseAccounts/<guid-instanceid> |
復元可能データベース アカウントを含むサブスクリプション。 |
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read リソース グループをアクセス許可のスコープとして選択することはできません。 |
このアクセス許可は、ソースの復元可能データベース アカウント スコープで、復元できるデータベース アカウントを一覧表示するために必要です。 | 復元するソース アカウントに属する RestorableDatabaseAccount リソース。 この値は、復元可能データベース アカウント リソースの ID プロパティによっても示されます。 復元可能なアカウントの例: /subscriptions/subscriptionId/providers/Microsoft.DocumentDB/locations/regionName/restorableDatabaseAccounts/<guid-instanceid> |
復元可能データベース アカウントを含むサブスクリプション。 |
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read リソース グループをアクセス許可のスコープとして選択することはできません。 |
このアクセス許可は、ソースの復元可能アカウント スコープで、復元可能アカウントのデータベースとコンテナーの一覧などの復元可能リソースを読み取ることができるようにするために必要です。 | 復元するソース アカウントに属する RestorableDatabaseAccount リソース。 この値は、復元可能データベース アカウント リソースの ID プロパティによっても示されます。 復元可能なアカウントの例: /subscriptions/subscriptionId/providers/Microsoft.DocumentDB/locations/regionName/restorableDatabaseAccounts/<guid-instanceid> |
復元可能データベース アカウントを含むサブスクリプション。 |
復元先のアカウントに対するアクセス許可
次のアクセス許可は、継続的バックアップ モードのアカウントの復元に関連するさまざまなアクティビティの実行に必要です。
権限 | 影響 |
---|---|
Microsoft.Resources/deployments/validate/action 、Microsoft.Resources/deployments/write |
これらのアクセス許可は、ARM テンプレートのデプロイで、復元されたアカウントを作成するために必要です。 このロールを設定する方法については、次のサンプルのアクセス許可 RestorableAction を参照してください。 |
Microsoft.DocumentDB/databaseAccounts/write |
このアクセス許可は、アカウントをリソース グループに復元するために必要です。 |
さまざまなスコープで復元するための Azure CLI でのロールの割り当てのシナリオ
アクセス許可を持つロールをさまざまなスコープに割り当てることで、サブスクリプション内または特定のアカウントで復元操作を実行できるユーザーをきめ細かく制御できます。
サブスクリプション内の任意の復元可能アカウントから復元する機能を割り当てる
CosmosRestoreOperator
の組み込みロールを特定のサブスクリプション レベルに割り当てる
az role assignment create --role "CosmosRestoreOperator" --assignee <email> --scope /subscriptions/<subscriptionId>
特定のアカウントから復元する機能を割り当てる
- 特定のリソース グループに対するユーザー書き込みアクションを割り当てます。 このアクションは、リソース グループに新しいアカウントを作成するために必要です。
- 復元する必要がある特定の復元可能データベース アカウントに
CosmosRestoreOperator
組み込みロールを割り当てます。 次のコマンドでは、RestorableDatabaseAccount
のスコープは、az cosmosdb restorable-database-account list
(CLI を使用している場合) またはGet-AzCosmosDBRestorableDatabaseAccount
(PowerShell を使用している場合) の実行結果のID
プロパティから抽出されます。
az role assignment create --role "CosmosRestoreOperator" --assignee <email> --scope <RestorableDatabaseAccount>
リソース グループ内の任意のソース アカウントから復元する機能を割り当てる
この操作は現在サポートされていません。
CLI を使用した復元操作用のカスタム ロールの作成
サブスクリプションの所有者は、他の任意の Microsoft Entra ID に、復元するためのアクセス許可を付与できます。 復元アクセス許可は、アクション Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action
に基づいています。そして、これは復元アクセス許可に含まれている必要があります。 このロールが含まれている CosmosRestoreOperator という名前の組み込みロールがあります。 この組み込みロールを使用してアクセス許可を割り当てることも、カスタム ロールを作成することもできます。
下の RestorableAction はカスタム ロールを表しています。 このロールは明示的に作成する必要があります。 次の JSON テンプレートでは、復元アクセス許可を持つカスタム ロール RestorableAction が作成されます。
{
"assignableScopes": [
"/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f"
],
"description": "Can do a restore request for any Azure Cosmos DB database account with continuous backup",
"permissions": [
{
"actions": [
"Microsoft.Resources/deployments/validate/action",
"Microsoft.DocumentDB/databaseAccounts/write",
"Microsoft.Resources/deployments/write",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read"
],
"dataActions": [],
"notActions": [],
"notDataActions": []
}
],
"Name": "RestorableAction",
"roleType": "CustomRole"
}
次に、以下のテンプレート デプロイ コマンドを使用し、ARM テンプレートを使用して復元アクセス許可を持つロールを作成します。
az role definition create --role-definition <JSON_Role_Definition_Path>
次のステップ
- Azure portal、PowerShell、CLI、または Azure Resource Manager を使用して継続的バックアップをプロビジョニングします。
- SQL および MongoDB アカウントの最新の復元可能なタイプスタンプを取得します。
- Azure portal、PowerShell、CLI、または Azure Resource Manager を使用してアカウントを復元します。
- 定期的なバックアップから継続的バックアップにアカウントを移行します。
- 継続的バックアップ モードのリソース モデル