分享方式:


將訂用帳戶轉移至不同的 Microsoft Entra 目錄之後,復原 Synapse Analytics 工作區 (租用戶)

本文說明如何將訂用帳戶轉移至不同的 Microsoft Entra 目錄之後,復原 Synapse Analytics 工作區。 將訂用帳戶轉移至不同的 Microsoft Entra 目錄(租使用者)之後,將無法存取 Synapse Analytics 工作區。

當您嘗試在移動後啟動 Synapse Studio 時,您會看到錯誤:「無法載入一或多個資源,因為沒有存取權,錯誤碼 403」。

Screenshot of Synapse Studio Error 403 after tenant migration.

在跨租使用者轉移訂用帳戶以復原 Synapse Analytics 工作區之後,請遵循本文中的步驟。

將訂用帳戶轉移至不同的 Microsoft Entra 目錄(租使用者)是一個複雜的程式,必須仔細規劃和執行。 Azure Synapse Analytics 需要安全性主體(身分識別)才能正常運作。 當訂用帳戶移至不同的租使用者時,所有主體識別碼都會變更、角色指派會從 Azure 資源中刪除,並卸載系統指派的受控識別。

若要瞭解將訂用帳戶轉移至另一個租使用者的影響,請參閱 將 Azure 訂用帳戶轉移至不同的 Microsoft Entra 目錄

本文涵蓋在跨租使用者移動訂用帳戶之後復原 Synapse Analytics 工作區所涉及的步驟。

必要條件

  • 若要深入瞭解受租使用者移動影響的服務或資源,請參閱 將 Azure 訂用帳戶轉移至不同的 Microsoft Entra 目錄
  • 儲存 Microsoft Entra 使用者、群組和受控識別的所有角色指派。 這項資訊可用來在租使用者移動之後指派 Azure 資源的必要許可權,例如 Azure Synapse Analytics 和 ADLS Gen2。 請參閱 步驟 1:準備傳輸
  • 將 Microsoft Entra 使用者所需的擁有權限儲存在專用和無伺服器 SQL 集區中。 在租使用者移動之後,Microsoft Entra 使用者將會從專用和無伺服器 SQL 集區中刪除。

復原 Synapse Analytics 工作區的步驟

將訂用帳戶轉移至另一個租用戶後,請遵循下列步驟來復原 Azure Synapse Analytics 工作區。

  1. 停用再重新啟用系統指派的受控身分識別。 如需詳細資訊,請參閱本文稍後的內容。
  2. 將 Azure RBAC (角色型存取控制) 權限指派給 Synapse Analytics 工作區上需要的 Microsoft Entra 使用者、群組和受控身分識別,以及必要的 Azure 資源。
  3. 設定 SQL Active Directory 管理員
  4. 根據專用和無伺服器 SQL 集區的新 Microsoft Entra 租用戶的對等使用者和群組,重新建立 Microsoft Entra 使用者和群組
  5. 將 Azure RBAC 指派給 Microsoft Entra 使用者,將群組指派給 Synapse Analytics 工作區。 此步驟應該是復原工作區後的第一個步驟。 如果沒有此步驟,啟動 Synapse Studio 將會擲回 403 則訊息,因為 Microsoft Entra 使用者沒有工作區的許可權:
    {"error":{"code":"Unauthorized","message":"The principal '<subscriptionid>' does not    have the required Synapse RBAC permission to perform this action. Required permission:    Action: Microsoft.Synapse/workspaces/read, Scope: workspaces/tenantmove-ws-1/*."}}
    
  6. 將 Azure RBAC 角色指派給 Microsoft Entra 使用者和群組,將服務主體指派給工作區成品中使用的所有資源,例如 ADLS Gen2。 如需有關 ADLS Gen2 中的 Azure RBAC 的詳細資訊,請參閱角色型存取控制 (Azure RBAC)
  7. 將 Synapse RBAC 角色指派新增至 Microsoft Entra 使用者和群組。 如需詳細資訊,請參閱如何在 Synapse Studio 中管理 Synapse RBAC 角色指派
  8. 在專用和無伺服器 SQL 集區中重新建立所有 Microsoft Entra 登入和使用者。 如需詳細資訊,請參閱 Azure Synapse Analytics 中的 SQL 驗證
  9. 重新建立所有使用者指派的受控身分識別,並將使用者指派的受控身分識別指派至 Synapse Analytics 工作區。 如需詳細資訊,請參閱 Azure Data Factory 和 Azure Synapse 中的認證

