Azure Data Lake Storage で Azure のマネージド ID を使用する

Azure Data Lake Storage は階層化されたセキュリティ モデルを提供します。 このモデルを使用すると、使用するネットワークまたはリソースの種類とサブセットに基づいて、アプリケーションやエンタープライズ環境が要求するストレージ アカウントへのアクセス レベルを保護および制御できます。 ネットワーク ルールが構成されている場合、指定された一連のネットワークまたは指定された一連の Azure リソースを介してデータを要求するアプリケーションのみがストレージ アカウントにアクセスできます。 ストレージ アカウントへのアクセスを、指定した IP アドレス、IP 範囲、Azure Virtual Network (VNet) 内のサブネット、または一部の Azure サービスのリソース インスタンスから発生する要求に制限できます。

以前はマネージド サービス アイデンティティ (MSI) として知られていた Azure のマネージド ID は、シークレットの管理に役立ちます。 Azureの機能を使用している Microsoft Dataverse の顧客は、1 つ以上の Dataverse 環境に使用できるマネージド ID (エンタープライズ ポリシー作成の一部) を作成します。 テナントにプロビジョニングされるこのマネージド ID は、その後、Azure Data Lake にアクセスするために Dataverse よって使用されます。

マネージド ID を使用すると、ストレージ アカウントへのアクセスは、テナントに関連付けられた Dataverse 環境から発生する要求に制限されます。 Dataverse がユーザーに代わってストレージに接続すると、要求が安全で信頼できる環境から発生したことを証明するために、追加のコンテキスト情報を含めます。 これにより、ストレージはストレージ アカウントへのアクセスを Dataverse に許可します。 マネージド ID は、信頼を確立するためにコンテキスト情報の署名に使用されます。 これにより、Azure サービス間の接続に Azure が提供するネットワークとインフラストラクチャ セキュリティに加えて、アプリケーション レベルのセキュリティが追加されます。

始める前に

  • 次の PowerShell モジュールが必要です。 ない場合は、PowerShell を開いて次のコマンドを実行します:
    • Azure Az PowerShell モジュール: Install-Module -Name Az
    • Azure Az.Resources PowerShell モジュール: Install-Module -Name Az.Resources
    • Power Platform 管理者 PowerShell モジュール: Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
    • Power Platform Enterprise Policies モジュール: Install-Module -Name Microsoft.PowerPlatform.EnterprisePolicies
  • この機能をオンボードするために、同じ Azure リソース グループの下に新しいストレージ コンテナーを作成することをお勧めします。

重要

  • Dataverse を Azure Storage アカウントと Synapse ワークスペースに接続するAzure方法のマネージド ID は、現在、Government Community Cloud (GCC)、GCC High、China などの国内クラウドのお客様には使用できません。

エンタープライズ ポリシーを作成する

重要

必要なリソース プロバイダーを登録するには、Azure サブスクリプション所有者ロールが必要です。 このタスクを完了するには、Azure リソース グループ所有者 ロールアクセス権が必要です。 Azure リソース グループの概要ページから、Azure サブスクリプション ID場所リソース グループ 名を取得します。

  1. PowerShell で、Power Platform Enterprise Policies モジュールをインポートし、エンタープライズ ポリシーを作成します。 このコマンドレットは、サブスクリプションに必要なリソース プロバイダーを登録します。

    Import-Module Microsoft.PowerPlatform.EnterprisePolicies
    New-IdentityEnterprisePolicy `
       -SubscriptionId <subscription-id> `
       -ResourceGroupName <resource-group-name> `
       -PolicyName <enterprise-policy-name> `
       -PolicyLocation <location>
    
    • Azure サブスクリプション ID を指定します。
    • Azure リソース グループ名を指定します。
    • 優先するエンタープライズ ポリシー名を指定します。
    • Azure リソース グループの場所を指定します。
  2. ポリシー作成後、ResourceId のコピーを保存します。

メモ

ポリシーの作成でサポートされている有効な 場所 の入力は以下のとおりです。 最も適切な場所を選択します。

エンタープライズ ポリシーで使用可能な場所

  • 米国 EUAP
  • 米国
  • 南アフリカ
  • 英国
  • Australia
  • 韓国
  • 日本
  • インド
  • France
  • ヨーロッパ
  • アジア
  • ノルウェイ
  • Germany
  • Switzerland
  • カナダ
  • Brazil
  • UAE
  • シンガポール

