Azure API Management の前に Front Door Standard/Premium を構成する

適用対象: すべての API Management レベル

Azure Front Door は、セキュリティで保護されたスケーラブルなコンテンツ配信ネットワーク (CDN)、動的サイト アクセラレーション、グローバル WEB アプリケーションのグローバル HTTP(s) 負荷分散を提供する、最新のアプリケーション配信ネットワーク プラットフォームです。 Front Door は、API Management の前で使用する場合、TLS オフロード、エンド ツー エンド TLS、負荷分散、GET 要求の応答キャッシュ、Web アプリケーション ファイアウォールなどの機能を提供できます。 サポートされる機能の一覧については、「Azure Front Door とは」を参照してください。

Note

Web ワークロードの場合は、新たな DDoS 攻撃から保護するために Azure DDoS 保護Web アプリケーション ファイアウォールを利用することを強くお勧めします。 もう 1 つのオプションは、Web アプリケーション ファイアウォールと共に Azure Front Door を使用することです。 Azure Front Door は、ネットワーク レベルの DDoS 攻撃に対するプラットフォーム レベルの保護を提供します。 詳細については、Azure サービスのセキュリティ ベースラインに関するページを参照してください。

この記事では、次の方法について説明します。

  • パブリックにアクセス可能な Azure API Management インスタンスの前に Azure Front Door Standard/Premium プロファイルを設定します。ネットワーク化されていないか、外部モードで仮想ネットワークに挿入されるようにします。
  • Azure Front Door からの API トラフィックのみを受け入れるように API Management を制限します。

前提条件

  • API Management インスタンス。
    • ネットワーク挿入インスタンスを使用する場合は、外部 VNet にデプロイする必要があります。 (仮想ネットワークの挿入は Developer サービス レベルおよび Premium サービス レベルでサポートされています)
  • 1 つ以上の API を API Management インスタンスにインポートして、Front Door 経由のルーティングを確認します。

Azure Front Door を構成する

Create profile

Azure Front Door Standard/Premium プロファイルを作成する手順については、「クイックスタート: Azure Front Door プロファイルを作成する - Azure portal」を参照してください。 この記事では、Front Door Standard プロファイルを選択するものとします。 Front Door Standard と Front Door Premium の比較については、「サービス レベルの比較」を参照してください。

API Management インスタンスのゲートウェイ エンドポイントを Front Door の配信元として使用する場合に固有の次の Front Door 設定を構成します。 その他の設定の詳細については、Front Door のクイック スタートを参照してください。

設定
配信元の種類 [API Management] を選択します
配信元のホスト名 API Management インスタンスのホスト名を選択します (例: myapim.azure-api.net)
キャッシュ Front Door で [キャッシュの有効化] を選択して、静的コンテンツのキャッシュを行います
クエリ文字列のキャッシュ動作 [クエリ文字列を使用する] を選択します

ポータルで Front Door プロファイルを作成するスクリーンショット。

既定の配信元グループを更新する

プロファイルが作成されたら、既定の配信元グループを更新して、API Management 正常性プローブを含めます。

  1. ポータルで、Front Door プロファイルに移動します。

  2. 左側のメニューの [設定] で、[配信元グループ]>[既定の配信元グループ] を選択します。

  3. [配信元グループの更新] ウィンドウで、次の [正常性プローブ] 設定を構成し、[更新] を選択します。

    設定
    状態 [正常性プローブを有効にする] を選択します
    パス /status-0123456789abcdef」と入力します
    プロトコル [HTTPS] を選択します
    方法 [GET] を選択します
    間隔 (秒) 30」と入力します

    ポータルで既定の配信元グループを更新するスクリーンショット。

既定のルートを更新する

API Management 配信元グループに関連付けられている既定のルートを更新して、転送プロトコルとして HTTPS を使用することをお勧めします。

  1. ポータルで、Front Door プロファイルに移動します。
  2. 左側のメニューの [設定][配信元グループ] を選択します。
  3. default-origin-group を展開します。
  4. [既定のルート]のコンテキスト メニュー (...) で、[ルートの構成] を選択します。
  5. [受け入れ済みのプロトコル][HTTP および HTTPS] に設定します。
  6. [HTTPS を使用するようにすべてのトラフィックをリダイレクト] を有効にします。
  7. [転送プロトコル][HTTPS のみ] に設定し、[更新] を選択します。

構成をテストする

