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

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

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

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

開始する前に

  • ローカル コンピューターに Azure CLI が必要です。 ダウンロードとインストール
  • これら 2 つの PowerShell モジュールが必要です。 ない場合は、PowerShell を開いて次のコマンドを実行します:
    • Azure Az PowerShell モジュール: Install-Module -Name Az
    • Power Platform 管理者 PowerShell モジュール: Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
  • この [GitHub の圧縮フォルダー ファイル]((https://github.com/microsoft/PowerApps-Samples/blob/master/powershell/managed-identities/Common.zip) にアクセスします. 次に、ダウンロード を選択してダウンロードします。 圧縮フォルダー ファイルを、PowerShell コマンドを実行できる場所にあるコンピューターに展開します。 圧縮フォルダーから抽出したすべてのファイルとフォルダーは、元の場所に保存する必要があります。
  • この機能をオンボードするために、同じ Azure リソース グループの下に新しいストレージ コンテナーを作成することをお勧めします。

選択した Azure サブスクリプションのエンタープライズ ポリシーを有効にする

重要

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

  1. 管理者として実行で Azure CLI を開き、次のコマンドを使用して Azure サブスクリプションにサインインします: az login 詳細: Azure CLI でサインインする
  2. (オプション) 複数の Azure サブスクリプションがある場合は、Update-AzConfig -DefaultSubscriptionForLogin { Azure subscription id } を実行して、既定のサブスクリプションを更新してください。
  3. この機能の 開始する前に の一部としてダウンロードした圧縮フォルダーを、PowerShell を実行できる場所に展開します。
  4. 選択した Azure サブスクリプションのエンタープライズ ポリシーを有効にするには、PowerShell スクリプト ./SetupSubscriptionForPowerPlatform.ps1 を実行します。
    • Azure サブスクリプション ID を指定します。

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

重要

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

  1. エンタープライズ ポリシーを作成します。 PowerShell スクリプト ./CreateIdentityEnterprisePolicy.ps1 を実行します

    • Azure サブスクリプション ID を指定します。
    • Azure リソース グループ名を指定します。
    • 優先するエンタープライズ ポリシー名を指定します。
    • Azure リソース グループの場所を指定します。
  2. ポリシー作成後、ResourceId のコピーを保存します。

注意

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

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

米国 EUAP

アメリカ合衆国

南アフリカ

英国

オーストラリア

韓国

日本

インド

フランス

欧州

アジア

ノルウェイ

ドイツ

スイス

カナダ

ブラジル

UAE

シンガポール

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

Azure グローバル管理者、Dynamics 365 管理者、および Power Platform 管理者は、Power Platform 管理センターにアクセスして、環境をエンタープライズ ポリシーに割り当てることができます。 エンタープライズ ポリシーにアクセスするには、グローバルまたは Azure Key Vault 管理者が、閲覧者ロール を Dynamics 365 または Power Platform 管理者に付与する必要があります。閲覧者ロールが付与されると、Dynamics 365 または Power Platform 管理者には、Power Platform 管理センターにエンタープライズ ポリシーが表示されます。

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

重要

この作業を行うには、ユーザー アクセス管理者 または 所有者 などの - Microsoft.Authorization/roleAssignments/write 権限が必要です。

  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. Azure CLI を開き、次のコマンドを実行して、<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 をコピーします。
    4. Dataverse 環境にリンクするには、PowerShell スクリプトを実行します: ./NewIdentity.ps1
    5. Dataverse 環境 ID を指定します。
    6. ResourceId を指定します。
      StatusCode = 202 は、リンクが正常に作成されたことを示します。
  2. Power Platform 管理センターにサインインします。
  3. 環境 を選択してから、先に指定した環境を開きます。
  4. 最近の操作 領域で 全履歴 を選択して、新しい ID の接続を検証します。

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

重要

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

  1. Azure portal に移動します。

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

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

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

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

重要

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

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

重要

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

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

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

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

  1. Power Apps にサインインして環境を選択します。
  2. 左のナビゲーション ウィンドウで Azure Synapse Link を選択し、+ 新しいリンク を選択します。 項目がサイド パネル ウィンドウに表示されない場合は、…さらに表示 を選択して、目的の項目を選択します。
  3. 管理サービス ID でエンタープライズ ポリシーを選択する を選択し、次へ を選択します。
  4. エクスポートするテーブルを追加してから、保存を選択します。

注意

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

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

トラブルシューティング​​

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

  • マネージド ID は、初期同期時に一時的なアクセス許可を付与するために追加の時間がかかります。しばらく時間をおいて、操作をやり直してください。
  • リンクされたストレージに、同じ環境からの既存の Dataverse コンテナー (dataverse-environmentName-organizationUniqueName) がないことを確認してください。
  • リンクされたエンタープライズ ポリシーと policyArmId を特定するには、PowerShell スクリプト ./GetIdentityEnterprisePolicyforEnvironment.ps1 を Azure サブスクリプション ID および リソース グループ 名で実行します。
  • PowerShell スクリプト ./RevertIdentity.ps1 を Dataverse 環境 ID と policyArmId で実行することにより、エンタープライズ ポリシーのリンクを解除できます。
  • PowerShell スクリプト .\RemoveIdentityEnterprisePolicy.ps1 を policyArmId で実行することでエンタープライズ ポリシーを削除できます。

参照

Azure Synapse Link for Dataverse とは?