閲覧者に Azure 経由でエンタープライズ ポリシーへのアクセスを許可する

Dynamics 365管理者と Power Platform 管理者は、Power Platform 管理センターにアクセスして、環境をエンタープライズ ポリシーに割り当てることができます。 エンタープライズ ポリシーにアクセスするには、Dynamics 365 または Power Platform 管理者にリーダー ロールを付与する Azure Key vault 管理者メンバーシップが必要です。リーダー ロールが付与されると、Dynamics 365 または Power Platform 管理者は、Power Platform 管理センターでエンタープライズ ポリシーを確認できます。

エンタープライズ ポリシーに閲覧者ロールを付与された Dynamics 365 および Power Platform 管理者のみが、ポリシーに '環境を追加' できます。 他の Dynamics 365 および PowerPlatform 管理者はエンタープライズ ポリシーを表示できる場合がありますが、環境を追加しようとするとエラーが発生します。

重要

この作業を行うには、Microsoft.Authorization/roleAssignments/write 権限が必要です。例えば、User Access AdministratorOwner のような権限です。

  1. Azure portal にサインインします。
  2. Dynamics 365 Power Platform 管理者ユーザーの ObjectID を取得します。
    1. ユーザー 領域に移動します。
    2. Dynamics 365 または Power Platform 管理者ユーザーを開きます。
    3. ユーザーの概要ページで ObjectID をコピーします。
  3. エンタープライズ ポリシー ID を取得します:
    1. Azure Resource Graph Explorer に移動します。
    2. 次のクエリを実行します:resources | where type == 'microsoft.powerplatform/enterprisepolicies' Azure Resource Graph Explorer からクエリを実行します
    3. 結果ページの右側にスクロールし、詳細を表示 リンクを選択します。
    4. 詳細 ページで ID をコピーします。
  4. PowerShell を開き、次のコマンドを実行し、 <objId> をユーザーの ObjectID に置き換え、 <EP Resource Id> をエンタープライズ ポリシー ID に置き換えます。
    • New-AzRoleAssignment -ObjectId <objId> -RoleDefinitionName Reader -Scope <EP Resource Id>

エンタープライズ ポリシーと Dataverse 環境を結び付ける

重要

このタスクを完了するには、Power Platform 管理者 または Dynamics 365 管理者 のロールが必要です。 このタスクを完了するには、エンタープライズ ポリシーの 閲覧者 ロールが必要です。

  1. Dataverse 環境 ID を取得します。
    1. Power Platform 管理センターにサインインします。
    2. 管理>環境を選択し、ご利用の環境を開きます。
    3. 詳細 セクションでは 環境 ID をコピーします。
  2. PowerShell で、Enable-Identity -EnvironmentId <environment-id> -PolicyArmId <ResourceId> を実行します。
    • <environment-id>を Dataverse 環境 ID に置き換えます。
    • <ResourceId>は、先ほど保存したエンタープライズ ポリシー リソース ID に置き換えます。
    • コマンドレットは、リンク操作が完了するまで待機し、操作が成功すると $true を返します。
  3. Power Platform 管理センターにサインインします。
  4. 管理>環境を選択し、前述のステップで指定した環境を開きます。
  5. 最近の操作 領域で 全履歴 を選択して、新しい ID の接続を検証します。

Azure Data Lake Storage Gen2 へのネットワーク アクセスを構成する

重要

このタスクを完了するには、Azure Data Lake Storage Gen2 Owner ロールが必要です。

  1. Azure ポータル に移動します。

  2. Azure Synapse Link for Dataverse プロファイルに接続されているストレージ アカウントを開きます。

  3. 左側のナビゲーション ウィンドウで ネットワーク を選択します。 次に ファイアウォールおよび仮想ネットワーク タブで、次の設定を選択します:

    1. 選択した仮想ネットワークと IP アドレスから有効にします
    2. リソース インスタンス で、信頼できるサービス リストにある Azure サービスがこのストレージ アカウントにアクセスできるようにする を選択します
  4. 保存を選びます。

Azure Synapse Workspace へのネットワーク アクセスを構成する

重要

