在将订阅转移到另一个 Microsoft Entra 目录(租户)后恢复 Synapse Analytics workspace

本文介绍了如何在将 Synapse Analytics 工作区的订阅转移到另一个 Microsoft Entra 目录后恢复 Synapse Analytics 工作区。 将订阅转移到另一个 Microsoft Entra 目录(租户)后,Synapse Analytics 工作空间将无法访问。

搬迁后尝试启动Synapse Studio时,你会看到错误:“因无法访问而未能加载一个或多个资源,错误代码403。”

租户迁移后 Synapse Studio 错误 403 的截图。

在跨租户转移订阅后,请按照本文中的步骤恢复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 分配所需权限。 详见 第一步:准备转移
  • 在专用和无服务器 SQL 池中保存 Microsoft Entra 用户所需的所有权限。 Microsoft Entra 用户将在租户迁移后从专用和无服务器的 SQL 池中被删除。

恢复Synapse Analytics workspace的步骤

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

  1. 禁用并重新启用系统分配的托管身份。 更多信息将在本文后面提供。
  2. 在Synapse Analytics工作空间和必需的Azure资源中,为Microsoft Entra所需的用户、组和托管身份分配Azure RBAC(基于角色的访问控制)权限。
  3. 设置SQL Active Directory管理员。
  4. 在新的 Microsoft Entra 租户中,针对专用和无服务器 SQL 池,根据对应用户和组重新创建 Microsoft Entra 用户和组。
  5. 将 Azure RBAC 分配给 Synapse Analytics 工作区的 Microsoft Entra 用户和组。 这一步应是恢复工作区后的第一步。 如果没有此步骤,启动 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. 为 Microsoft Entra 用户、组和服务主体分配工作空间工件中使用的所有资源(如 ADLS Gen2)的 Azure RBAC 角色。 有关 ADLS Gen2 中的 Azure RBAC 的更多信息,请参见基于角色的访问控制(Azure RBAC)。
  7. 向 Microsoft Entra 用户和组添加 Synapse RBAC 角色分配。 有关详细信息,请参阅如何在 Synapse Studio中管理 Synapse RBAC 角色分配。
  8. 在专用且无服务器的SQL池中重建所有Microsoft Entra登录和用户。 欲了解更多信息,请参见 Azure Synapse Analytics 中的 SQL 认证。
  9. 在 Synapse Analytics 工作区中重新创建任何用户分配的托管标识,或分配用户分配的托管标识。 欲了解更多信息,请参见 Credentials in Azure 数据工厂 and Azure Synapse。

Note

确保以下步骤仅在确认订阅成功迁移到其他租户后执行。

禁用并重新启用 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"

以下示例禁用了工作区的系统分配托管身份(System Assigned Managed Identity)。

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

在执行前一个命令后,工作区 provisioningState 应为 成功,身份类型应为 无。 如果您执行以下命令,provisioningState 值可能会显示为“配置中”,并将在几分钟后变为“成功”状态。 在重新启用该工作空间的系统分配托管标识之前,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该值应为“成功”。 provisioningState值将从“预配”变为“成功”。 身份类型将更改为 SystemAssigned。

az rest --method GET --uri $uri

后续步骤