Azure Cosmos DB アカウントを復元するためのアクセス許可を管理する

適用対象: NoSQL MongoDB Gremlin Table

Azure Cosmos DB を使用すると、継続的バックアップ アカウントの復元のアクセス許可を切り分けて、特定のロールまたはプリンシパルに制限することができます。 これらのアクセス許可は、次の図に示すように、サブスクリプション スコープで、またはソース アカウント スコープでよりきめ細かく適用できます。

List of roles required to perform restore operation.

スコープは、アクセス権があるリソースのセットです。スコープの詳細については、Azure RBAC のドキュメントを参照してください。 Azure Cosmos DB で適用できるスコープは、ほとんどのユース ケースの場合、ソースのサブスクリプションとデータベース アカウントです。 復元操作を実行するプリンシパルには、宛先リソース グループに対する書き込みアクセス許可が必要です。

Azure portal を使用して復元のためのロールを割り当てる

復元を実行するには、ユーザーまたはプリンシパルに、復元するためのアクセス許可 ("復元/アクション" アクセス許可) と、新しいアカウントをプロビジョニングするためのアクセス許可 ("書き込み" アクセス許可) が必要です。 これらのアクセス許可を付与するために、サブスクリプションの所有者は CosmosRestoreOperatorCosmos DB Operator の組み込みロールをプリンシパルに割り当てることができます。

  1. Azure portal にサインインし、サブスクリプションに移動します。 CosmosRestoreOperator ロールはサブスクリプション レベルで使用できます。

  2. [アクセス制御 (IAM)] を選択します。

  3. [追加]>[ロールの割り当ての追加] を選択して、[ロールの割り当ての追加] ページを開きます。

  4. 次のロールを割り当てます。 詳細な手順については、「Azure portal を使用して Azure ロールを割り当てる」を参照してください。

    設定
    Role CosmosRestoreOperator
    アクセスの割り当て先 ユーザー、グループ、またはサービス プリンシパル
    メンバー <任意のユーザー>

    Screenshot that shows Add role assignment page in Azure portal.

  5. Cosmos DB オペレーター ロールで手順 4 を繰り返して、書き込みアクセス許可を付与します。 このロールを Azure portal から割り当てると、サブスクリプション全体に対する復元アクセス許可が付与されます。

アクセス許可のスコープ

Scope
サブスクリプション /subscriptions/00000000-0000-0000-0000-000000000000
Resource group /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-cosmosdb-rg
CosmosDB 復元可能アカウント リソース /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/23e99a35-cd36-4df4-9614-f767a03b9995

復元可能アカウント リソースは、CLI では az cosmosdb restorable-database-account list --account-name <accountname> コマンド、または PowerShell では Get-AzCosmosDBRestorableDatabaseAccount -DatabaseAccountName <accountname> コマンドレットの出力から抽出できます。 出力の name 属性は、復元可能アカウントの instanceID を表します。

復元元のアカウントに対するアクセス許可

次のアクセス許可は、継続的バックアップ モードのアカウントの復元に関連するさまざまなアクティビティの実行に必要です。

注意

アクセス許可は、アカウント スコープまたはサブスクリプション スコープで、復元可能なデータベース アカウントに割り当てることができます。 リソース グループのスコープにアクセス許可を割り当てることはできません。

権限 影響 最小スコープ 最大スコープ
Microsoft.Resources/deployments/validate/actionMicrosoft.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/actionMicrosoft.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/23587e98-b6ac-4328-a753-03bcd3c8e744"
  ],
  "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>

次のステップ