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 を開く必要があります。
次の図は、Microsoft Entra アプリケーション プロキシを使用してどのように、受信ポートを開くことなく Logic Apps (またはその他の Azure Cloud サービス) で使用する API を安全に公開するかを示しています。
Microsoft Entra アプリケーション プロキシおよび関連するコネクタを使用すると、ネットワーク セキュリティ インフラストラクチャに追加の構成を行わずに、オンプレミス サービスに対する承認と統合を安全に行うことができます。
前提条件
このチュートリアルを実行するには、次が必要です。
- アプリを作成して登録できるアカウントを持つ、Azure ディレクトリへの管理者アクセス権
- アクティブなテナントでの "ロジック アプリ共同作成者" ロール (またはそれ以上)
- デプロイ済みの Azure アプリケーション プロキシ コネクタ、およびオンプレミス アプリの追加 - Microsoft Entra ID でのアプリケーション プロキシに関する記事の詳細に従って構成されたアプリケーション
Note
ユーザー エンタイトルメントを付与し、サインオンをテストすることをお勧めしていますが、このガイドでは必須ではありません。
アプリケーション アクセスの構成
新しいエンタープライズ アプリケーションが作成されると、一致するアプリ登録も作成されます。 アプリ登録を使用すると、証明書、シークレット、またはフェデレーション資格情報を使用して、セキュリティで保護された、プログラムによるアクセスを構成できます。 ロジック アプリと統合するには、クライアント シークレット キーを構成し、API のアクセス許可を構成する必要があります。
少なくとも アプリケーション管理者 の権限で Microsoft Entra 管理センター にサインインします。
[ID]>[アプリケーション]>[アプリの登録] を参照します。
[アプリの登録] ウィンドウから、[すべてのアプリケーション] タブ オプションを選択します
デプロイされたアプリ プロキシ アプリケーションに一致する名前のアプリケーションに移動します。 たとえば、"サンプル アプリ 1" をエンタープライズ アプリケーションとしてデプロイした場合は、サンプル アプリ 1 という登録項目をクリックします。
Note
関連するアプリケーションが見つからない場合は、自動的に作成されていないか削除された可能性があります。 登録は、[New Registration] (新規登録) ボタンを使用して作成できます。
"サンプル アプリ 1" の詳細ページで、[アプリケーション (クライアント) ID] および [ディレクトリ (テナント) ID] フィールドをメモします。 これらは後で使用します。
ナビゲーション ウィンドウから [API permissions] (API のアクセス許可) メニュー項目を選択します
[API permissions] (API のアクセス許可) ページから、次のようにします。
[アクセス許可の追加] ボタンをクリックします
[API アクセス許可の要求] ポップアップで、以下を実行します。
[所属する組織で使用している API] タブを選択します
アプリを名前 (例: "サンプル アプリ 1") で検索し、その項目を選択します
[委任されたアクセス許可] が選択されていることを確認し、[user_impersonation] のチェック ボックスをオンにします
[アクセス許可の追加] をクリックします
構成されたアクセス許可が表示されていることを確認します
ナビゲーション ウィンドウから [証明書とシークレット] メニュー項目を選択します
[証明書とシークレット] ページから、次のようにします。
[Client secrets] (クライアント シークレット) タブ項目を選択します
[New client secret] (新しいクライアント シークレット) ボタンをクリックします
[クライアント シークレットの追加] ポップアップで、次のようにします。
説明と必要な有効期限を入力します
[追加] をクリックします。
新しいクライアント シークレットが表示されていることを確認します
新しく作成したシークレットの [Value] (値) のコピー ボタンをクリックします。 後で使用するためにこれを安全に保存します。この値は 1 回だけ表示されます。
ロジック アプリを構成する
Logic App から [Designer] (デザイナー) ビューを開きます
目的のトリガーを選択します (プロンプトが表示された場合)
新しいステップを追加し、HTTP 操作を選択します
操作の詳細で、次のようにします。
[メソッド]: 内部 API に送信する目的の HTTP メソッドを選択します
URI: Microsoft Entra ID に登録されているアプリケーションの "パブリック" FQDN と、API アクセスに必要な追加の URI (sampleapp1.msappproxy.net/api/1/status など) を入力します
Note
API の具体的な値は、内部アプリケーションによって異なります。 詳細については、アプリケーションのドキュメントを参照してください。
[ヘッダー]: 内部 API に送信する、目的のヘッダーを入力します
[クエリ]: 内部 API に送信する、目的のクエリを入力します
[本体]: 内部 API に送信する、目的の本文の内容を入力します
[Cookie]: 内部 API に送信する、目的の Cookie を入力します
[Add new parameter] (新しいパラメーターの追加) をクリックし、[認証] をオンにします
[認証タイプ] で、[Active Directory OAuth] を選択します
認証では、次の詳細を入力します。
[権限]: 「https://login.windows.net」と入力します。
[テナント]: 「アプリケーション アクセスの構成」でメモしたディレクトリ (テナント) ID を入力します
Audience (対象ユーザー): Microsoft Entra ID に登録されているアプリケーションの "パブリック" FQDN (例: sampleapp1.msappproxy.net) を入力します
[クライアント ID]: 「アプリケーション アクセスの構成」でメモしたアプリケーション (クライアント) ID を入力します
[資格情報の種類]: シークレット
[シークレット]: 「アプリケーション アクセスの構成」でメモしたシークレット値を入力します
ロジック アプリを保存し、トリガーでテストします
注意事項
認証/承認を必要とする API では、この方法を使用する際は特別な処理が必要です。 Microsoft Entra ID OAuth がアクセスに使用されているため、送信される要求には既に Authorization フィールドが含まれています。(SSO が構成されていない限り)、これを内部 API でも使用することはできません。 回避策として、一部のアプリケーションには、Authorization ヘッダー以外の方法を使用する認証または承認が用意されています。 たとえば、GitLab では PRIVATE-TOKEN というタイトルのヘッダーを使用でき、Atlassian JIRA では後の要求で使用できる Cookie を要求できます
ロジック アプリの HTTP アクションではクリアテキスト値が表示されますが、アプリ登録の秘密鍵は、安全に取得して使用するために、Azure Key Vault に保存することを強くお勧めします。