管理 Azure Cosmos DB 帐户的还原权限

适用对象: NoSQL MongoDB Gremlin

Azure Cosmos DB 允许隔离和限制将连续备份帐户还原为特定角色或主体的权限。 可以在订阅范围或源帐户范围(更精细的层面)内应用这些权限,如下图所示:

List of roles required to perform restore operation.

范围是一组有权访问的资源,若要了解有关范围的详细信息,请参阅 Azure RBAC 文档。 在 Azure Cosmos DB 中,适用范围是大部分用例的源订阅和数据库帐户。 执行还原操作的主体应对目标资源组拥有写入权限。

使用 Azure 门户分配还原角色

若要执行还原,用户或主体需要拥有还原权限(即还原/操作权限),以及预配新帐户的权限(即写入权限)。 若要授予这些权限,订阅的所有者可以向主体分配 CosmosRestoreOperatorCosmos DB Operator 内置角色。

  1. 登录 Azure 门户,导航到你的订阅。 CosmosRestoreOperator 角色在订阅级别可用。

  2. 选择“访问控制 (IAM)”。

  3. 选择“添加”>“添加角色分配”,打开“添加角色分配”页面 。

  4. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 CosmosRestoreOperator
    将访问权限分配到 用户、组或服务主体
    成员 <所选用户>

    Screenshot that shows Add role assignment page in Azure portal.

  5. 对“Cosmos DB 操作员”角色重复步骤 4 以授予写入权限。 从 Azure 门户分配此角色时,会授予整个订阅的还原权限。

权限范围

范围 示例
订阅 /subscriptions/00000000-0000-0000-0000-000000000000
资源组 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-cosmosdb-rg
CosmosDB 可还原帐户资源 /subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/23e99a35-cd36-4df4-9614-f767a03b9995

可从 CLI 中 az cosmosdb restorable-database-account list --account-name <accountname> 命令的输出或 PowerShell 中的 Get-AzCosmosDBRestorableDatabaseAccount -DatabaseAccountName <accountname> cmdlet 提取可还原帐户资源。 输出中的名称属性表示可还原帐户的 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 标识的权限。 还原权限基于操作: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>

后续步骤