プライベート エンドポイントを使って Standard ロジック アプリと Azure 仮想ネットワーク間のトラフィックをセキュリティで保護する

適用対象: Azure Logic Apps (Standard)

Standard ロジック アプリのワークフローと Azure 仮想ネットワーク間で安全かつプライベートに通信するために、受信トラフィック用に "プライベート エンドポイント" を設定し、送信トラフィック用に仮想ネットワーク統合を使用できます。

プライベート エンドポイントとは、Azure Private Link を使用するサービスにプライベートかつ安全に接続するネットワーク インターフェイスです。 このサービスは、Azure Logic Apps、Azure Storage、Azure Cosmos DB、SQL などの Azure サービスでも、独自の Private Link サービスでもかまいません。 プライベート エンドポイントによって、ご自分の仮想ネットワークのプライベート IP アドレスが使用され、実質的に、そのサービスが仮想ネットワークに組み込まれます。

この記事では、受信トラフィックと、送信トラフィック用の仮想ネットワーク統合に対して、プライベート エンドポイント経由のアクセスを設定する方法について説明します。

詳細については、次のドキュメントを確認してください。

前提条件

新規または既存の Azure 仮想ネットワークに、委任のないサブネットが含まれている必要があります。 このサブネットは、仮想ネットワークからプライベート IP アドレスを配置して割り当てるために使用されます。

詳細については、次のドキュメントを確認してください。

プライベート エンドポイントを経由する受信トラフィックを設定する

ワークフローへの受信トラフィックをセキュリティで保護するには、大まかに次の手順を行います。

  1. 要求トリガーや HTTP + Webhook トリガーなど、受信要求を受信して処理できる組み込みトリガーを使用して、ワークフローを開始します。 このトリガーにより、呼び出し可能なエンドポイントを使用するワークフローが設定されます。

  2. ロジック アプリ リソースのプライベート エンドポイントを仮想ネットワークに追加します。

  3. テスト呼び出しを行って、エンドポイントへのアクセスを確認します。 ロジック アプリ ワークフローをこのエンドポイントを設定した後に呼び出すには、仮想ネットワークに接続されている必要があります。

プライベート エンドポイントを経由する受信トラフィックに関する考慮事項

  • 仮想ネットワークの外部からアクセスした場合、監視ビューはトリガーとアクションからの入力と出力にアクセスできません。

  • マネージド API Webhook トリガー (push トリガー) とアクションは、パブリック クラウドで実行され、プライベート ネットワークに呼び出すことができないため、機能しません。 呼び出しを受信するには、パブリック エンドポイントが必要です。 たとえば、このようなトリガーには、Dataverse トリガーと Event Grid トリガーがあります。

  • Office 365 Outlook トリガーを使用すると、ワークフローは 1 時間ごとにのみトリガーされます。

  • Visual Studio Code または Azure CLI からのデプロイは、仮想ネットワーク内からのみ機能します。 デプロイ センターを使用して、ロジック アプリを GitHub リポジトリにリンクできます。 その後、Azure インフラストラクチャを使用してコードをビルドし、デプロイできます。

    GitHub インテグレーションを機能させるには、ロジック アプリから WEBSITE_RUN_FROM_PACKAGE 設定を削除するか、値を 0 に設定します。

  • Private Link を有効にしても、送信トラフィックには影響なく、App Service インフラストラクチャを引き続き経由します。

プライベート エンドポイントを経由する受信トラフィックの前提条件

最重要の前提条件である仮想ネットワーク設定と共に、要求を受け取ることができる組み込みトリガーを使って開始される新しいまたは既存の Standard ロジック アプリ ワークフローが必要です。

たとえば、要求トリガーによって、ワークフローを含む他の呼び出し元からの受信要求を受信して処理できるエンドポイントがワークフローに作成されます。 このエンドポイントから、ワークフローの呼び出しとトリガーに使用できる URL が提供されます。 この例では、要求トリガーを使用して手順を続行します。

詳細については、Azure Logic Apps を使用した受信 HTTP 要求の受信と応答に関するページを参照してください。

ワークフローを作成する

  1. まだ作成していない場合は、シングルテナント ベースのロジック アプリと空のワークフローを作成します。

  2. デザイナーが開いたら、ワークフローの最初のステップとして要求トリガーを追加します。

  3. シナリオの要件に基づいて、ワークフローで実行する他のアクションを追加します。

  4. 完了したら、ワークフローを保存します。

詳細については、Azure Logic Apps でシングルテナント ロジック アプリのワークフローを作成するに関する記事をご確認ください。

エンドポイントの URL をコピーする

  1. ワークフロー メニューで、 [概要] を選択します。

  2. [概要] ページで、後で使用できるようにワークフロー URL をコピーして保存します。

    ワークフローをトリガーするには、要求を呼び出すか、この URL に送信します。

  3. 要求を呼び出すか、URL に送信することで、URL が機能することを確認します。 Postman など、要求を送信する任意のツールを使用できます。

