管理 Azure Cosmos DB 帳戶的還原權限
適用於:NoSQL MongoDB Gremlin Table
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
內建角色指派給需要還原的特定可還原資料庫帳戶。 在下列命令中,會從az cosmosdb restorable-database-account list
(如果使用 CLI) 或Get-AzCosmosDBRestorableDatabaseAccount
(如果使用 PowerShell) 執行結果的ID
屬性擷取RestorableDatabaseAccount
的範圍
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 Resource Manager 來佈建連續備份。
- 取得適用於 SQL 和 MongoDB 帳戶的最新可還原時間戳記。
- 使用 Azure 入口網站、PowerShell、CLI 或 Azure Resource Manager 來還原帳戶。
- 將帳戶從定期備份遷移到連續備份。
- 連續備份模式的資源模型