管理 Azure Cosmos DB 帐户的还原权限
适用对象: NoSQL MongoDB Gremlin 表
Azure Cosmos DB 允许隔离和限制将连续备份帐户还原为特定角色或主体的权限。 可以在订阅范围或源帐户范围(更精细的层面)内应用这些权限,如下图所示:
范围是一组有权访问的资源,若要了解有关范围的详细信息,请参阅 Azure RBAC 文档。 在 Azure Cosmos DB 中,适用范围是大部分用例的源订阅和数据库帐户。 执行还原操作的主体应对目标资源组拥有写入权限。
使用 Azure 门户分配还原角色
若要执行还原,用户或主体需要拥有还原权限(即还原/操作权限),以及预配新帐户的权限(即写入权限)。 若要授予这些权限,订阅的所有者可以向主体分配 CosmosRestoreOperator
和 Cosmos DB Operator
内置角色。
登录 Azure 门户,导航到你的订阅。
CosmosRestoreOperator
角色在订阅级别可用。选择“访问控制 (IAM)”。
选择“添加”>“添加角色分配”,打开“添加角色分配”页面。
分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色。
设置 值 角色 CosmosRestoreOperator 将访问权限分配到 用户、组或服务主体 成员 <所选用户> 对“Cosmos DB 操作员”角色重复步骤 4 以授予写入权限。 从 Azure 门户分配此角色时,会授予整个订阅的还原权限。
权限范围
范围 | 示例 |
---|---|
订阅 | /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>
cmdlet 提取可还原帐户资源。 输出中的名称属性表示可还原帐户的 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 标识的权限。 还原权限基于操作: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 门户、PowerShell、CLI 或 Azure 资源管理器预配连续备份。
- 获取 SQL 和 MongoDB 帐户的最新可还原时间戳。
- 使用 Azure 门户、PowerShell、CLI 或 Azure 资源管理器还原帐户。
- 将帐户从定期备份迁移到连续备份。
- 连续备份模式的资源模型