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

适用于: SQL API 表 API Gremlin API 适用于 MongoDB 的 Azure Cosmos DB API

Azure Cosmos DB 允许隔离和限制将连续备份帐户还原为特定角色或主体的权限。 帐户所有者可以触发还原,并将角色分配给其他主体以执行还原操作。 可以在订阅范围内应用这些权限,如下图所示:

List of roles required to perform restore operation.

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

使用 Azure 门户分配还原角色

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

  1. 登录 Azure 门户,导航到你的订阅。

  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

对源帐户的权限

需要以下权限才能执行与还原连续备份模式帐户相关的不同活动:

注意

不支持在资源组范围内分配权限。

权限 影响
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 标识的权限。 还原权限基于操作: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>

后续步骤