サブスクリプションを別の Microsoft Entra ディレクトリ (テナント) に移転した後の Synapse Analytics ワークスペースの回復

この記事では、サブスクリプションを別の Microsoft Entra ディレクトリに移転した後に Synapse Analytics ワークスペースを回復する方法について説明します。 サブスクリプションを別の Microsoft Entra ディレクトリ (テナント) に移転すると、Synapse Analytics ワークスペースにはアクセスできなくなります。

移転後に Synapse Studio を起動しようとすると、"Failed to load one or more resources due to no access, error code 403"(アクセス権がないために 1 つ以上のリソースを読み込めませんでした。エラー コード 403) というエラーが表示されます。

Screenshot of Synapse Studio Error 403 after tenant migration.

テナント間でサブスクリプションを移転した後は、この記事の手順に従って Synapse Analytics ワークスペースを回復してください。

サブスクリプションを別の Microsoft Entra ディレクトリ (テナント) に移転するプロセスは複雑であり、慎重に計画して実行する必要があります。 Azure Synapse Analytics が正常に動作するためには、セキュリティ プリンシパル (ID) が必要です。 サブスクリプションを別のテナントに移転すると、すべてのプリンシパル ID が変更され、Azure リソースからロールの割り当てが削除され、さらにシステム割り当てマネージド ID が削除されます。

サブスクリプションを別のテナントに移転した場合の影響については、「Azure サブスクリプションを別の Microsoft Entra ディレクトリに移転する」を参照してください

この記事では、テナント間でサブスクリプションを移転した後に 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. Azure RBAC (ロールベースアクセス制御) 権限の、必要な Microsoft Entra ユーザー、グループ、およびマネージド ID への割り当てを Synapse Analytics ワークスペースと必要な Azure リソースにおいて行います。
  3. SQL Active Directory 管理者を設定します
  4. 新しい Microsoft Entra テナント内の同等のユーザーとグループに基づくMicrosoft Entra のユーザーとグループを専用のサーバーレス SQL プール用に再作成します。
  5. Azure RBAC を Synapse Analytics ワークスペースにおいて Microsoft Entra のユーザーとグループに割り当てます。 この手順は、ワークスペースを回復した後に最初に実行する必要があります。 この手順を実行せずに Synapse Studio を起動すると、Microsoft Entra ユーザーにワークスペースに対するアクセス許可がないために、403 メッセージがスローされます。
    {"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 など) を対象に、Azure RBAC ロールを Microsoft Entra のユーザー、グループ、サービス プリンシパルに割り当てます。 ADLS Gen2 での Azure RBAC の詳細については、ロールベースのアクセス制御 (Azure RBAC) に関する記事を参照してください。
  7. Microsoft Entra のユーザーとグループに Synapse RBAC ロールの割り当てを追加します。 詳細については、「Synapse Studio で Synapse RBAC ロールの割り当てを管理する方法」を参照してください。
  8. 専用のサーバーレス SQL プールで Microsoft Entra のログイン ID とユーザーをすべて再作成します。 詳細については、「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\"}}'

前のコマンドを実行した後に、ワークスペース provisioningStateSucceeded になり、ID の種類が None になる必要があります。 次のコマンドを実行すると、provisioningState の値が Provisioning と表示され、数分後に状態が Succeeded に変わります。 ワークスペースのシステム割り当てマネージド ID を再び有効にする前に、provisioningState の値が Succeeded になっている必要があります。

ワークスペースの状態を取得してプロビジョニングの状態と 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 の値は Succeeded である必要があります。 provisioningState の値は Provisioning から Succeeded に変わります。 ID の種類は SystemAssigned に変更されます。

az rest --method GET --uri $uri

次のステップ