구독을 다른 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)가 정상적으로 작동해야 합니다. 구독이 다른 테넌트로 이동하면 모든 보안 주체 ID가 변경되고, 역할 할당이 Azure 리소스에서 삭제되고, 시스템 할당 관리 ID가 삭제됩니다.

구독을 다른 테넌트로 전송하는 경우의 영향을 이해하려면 다른 Microsoft Entra 디렉터리로 Azure 구독 전송을 참조하세요.

이 문서에서는 테넌트 간에 구독을 이동한 후 Synapse Analytics 작업 영역을 복구하는 데 관련된 단계를 설명합니다.

필수 구성 요소

  • 테넌트 이동의 영향을 받는 서비스 또는 리소스에 대한 자세한 내용은 Azure 구독을 다른 Microsoft Entra 디렉터리로 전송을 참조하세요.
  • Microsoft Entra 사용자, 그룹 및 관리 ID에 대한 모든 역할 할당을 저장합니다. 이 정보는 테넌트 이동 후 Azure Synapse Analytics 및 ADLS Gen2와 같은 Azure 리소스에 필요한 권한을 할당하는 데 사용할 수 있습니다. 1단계: 전송 준비 참조
  • 전용 및 서버리스 SQL 풀에 Microsoft Entra 사용자에 필요한 모든 권한을 저장합니다. Microsoft Entra 사용자는 테넌트 이동 후 전용 및 서버리스 SQL 풀에서 삭제됩니다.

Synapse Analytics 작업 영역을 복구하는 단계

구독을 다른 테넌트에 전송한 후 아래 단계에 따라 Azure Synapse Analytics 작업 영역을 복구합니다.

  1. 시스템 할당 관리 ID를 사용하지 않도록 설정하고 다시 사용하도록 설정합니다. 이 문서의 뒷부분에 더 많은 정보가 있습니다.
  2. Synapse Analytics 작업 영역 및 필요한 Azure 리소스에서 필요한 Microsoft Entra 사용자, 그룹, 관리 ID에 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다.
  3. SQL Active Directory 관리자를 설정합니다.
  4. 전용 및 서버리스 SQL 풀에 대한 새 Microsoft Entra 테넌트에 해당하는 사용자 및 그룹을 기반으로 Microsoft Entra 사용자 및 그룹을 다시 만듭니다.
  5. Azure RBAC를 Microsoft Entra 사용자에 할당하고 그룹을 Synapse Analytics 작업 영역에 할당합니다. 이 단계는 작업 영역을 복구한 후 첫 번째 단계여야 합니다. 이 단계가 없으면 Microsoft Entra 사용자에게 작업 영역에 대한 권한이 없기 때문에 Synapse Studio를 시작하면 403개의 메시지가 throw됩니다.
    {"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. ADLS Gen2와 같이 작업 영역 아티팩트에서 사용되는 모든 리소스에 Microsoft Entra 사용자, 그룹, 서비스 주체에 Azure RBAC 역할을 할당합니다. ADLS Gen2의 Azure RBAC에 대한 자세한 내용은 Azure RBAC(Azure 역할 기반 액세스 제어)를 참조하세요.
  7. Microsoft Entra 사용자 및 그룹에 Synapse RBAC 역할 할당을 추가합니다. 자세한 내용은 Synapse Studio에서 Synapse RBAC 역할 할당을 관리하는 방법을 참조하세요.
  8. 전용 및 서버리스 SQL 풀에서 모든 Microsoft Entra 로그인 및 사용자를 다시 만듭니다. 자세한 내용은 Azure Synapse Analytics의 SQL 인증을 참조하세요.
  9. 사용자가 할당한 모든 관리 ID를 다시 만들고 사용자 할당 관리 ID를 Synapse Analytics 작업 영역에 할당합니다. 자세한 내용은 Azure Data Factory 및 Azure Synapse의 자격 증명을 참조하세요.

참고 항목

구독이 다른 테넌트로 성공적으로 이동되었는지 확인한 후에만 다음 단계가 실행되는지 확인합니다.

Synapse Analytics 작업 영역에 대해 시스템이 할당한 관리 ID를 사용하지 않도록 설정하고 다시 사용하도록 설정

이 섹션에서는 Azure CLI 또는 Azure PowerShell을 사용하여 Azure Synapse Analytics 작업 영역에 대해 시스템 할당 관리 ID를 사용하지 않도록 설정하고 다시 사용하도록 설정하는 방법을 보여 줍니다. 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"

이러한 다음 샘플에서는 작업 영역에 대해 시스템 할당 관리 ID를 사용하지 않도록 설정합니다.

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

작업 영역 provisioningState성공해야 하며 이전 명령이 실행된 후 ID 유형이 None이어야 합니다. 다음 명령을 실행하면 provisioningState 값이 프로비저닝으로 표시될 수 있으며 상태를 성공으로 변경하는 데 몇 분 정도 걸립니다. 작업 영역에 대해 시스템 할당 관리 ID를 다시 사용하도록 설정하기 전에 provisioningState 값은 성공해야 합니다.

프로비저닝 상태 및 ID 유형을 가져오기 위해 작업 영역의 상태를 얻으려면 다음 코드 조각을 사용합니다.

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"
}

다음 명령은 작업 영역에 대해 시스템 할당 관리 ID를 다시 사용하도록 설정합니다.

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

다음 명령은 작업 영역 상태를 가져옵니다. provisioningState 값은 성공이어야 합니다. provisioningState 값이 프로비저닝에서 성공으로 변경됩니다. ID 유형이 SystemAssigned로 변경됩니다.

az rest --method GET --uri $uri

다음 단계