API Management によってホストされる API を呼び出して、Front Door のプロファイル構成をテストします。 まず、API Management ゲートウェイを介して API を直接呼び出して、API が到達可能であることを確認します。 次に、Front Door を介して API を呼び出します。 テストするには、呼び出しに curl などの コマンド ライン クライアント、または Postman などのツールを使用できます。

API Management を経由して API を直接呼び出す

次の例では、API Management インスタンスによってホストされる Demo Conference API の操作が、Postman を使用して直接呼び出されています。 この例では、インスタンスのホスト名が既定の azure-api.net ドメインにあり、要求ヘッダーを使用して有効なサブスクリプション キーが渡されます。 応答が正常であれば、200 OK が表示され、想定されるデータが返されます。

Postman を使用して API Management エンドポイントを直接呼び出す様子を示すスクリーンショット。

Front Door を経由して API を直接呼び出す

次の例では、インスタンス用に構成された Front Door エンドポイントを使用して、Demo Conference API で同じ操作が呼び出されています。 azurefd.net ドメイン内のエンドポイントのホスト名は、ポータルで Front Door プロファイルの [概要] ページに表示されます。 応答が正常であれば、200 OK が表示され、前の例と同じデータが返されます。

Postman を使用して Front Door エンドポイントを呼び出す様子を示すスクリーンショット。

受信トラフィックを API Management インスタンスに制限する

API Management ポリシーを使用して、API Management インスタンスが Azure Front Door からのみトラフィックを受け入れるようにします。 この制限は、次の方法のいずれか、または両方を使用して実現できます。

  1. 受信 IP アドレスを API Management インスタンスに制限する
  2. X-Azure-FDID ヘッダーの値に基づいてトラフィックを制限する

受信 IP アドレスの制限

API Management で受信 IP フィルター ポリシーを、Front Door 関連のトラフィックのみを許可するよう構成できます。これには次のものが含まれます。

  • Front Door のバックエンド IP アドレス空間 - [Azure の IP 範囲とサービス タグ][AzureFrontDoor.Backend] セクションに対応する IP アドレスを許可します。

    注意

    API Management インスタンスが外部仮想ネットワークにデプロイされている場合は、API Management インスタンスに使用されるサブネットに受信ネットワーク セキュリティ グループ規則を追加して、同じ制限を実行します。 ポート 443 でソース サービス タグ AzureFrontDoor.Backend からの HTTPS トラフィックを許可するように規則を構成します。

  • Azure インフラストラクチャ サービス - IP アドレス 168.63.129.16 と 169.254.169.254 を許可します。

Front Door ヘッダーを確認する

Front Door 経由でルーティングされる要求には、Front Door 構成に固有のヘッダーが含まれます。 API Management に送信される X-Azure-FDID HTTP 要求ヘッダーの一意の値に基づいて受信要求をフィルター処理するよう、check-header を構成できます。 このヘッダー値は Front Door ID で、Front Door プロファイルの [概要] ページのポータルに表示されます。

次のポリシー例では、Front Door ID は FrontDoorId という名前の名前付き値を使用して指定されています。

<check-header name="X-Azure-FDID" failed-check-httpcode="403" failed-check-error-message="Invalid request." ignore-case="false">
        <value>{{FrontDoorId}}</value>
</check-header>

有効な X-Azure-FDID ヘッダーを伴わない要求には、403 Forbidden 応答が返されます。

(省略可能) 開発者ポータル向け Front Door を構成する

必要に応じて、API Management インスタンスの開発者ポータルを Front Door プロファイルのエンドポイントとして構成します。 マネージド開発者ポータルは既に Azure マネージド CDN によって前面に配置されていますが、WAF などの Front Door 機能を利用することもできます。

開発者ポータルのエンドポイントをプロファイルに追加する手順の概要を次に示します。

  • エンドポイントを追加してルートを構成するには、「Front Door マネージャーを使用してエンドポイントを構成する」を参照してください。

  • ルートを追加するときは、開発者ポータルを表す配信元グループと配信元の設定を追加します。

    • 配信元の種類 - [カスタム] を選択します
    • ホスト名 - 開発者ポータルのホスト名 (例: myapim.developer.azure-api.net) を入力します

詳細および設定の詳細については、「Azure Front Door の配信元を構成する方法」を参照してください。

Note

開発者ポータル用に Microsoft Entra ID または Azure AD B2C ID プロバイダーを構成している場合は、対応するアプリ登録を Front Door への追加のリダイレクト URL で更新する必要があります。 アプリの登録で、Front Door プロファイルで構成されている開発者ポータル エンドポイントの URL を追加します。

次のステップ