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

適用対象: SQL API Table API Gremlin API MongoDB 用 Azure Cosmos DB API

Azure Cosmos DB を使用すると、継続的バックアップ アカウントの復元のアクセス許可を切り分けて、特定のロールまたはプリンシパルに制限することができます。 アカウントの所有者は復元をトリガーし、他のプリンシパルにロールを割り当てて復元操作を実行できます。 次の図に示すように、これらのアクセス許可はサブスクリプションのスコープで適用できます。

復元操作を実行するために必要なロールの一覧。

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

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

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

  1. Azure portal にサインインし、サブスクリプションに移動します。

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

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

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

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

    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

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

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

注意

リソース グループのスコープにアクセス許可を割り当てることはできません。

権限 影響
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action
リソース グループは、アクセス許可のスコープとしては選択できません。
このアクセス許可は、ソースの復元可能データベース アカウント スコープで、それに対して復元操作を実行できるようにするために必要です。
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read
リソース グループは、アクセス許可のスコープとしては選択できません。
このアクセス許可は、ソースの復元可能データベース アカウント スコープで、復元できるデータベース アカウントを一覧表示するために必要です。
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
リソース グループは、アクセス許可のスコープとしては選択できません。
このアクセス許可は、ソースの復元可能アカウント スコープで、復元可能アカウントのデータベースとコンテナーの一覧などの復元可能リソースを読み取ることができるようにするために必要です。

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

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

権限 影響
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>

特定のアカウントから復元する機能を割り当てる

この操作は現在サポートされていません。

リソース グループ内の任意のソース アカウントから復元する機能を割り当てる

この操作は現在サポートされていません。

CLI を使用した復元操作用のカスタム ロールの作成

サブスクリプションの所有者は、他の任意の Azure AD 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 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>

次のステップ