将订阅转移到其他 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 要求安全主体(标识)正常运行。 将订阅移动到其他租户时,所有主体 ID 都会更改,角色分配会从 Azure 资源中删除,系统分配的托管标识会被删除。

若要了解将订阅转移到另一个租户的影响,请参阅将 Azure 订阅转移到其他 Microsoft Entra 目录

本文介绍在跨租户移动订阅后恢复 Synapse Analytics 工作区所涉及的步骤。

先决条件

  • 若要详细了解受租户移动影响的服务或资源,请参阅将 Azure 订阅转移到其他 Microsoft Entra 目录
  • 保存 Microsoft Entra 用户、组和托管标识的所有角色分配。 此信息可用于在租户移动后在 Azure 资源(例如 Azure Synapse Analytics 和 ADLS Gen2)上分配所需的权限。 请参阅步骤 1:准备转移
  • 将 Microsoft Entra 用户所需的所有权限保存在专用 SQL 池和无服务器 SQL 池中。 租户移动后,将从专用 SQL 池和无服务器 SQL 池中删除 Microsoft Entra 用户。

恢复 Synapse Analytics 工作区的步骤

将订阅转移到另一个租户后,请按照以下步骤恢复 Azure Synapse Analytics 工作区。

  1. 禁用系统分配的托管标识后再重新启用它。 本文后面部分提供详细信息。
  2. 在 Synapse Analytics 工作区和所需 Azure 资源上将 Azure RBAC(基于角色的访问控制)权限分配给所需的 Microsoft Entra 用户、组和托管标识
  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 角色分配给工作区项目(例如 ADLS Gen2)中使用的所有资源的 Microsoft Entra 用户、组和服务主体。 有关 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 数据工厂和 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.chinacloudapi.cn/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 应为“Succeeded”。在执行上述命令后,标识类型应为“None”。 如果执行以下命令,provisioningState 值可能显示为“Provisioning”,需要几分钟时间才能将状态更改为“Succeeded”。 在为工作区重新启用系统分配的托管标识之前,provisioningState 的值应为“Succeeded”。

若要获取工作区的状态以获取预配状态和标识类型,请使用以下代码片段:

az rest --method GET --uri $uri

生成的 JSON 应类似于:

   {
  "id": "/subscriptions/<subscriptionid>/resourceGroups/TenantMove-RG/providers/Microsoft Synapse/workspaces/tenantmove-ws",
  "identity": {
    "type": "None"
  },
  "location": "chinanorth3",
  "name": "tenantmove-ws",
  "properties": {
    "connectivityEndpoints": {
      "dev": "https://tenantmove-ws.dev.azuresynapse.azure.cn",
      "sql": "tenantmove-ws.sql.azuresynapse.azure.cn",
      "sqlOnDemand": "tenantmove-ws-ondemand.sql.azuresynapse.azure.cn",
      "web": "https://web.azuresynapse.azure.cn?workspace=%2fsubscriptions%2<subscriptionid>b%2fresourceGroups%2fTenantMove-RG%2fproviders%2fMicrosoft.Synapse%2fworkspaces%2ftenantmove-ws"
    },
    "cspWorkspaceAdminProperties": {
      "initialWorkspaceAdminObjectId": "<object id>"
    },
    "defaultDataLakeStorage": {
      "accountUrl": "https://tenantmovedemowsstorage.dfs.core.chinacloudapi.cn",
      "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 值将从“Provisioning”更改为“Succeeded”。 标识类型将更改为“SystemAssigned”。

az rest --method GET --uri $uri

后续步骤