本文介绍了如何在将 Synapse Analytics 工作区的订阅转移到另一个 Microsoft Entra 目录后恢复 Synapse Analytics 工作区。 将订阅转移到另一个 Microsoft Entra 目录(租户)后,Synapse Analytics 工作空间将无法访问。
搬迁后尝试启动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 工作区。
- 禁用并重新启用系统分配的托管身份。 更多信息将在本文后面提供。
- 在Synapse Analytics工作空间和必需的Azure资源中,为Microsoft Entra所需的用户、组和托管身份分配Azure RBAC(基于角色的访问控制)权限。
- 设置SQL Active Directory管理员。
- 在新的 Microsoft Entra 租户中,针对专用和无服务器 SQL 池,根据对应用户和组重新创建 Microsoft Entra 用户和组。
- 将 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/*."}} - 为 Microsoft Entra 用户、组和服务主体分配工作空间工件中使用的所有资源(如 ADLS Gen2)的 Azure RBAC 角色。 有关 ADLS Gen2 中的 Azure RBAC 的更多信息,请参见基于角色的访问控制(Azure RBAC)。
- 向 Microsoft Entra 用户和组添加 Synapse RBAC 角色分配。 有关详细信息,请参阅如何在 Synapse Studio中管理 Synapse RBAC 角色分配。
- 在专用且无服务器的SQL池中重建所有Microsoft Entra登录和用户。 欲了解更多信息,请参见 Azure Synapse Analytics 中的 SQL 认证。
- 在 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