共用方式為


管理 Azure Cosmos DB 帳戶的還原權限

適用於:NoSQL MongoDB Gremlin Table

Azure Cosmos DB 可讓您隔離連續備份帳戶的還原權限並將其限制到特定角色或主體。 這類權限可套用於訂閱範圍,或是更精細地套用於來源帳戶範圍,如下圖所示:

執行還原作業所需的角色清單。

範圍是一組具有存取權的資源;若要深入了解範圍,請參閱 Azure RBAC 文件。 對於 Azure Cosmos DB 中大部分使用案例來說,適用的範圍是來源訂閱和資料庫帳戶。 執行還原動作的主體應該具有目的地資源群組的寫入權限。

使用 Azure 入口網站指派要進行還原的角色

若要執行還原,使用者或主體需要還原的權限 (其為「還原/動作」權限),以及佈建新帳戶的權限 (其為「寫入」權限)。 若要授與這些權限,訂用帳戶的擁有者可以將 CosmosRestoreOperatorCosmos DB Operator 內建角色指派給主體。

  1. 登入 Azure 入口網站,然後瀏覽至訂用帳戶。 CosmosRestoreOperator 角色可在訂用帳戶層級取得。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [新增] > [新增角色指派],開啟 [新增角色指派] 頁面。

  4. 指派下列角色。 如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    設定
    角色 CosmosRestoreOperator
    存取權指派對象 使用者、群組或服務主體
    成員 <您選擇的使用者>

    顯示 Azure 入口網站中新增角色指派頁面的螢幕擷取畫面。

  5. 針對 [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>

下一步