プライベート エンドポイント接続を設定する

  1. ロジック アプリのメニューの [設定] で、 [ネットワーク] を選択します。

  2. [ネットワーク] ページの [Inbound traffic](受信トラフィック) カードで、[プライベート エンドポイント] を選びます。

  3. [プライベート エンドポイント接続][追加] を選びます。

  4. [プライベート エンドポイントの追加] ペインが表示されるので、エンドポイントに関して要求される情報を入力します。

    詳細については、「プライベート エンドポイントのプロパティ」をご確認ください。

  5. プライベート エンドポイントが Azure によって正常にプロビジョニングされたら、ワークフロー URL の呼び出しを再試行します。

    今回は、予想どおりに 403 Forbidden エラーが発生します。これは、プライベート エンドポイントが設定され、正しく動作していることを意味します。

  6. 接続が正しく動作するようにするには、そのプライベート エンドポイントがある同じ仮想ネットワーク内に仮想マシンを作成し、ロジック アプリ ワークフローを呼び出してみてください。

仮想ネットワーク統合を使って送信トラフィックを設定する

ロジック アプリからの送信トラフィックをセキュリティで保護するために、ロジック アプリを仮想ネットワークと統合できます。 まず、サンプル ワークフローを作成してテストします。 次に、仮想ネットワーク統合の設定を行います。

仮想ネットワーク統合を経由する送信トラフィックに関する考慮事項

  • 仮想ネットワークの設定は、送信トラフィックにのみ影響します。 引き続き App Service 共有エンドポイントを使用する受信トラフィックをセキュリティで保護するには、「プライベート エンドポイントを経由する受信トラフィックを設定する」を参照してください。

  • 割り当て後にサブネット サイズを変更することはできません。そのため、アプリが到達する規模に対応するのに十分な大きさのサブネットを使用してください。 サブネット容量に関する問題を回避するには、64 個のアドレスを持つ /26 サブネットを使用してください。 仮想ネットワークの Azure portal との統合のためにサブネットを作成する場合は、最小サブネット サイズとして /27 を使用する必要があります。

  • Azure Logic Apps ランタイムが動作するには、バックエンド ストレージへの接続が中断されないようにする必要があります。 バックエンド ストレージがプライベート エンドポイントを介して仮想ネットワークに公開されている場合は、次のポートが開いていることを確認してください。

    送信元ポート 宛先ポート source 宛先 Protocol 目的
    * 443 Standard ロジック アプリと統合されたサブネット ストレージ アカウント TCP ストレージ アカウント
    * 445 Standard ロジック アプリと統合されたサブネット ストレージ アカウント TCP サーバー メッセージ ブロック (SMB) ファイル共有
  • Azure でホストされるマネージド コネクタを機能させるには、マネージド API サービスへの接続が中断されないようにする必要があります。 仮想ネットワークの統合では、ファイアウォールやネットワーク セキュリティ ポリシーでこれらの接続がブロックされていないことを確認します。 仮想ネットワークにネットワーク セキュリティ グループ (NSG)、ユーザー定義ルート テーブル (UDR)、またはファイアウォールを使っている場合、対応するリージョン内のすべてのマネージド コネクタ IP アドレスへの送信接続を仮想ネットワークが許可していることを確認します。 そうではない場合、Azure マネージド コネクタは機能しません。

詳細については、次のドキュメントを確認してください。

ワークフローの作成とテスト

  1. まだ作成していない場合は、Azure portal でシングルテナント ベースのロジック アプリと空のワークフローを作成します。

  2. デザイナーが開いたら、ワークフローの最初のステップとして要求トリガーを追加します。

  3. インターネット経由では使用できない内部サービスを呼び出す HTTP アクションを追加し、10.0.1.3 のようなプライベート IP アドレスを使って実行します。

  4. 完了したら、ワークフローを保存します。

  5. デザイナーから手動でワークフローを実行します。

    この HTTP アクションは失敗しますが、ワークフローがクラウド内で実行されており、内部サービスにはアクセスできないため、これは仕様であり、想定された動作です。

仮想ネットワーク統合を設定する

  1. Azure portal のロジック アプリ リソース メニューの [設定] で、[ネットワーク] を選びます。

  2. [ネットワーク] ペインの [Outbound traffic](送信トラフィック) カードで [VNet 統合] を選びます。

  3. [VNet 統合] ページで [VNet の追加] を選びます。

  4. [Add VNet Integration](VNet 統合の追加) ペインで、サブスクリプションと、内部サービスに接続する仮想ネットワークを選びます。

    仮想ネットワーク統合を追加した後、[VNet 統合] ウィンドウで、[Route All](すべてのルート) 設定が既定で有効になります。 この設定は、すべての送信トラフィックを仮想ネットワーク経由でルーティングします。 この設定を有効にすると、WEBSITE_VNET_ROUTE_ALL アプリ設定は無視されます。

  5. 仮想ネットワークで独自のドメイン ネーム サーバー (DNS) を使用する場合は、ロジック アプリ リソースの WEBSITE_DNS_SERVER アプリ設定をその DNS の IP アドレスに設定します。 セカンダリ DNS がある場合は、WEBSITE_DNS_ALT_SERVER という名前の別のアプリ設定を追加し、その値を DNS の IP にも設定します。

  6. Azure によって仮想ネットワーク統合が正常にプロビジョニングされたら、ワークフローを再度実行してみてください。

    これで、HTTP アクションが正常に実行されるようになります。

次の手順