将订阅转移到其他 Microsoft Entra 目录(租户)后恢复 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)上分配所需的权限。 请参阅步骤 1:准备转移
- 将 Microsoft Entra 用户所需的所有权限保存在专用 SQL 池和无服务器 SQL 池中。 租户移动后,将从专用 SQL 池和无服务器 SQL 池中删除 Microsoft Entra 用户。
恢复 Synapse Analytics 工作区的步骤
将订阅转移到另一个租户后,请按照以下步骤恢复 Azure Synapse Analytics 工作区。
- 禁用系统分配的托管标识后再重新启用它。 本文后面部分提供详细信息。
- 在 Synapse Analytics 工作区和所需 Azure 资源上将 Azure RBAC(基于角色的访问控制)权限分配给所需的 Microsoft Entra 用户、组和托管标识。
- 设置 SQL Active Directory 管理员。
- 根据专用和无服务器 SQL 池的新 Microsoft Entra 租户中的等效用户和组,重新创建 Microsoft Entra 用户和组。
- 将 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/*."}}
- 将 Azure RBAC 角色分配给工作区项目(例如 ADLS Gen2)中使用的所有资源的 Microsoft Entra 用户、组和服务主体。 有关 ADLS Gen2 中的 Azure RBAC 的详细信息,请参阅基于角色的访问控制 (Azure RBAC)。
- 将 Synapse RBAC 角色分配添加到 Microsoft Entra 用户和组。 有关详细信息,请参阅如何在 Synapse Studio 中管理 Synapse RBAC 角色分配
- 在专用和无服务器 SQL 池中重新创建所有 Microsoft Entra 登录名和用户。 有关详细信息,请参阅 Azure Synapse Analytics 中的 SQL 身份验证
- 重新创建所有用户分配的托管标识,并将用户分配的托管标识分配给 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