注意

請確定只有在確認訂用帳戶成功移至另一個租使用者之後,才會執行下列步驟。

停用並重新啟用 Synapse Analytics 工作區的系統指派受控識別

本節說明如何使用 Azure CLI 或 Azure PowerShell 來停用和重新啟用 Azure Synapse Analytics 工作區的系統指派受控識別。 請考慮 Azure CLI 或 Azure PowerShell 中的下列步驟。

$resourceGroupName="Provide the Resource group name"
$workspaceName="Provide the workspace name"
$subscriptionId="Provide the subscription Id"

$url = "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Synapse/workspaces/$workspaceName\?api-version=2021-06-01"

下一個範例會停用工作區的系統指派受控識別。

az rest --method patch --headers  Content-Type=application/json   `
--url  $url `
--body '{ \"identity\":{\"type\":\"None\"}}'

工作區 provisioningState 應為 [成功], 且執行上述命令之後,身分識別類型應為 None 。 如果您執行下列命令,值可能會顯示為 [布建], provisioningState 而將狀態變更為 [成功] 需要幾分鐘的時間。 provisioningState的值應該為 [成功],再重新啟用工作區的系統指派受控識別。

若要取得工作區的狀態以取得布建狀態和身分識別類型,請使用下列程式碼片段:

az rest --method GET --uri $uri

產生的 JSON 應該類似:

   {
  "id": "/subscriptions/<subscriptionid>/resourceGroups/TenantMove-RG/providers/Microsoft Synapse/workspaces/tenantmove-ws",
  "identity": {
    "type": "None"
  },
  "location": "eastus",
  "name": "tenantmove-ws",
  "properties": {
    "connectivityEndpoints": {
      "dev": "https://tenantmove-ws.dev.azuresynapse.net",
      "sql": "tenantmove-ws.sql.azuresynapse.net",
      "sqlOnDemand": "tenantmove-ws-ondemand.sql.azuresynapse.net",
      "web": "https://web.azuresynapse.net?workspace=%2fsubscriptions%2<subscriptionid>b%2fresourceGroups%2fTenantMove-RG%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2ftenantmove-ws"
    },
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "<object id>"
    },
    "defaultDataLakeStorage": {
      "accountUrl": "https://tenantmovedemowsstorage.dfs.core.windows.net",
      "filesystem": "demo",
      "resourceId": "/subscriptions/<subscriptionid>/resourceGroups/TenantMove-RG/providers/Microsoft.Storage/storageAccounts/tenantmovedemowsstorage"
    },
    "encryption": {
      "doubleEncryptionEnabled": false
    },
    "extraProperties": {
      "WorkspaceType": "Normal"
    },
    "managedResourceGroupName": "tenantmove-ws-managed-rg",
    "privateEndpointConnections": [],
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Enabled",
    "sqlAdministratorLogin": "sqladminuser",
    "trustedServiceBypassEnabled": false,
    "workspaceUID": "<workspace UID>"
  },
  "resourceGroup": "TenantMove-RG",
  "tags": {},
  "type": "Microsoft.Synapse/workspaces"
}

下一個命令會針對工作區重新啟用系統指派的受控識別:

az rest --method patch --headers  Content-Type=application/json   `
--url  $url `
--body '{ \"identity\":{\"type\":\"SystemAssigned\"}}'

下一個命令會取得工作區狀態。 此值 provisioningState 應為 Succeeded。 值 provisioningState 會從 [布建] 變更為 [成功]。 身分識別類型將會變更為 SystemAssigned

az rest --method GET --uri $uri

下一步