Microsoft Entra アプリケーション プロキシを使用して Azure Logic Apps とオンプレミス API を安全に統合する

概要

Azure Logic Apps は、コードなしの環境でマネージド ワークフローを簡単に作成できるようにするサービスであり、さまざまな外部サービスやシステムと統合できます。 ワークフローにより、データ統合、データ処理、イベントドリブン シナリオなど、幅広いビジネス プロセスを自動化できます。 Logic Apps は、他のパブリック サービスおよびクラウドベースのサービスと統合されています。 または、オンプレミスのアプリケーションとサービスで Logic Apps を使用します。 プライベート ネットワーク統合では、ポート転送や従来のリバース プロキシを使用してサービスをパブリックに公開することはありません。

この記事では、Microsoft Entra アプリケーション プロキシ ソリューションを使用してロジック アプリへの安全なアクセスを提供し、不要なアクターから内部アプリケーションを保護するために必要な手順について説明します。 プロセスと最終的な結果は、 Microsoft Entra アプリケーション プロキシを使用したオンプレミス API へのアクセス に似ています。ロジック アプリ内から API を利用することに特別な注意が払われます。

次の図は、Azure Logic Apps からアクセスするためにオンプレミス API を発行する従来の方法を示しています。 この方法では、API サービスに対して受信伝送制御プロトコル (TCP) ポート 80 または 443 を開く必要があります。

ロジック アプリから API への直接接続。

次の図は、Microsoft Entra アプリケーション プロキシを使用してどのように、受信ポートを開くことなく Logic Apps (またはその他の Azure Cloud サービス) で使用する API を安全に公開するかを示しています。

Azure アプリケーション プロキシ経由のロジック アプリから API への接続。

Microsoft Entra アプリケーション プロキシと関連コネクタを使用すると、ネットワーク セキュリティ インフラストラクチャの構成を増やすことなく、オンプレミス サービスへの安全な承認と統合が容易になります。

前提条件

このチュートリアルを実行するには、次が必要です。

ユーザーの権利を付与し、サインオンをテストすることをお勧めしますが、このガイドでは必要ありません。

アプリケーション アクセスの構成

新しいエンタープライズ アプリケーションが作成されると、一致するアプリ登録も作成されます。 アプリ登録を使用すると、証明書、シークレット、またはフェデレーション資格情報を使用して、セキュリティで保護された、プログラムによるアクセスを構成できます。 ロジック アプリと統合するには、クライアント シークレット キーを構成し、API のアクセス許可を構成します。

  1. アプリケーション管理者以上の権限で Microsoft Entra 管理センターにサインインします。

  2. Entra ID>アプリ登録に移動します。

  3. [アプリの登録] ウィンドウから、[すべてのアプリケーション] タブ オプションを選択します。

  4. デプロイされたアプリケーション プロキシ アプリケーションに一致する名前のアプリケーションに移動します。 たとえば、サンプル アプリ 1 をエンタープライズ アプリケーションとしてデプロイした場合は、サンプル アプリ 1 という登録項目を選びます。

    関連付けられているアプリケーションが削除されるか、見つからない場合は自動的に作成されない可能性があります。 登録は、[New Registration] (新規登録) ボタンを使用して作成できます。

  5. サンプル アプリ 1 の詳細ページで、[アプリケーション (クライアント) ID] および [ディレクトリ (テナント) ID] フィールドを記録します。

  6. ナビゲーション ウィンドウから [API のアクセス許可] メニュー項目を選択します。

    Microsoft Entra アプリ登録 API の [アクセス許可] メニュー項目。

    1. [アクセス許可の追加] ボタンを選択します。

      1. [所属する組織で使用している API] タブを選択します。

      2. アプリを名前 (例: サンプル アプリ 1) で検索し、その項目を選択します。

      3. [委任されたアクセス許可]選択されていることを確認し、[user_impersonation] のチェック ボックスをオンにします。

      4. アクセス許可の追加 を選択します。

    2. 構成されたアクセス許可が表示されていることを確認します。

      Microsoft Entra アプリ登録 API のアクセス許可の詳細。

  7. ナビゲーション ウィンドウから [証明書とシークレット] メニュー項目を選択します。

    Microsoft Entra アプリ登録証明書とシークレット メニュー項目。

    1. [クライアント シークレット] タブ項目を選択します。

    2. [New client secret]\(新しいクライアント シークレット\) ボタンを選択します。

    3. クライアントシークレットの追加ポップアップから。

      1. [説明] と必要な有効期限を入力します。

      2. [追加] を選択します。

    4. 新しいクライアント シークレットが表示されていることを確認します。

    5. 新しく作成したシークレットの [値] の [コピー] ボタンを選びます。 後で使用するためにこのシークレットを安全に保存します。この値は 1 回だけ表示されます。

ロジック アプリを構成する

  1. Logic App から デザイナー ビューを開きます。

  2. 目的のトリガーを選択します (プロンプトが表示された場合)。

  3. 新しいステップを追加し、HTTP 操作を選択します。

    Azure ロジック アプリ トリガー オプション ペイン。

    1. [メソッド]: 内部 API に送信する目的の HTTP メソッドを選択します。

    2. URI: Microsoft Entra ID に登録されているアプリケーションのパブリック完全修飾ドメイン名 (FQDN) と、API アクセスに必要な他の URI (例: sampleapp1.msappproxy.net/api/1/status) を入力します。

      API の特定の値は、内部アプリケーションによって異なります。

    3. [ヘッダー]: 内部 API に送信する、目的のヘッダーを入力します。

    4. [クエリ]: 内部 API に送信する、目的のクエリを入力します。

    5. [本体]: 内部 API に送信する、目的の本文の内容を入力します。

    6. [Cookie]: 内部 API に送信する、目的の Cookie を入力します。

    7. [新しいパラメーターの追加] を選び、[認証] をオンにします。

    8. [認証の種類] の中から [Microsoft Entra ID OAuth] を選択します。

    9. 認証では、次の詳細を入力します。

      1. [権限]: 「https://login.windows.net」と入力します。

      2. [テナント]: 「アプリケーション アクセスの構成」でメモしたディレクトリ (テナント) ID を入力します。

      3. [対象ユーザー]: Microsoft Entra ID に登録されているアプリケーションのパブリック FQDN (例: sampleapp1.msappproxy.net) を入力します。

      4. [クライアント ID]: 「アプリケーション アクセスの構成」でメモしたアプリケーション (クライアント) ID を入力します。

      5. [資格情報の種類]: シークレット

      6. [シークレット]: 「アプリケーション アクセスの構成」でメモしたシークレット値を入力します。

  4. ロジック アプリを保存し、トリガーでテストします。

注意事項

認証/承認を必要とする API では、この方法を使用する際は特別な処理が必要です。 Microsoft Entra ID OAuth はアクセスに使用されているため、送信された要求には、内部 API で使用できない 承認 フィールドが既に含まれています (シングル サインオンが構成されていない場合)。 回避策として、一部のアプリケーションには、Authorization ヘッダー以外の方法を使用する認証または承認が用意されています。 たとえば、GitLab では PRIVATE-TOKEN というタイトルのヘッダーを使用でき、Atlassian JIRA では後の要求で使用できる Cookie を要求できます。

ロジック アプリの HTTP アクションにはクリア テキスト値が表示されます。 ただし、アプリ登録シークレット キーを Azure Key Vault に格納し、安全に取得および使用できるようにしてください。

関連項目