このタスクを完了するには、Azure Synapse 管理者ロールが必要です。

  1. Azure ポータル に移動します。
  2. Dataverse プロファイル用の Azure Synapse Link に接続されている Azure Synapse workspace を開きます。
  3. 左側のナビゲーション ウィンドウで ネットワーク を選択します。
  4. Azure サービスとリソースにこのワークスペースへのアクセスを許可する を選択します。
  5. すべての IP 範囲に対して作成された IP ファイアウォール ルール がある場合は、それらを削除してパブリック ネットワーク アクセスを制限します。 Azure Synapse ワークスペースのネットワーク設定
  6. クライアントの IP アドレスに基づいて、新しい IP ファイアウォール ルール を追加します。
  7. 完了したら、[保存] を選択します。 詳細情報: Azure Synapse Analytics IP ファイアウォール規則

重要

Dataverse: Dataverse システム管理者セキュリティ ロールを持っている必要があります。 さらに、Azure Synapse リンクを使用してエクスポートするテーブルでは、変更の追跡 プロパティが有効になっている必要があります。 詳細: 詳細オプション

Azure Data Lake Storage Gen2: Azure Data Lake Storage Gen2 アカウントと所有者およびストレージ BLOB データ共同作成者ロールのアクセス権を持っている必要があります。 ストレージ アカウントでは、初期セットアップと差分同期の両方で 階層型名前空間 を有効にする必要があります。初期設定のみ、ストレージ アカウント キーへのアクセスを許可するが必要です。

Synapse ワークスペース: Synapse ワークスペースと、Synapse Administrator ロールアクセス権がSynapse Studio内に必要です。 Synapse ワークスペースは、Azure Data Lake Storage Gen2 アカウントと同じリージョンに存在する必要があります。 ストレージ アカウントは、Synapse Studio 内のリンクされたサービスとして追加する必要があります。 Synapse workspace を作成するには、Synapse workspace を作成するに移動します。

リンクを作成すると、Dataverse 用のAzure Synapse Link は、Dataverse 環境下で現在リンクされているエンタープライズ ポリシーの詳細を取得し、Azure に接続するための ID クライアント シークレットの URL をキャッシュします。

  1. Power Apps にサインインして環境を選択します。
  2. 左側のナビゲーション ウィンドウで、[ データのリンク] を選択し、[ その他のリンク] を選択します。 [+ 新規] リンクを選択し、[Azure Synapse] を選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
  3. 目的の設定に従って、適切なフィールドに入力します。 サブスクリプションリソース グループストレージ アカウントを選択します。 Dataverse を Synapse workspace に接続するには、Azure Synapse workspace に接続するオプションを選択します。 Delta Lake のデータ変換では、Spark プールを選択します。
  4. 管理サービス ID でエンタープライズ ポリシーを選択する を選択し、次へ を選択します。
  5. エクスポートするテーブルを追加してから、保存を選択します。

メモ

マネージドIDの使用 コマンドを Power Apps で使用できるようにするには、上記のセットアップを完了してエンタープライズ ポリシーを Dataverse に接続する必要があります。 詳細: Dataverse 環境へ企業ポリシーを接続する

  1. Power Apps (make.powerapps.com) から既存の Synapse Link プロファイルに移動します。
  2. マネージド ID を使用する を選択し、確認します。 Power Apps でマネージド アイデンティティ コマンドを使用します

Troubleshooting

リンクの作成中に 403 エラーが発生した場合:

  • マネージド ID は、初期同期時に一時的なアクセス許可を付与するために追加の時間がかかります。しばらく時間をおいて、操作をやり直してください。
  • リンクされたストレージに、同じ環境からの既存の Dataverse コンテナー (dataverse-environmentName-organizationUniqueName) がないことを確認してください。
  • Get-IdentityEnterprisePolicy -EnvironmentId <environment-id>を実行して、リンクされたエンタープライズ ポリシーを識別します。
  • Disable-Identity -EnvironmentId <environment-id>を実行して、エンタープライズ ポリシーのリンクを解除します。
  • Remove-IdentityEnterprisePolicy -PolicyResourceId <policy-resource-id>を実行して、リンクされていないエンタープライズ ポリシーを削除します。

既知の制限

同時に Dataverse 環境に接続できるエンタープライズポリシーは 1 つだけです。 マネージド ID を有効にして複数の Azure Synapse Link リンクを作成する必要がある場合は、リンクされているすべての Azure リソースが同じリソースグループの下にあることを確認してください。

参照

Azure Synapse Link for Dataverse とは