次の方法で共有


チュートリアル:API を変換および保護する

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

このチュートリアルでは、API を変換するための一般的なポリシーの構成について説明します。 API を変換して、プライベート バックエンド情報を公開しないようにする必要があります。 API を変換すると、バックエンドで実行されているテクノロジ スタック情報を非表示にしたり、API の HTTP 応答の本文に表示される元の URL を非表示にしたりできます。

このチュートリアルでは、開発者が API を使いすぎないように、レート制限ポリシーを構成してバックエンド API を保護する方法についても説明します。 その他のポリシー オプションについては、「API Management ポリシー」をご覧ください。

Note

既定では、API Management はグローバル forward-request ポリシーを構成します。 ゲートウェイがバックエンド サービスへの要求を完了するには、forward-request ポリシーが必要です。

このチュートリアルでは、以下の内容を学習します。

  • 応答ヘッダーを削除するように API を変換する
  • API 応答の本文内の元の URL を API Management ゲートウェイの URL に置換する
  • レート制限ポリシー (スロットリング) を追加して API を保護する
  • 変換をテストする

ポータルの API Management ポリシーのスクリーンショット。

前提条件

API Management インスタンスに移動します。

  1. Azure portal で、[API Management サービス] を検索して選択します。

    [API Management サービス] を選択する

  2. [API Management サービス] ページで、ご自身の API Management インスタンスを選択します。

    API Management インスタンスを選択する

応答ヘッダーを削除するように API を変換する

このセクションでは、ユーザーに対して表示したくない HTTP ヘッダーを非表示にする方法を示します。 たとえば、HTTP 応答から次のヘッダーを削除します。

  • X-Powered-By
  • X-AspNet-Version

元の応答をテストする

元の応答を表示するには:

  1. API Management サービス インスタンスで、 [API] を選択します。
  2. API の一覧で [Demo Conference API](デモ会議 API) を選択します。
  3. 画面の上部にある [テスト] タブを選択します。
  4. [GetSpeakers] 操作を選択してから、[送信] を選択します。

元の API 応答は、次に示す応答のようになります。

ポータルでの元の API 応答のスクリーンショット。

応答に、X-AspNet-VersionX-Powered-By というヘッダーが含まれていることがわかります。

変換ポリシーを設定する

この例では、フォームベース ポリシー エディターを使用する方法を示します。このエディターを使用すると、ポリシー XML ステートメントを直接編集しなくても、多くのポリシーを構成できます。

  1. [Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。

  2. [送信処理] セクションで、[ポリシーの追加] を選択します。

    ポータルで送信ポリシーに移動するスクリーンショット。

  3. [送信ポリシーの追加] ウィンドウで、[ヘッダーの設定] を選択します。

    ポータルでヘッダーの設定ポリシーを構成するスクリーンショット。

  4. ヘッダーの設定ポリシーを構成するには、次の操作を行います。

    1. [名前] に、「X-Powered-By」と入力します。
    2. [値] は空のままにします。 ドロップダウンに値が表示された場合は、削除します。
    3. [アクション] で、[削除] を選択します。
    4. [保存] を選択します。
  5. 前の 2 つのステップを繰り返して、X-AspNet-Version ヘッダーを削除する [ヘッダーの設定] ポリシーを追加します。

  6. 構成後、[送信処理] セクションには、2 つの set-header ポリシー要素が表示されます。

    ポータルの [ヘッダーの設定] 送信ポリシーのスクリーンショット。

API 応答の本文内の元の URL を API Management ゲートウェイの URL に置換する

このセクションでは、API の HTTP 応答の本文に表示される元の URL を API Management ゲートウェイ URL に置き換える方法を示します。 元のバックエンド URL をユーザーから非表示にすることができます。

元の応答をテストする

元の応答を表示するには:

  1. [Demo Conference API]\(デモ会議 API)>[テスト] を選択します。

  2. [GetSpeakers] 操作を選択してから、[送信] を選択します。

    応答に、元のバックエンド URL が含まれていることがわかります。

    ポータルでの応答の元の URL のスクリーンショット。

変換ポリシーを設定する

この例では、ポリシー コード エディターを使用して、ポリシー XML スニペットをポリシー定義に直接追加します。

  1. [Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。

  2. [送信処理] セクションで、コード エディター (</>) アイコンを選択します。

    ポータルで送信ポリシー コード エディターに移動するスクリーンショット。

  3. 空の行で <outbound> 要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。

    ポータルの送信ポリシー エディターで [スニペットの表示] を選択するスクリーンショット。

  4. 右側のウィンドウの [変換ポリシー] で、 [Mask URLs in content](コンテンツ内の URL をマスク) を選択します。

    <redirect-content-urls /> 要素は、カーソル位置に追加されます。

    ポータルのコンテンツ ポリシーにマスク URL を挿入するスクリーンショット。

  5. [保存] を選択します。

レート制限ポリシー (調整) を追加して API を保護する

このセクションでは、開発者が API を使いすぎないように、レート制限を構成してバックエンド API に保護を追加する方法について説明します。 この例では、各サブスクリプション ID に対して呼び出しの上限が 15 秒ごとに 3 回に設定されます。 15 秒後、開発者は、API の呼び出しを再試行できます。

  1. [Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。

  2. [受信処理] セクションで、コード エディター (</>) アイコンを選択します。

    ポータルで受信ポリシー コード エディターに移動するスクリーンショット。

  3. 空の行で <inbound> 要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。

    ポータルの受信ポリシー エディターで [スニペットの表示] を選択するスクリーンショット。

  4. 右側のウィンドウの [アクセス制限ポリシー] で、[Limit call rate per key](キーごとの呼び出しレートの制限) を選択します。

    <rate-limit-by-key /> 要素は、カーソル位置に追加されます。

    ポータルにキー ポリシーごとの制限呼び出しレートを挿入するスクリーンショット。

  5. <inbound> 要素内の <rate-limit-by-key /> コードを次のコードに変更します。 次に、 [保存] を選択します。

    <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
    

変換をテストする

この時点でコード エディターのコードを確認すると、ポリシーは次のコードのようになります。

<policies>
   <inbound>
     <rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Subscription.Id)" />
     <base />
   </inbound>
   <backend>
     <base />
   </backend>
   <outbound>
     <set-header name="X-Powered-By" exists-action="delete" />
     <set-header name="X-AspNet-Version" exists-action="delete" />
     <redirect-content-urls />
     <base />
   </outbound>
   <on-error>
     <base />
   </on-error>
</policies>

このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。

削除した応答ヘッダーをテストする

  1. [Demo Conference API]\(デモ会議 API)>[テスト] を選択します。

  2. [GetSpeakers] 操作を選択し、 [送信] を選択します。

    X-AspNet-VersionX-Powered-By というヘッダーが削除されたことがわかります。

    ポータルで削除された応答ヘッダーを示すスクリーンショット。

置換された URL をテストする

  1. [Demo Conference API]\(デモ会議 API)>[テスト] を選択します。

  2. [GetSpeakers] 操作を選択し、 [送信] を選択します。

    URL が置換されたことがわかります。

    ポータルで置き換えられた URL を示すスクリーンショット。

レート制限 (調整) をテストする

  1. [Demo Conference API]\(デモ会議 API)>[テスト] を選択します。

  2. [GetSpeakers] 操作を選択します。 [送信] を 4 回続けて選択します。

    要求を 4 回送信すると、429 Too Many Requests 応答が返されます。

    ポータルの応答で [要求が多すぎます] を示すスクリーンショット。

  3. 15 秒以上待ってから [送信] をもう一度選択します。 今度は "200 OK" 応答が返されます。

まとめ

このチュートリアルでは、次の作業を行う方法を学びました。

  • 応答ヘッダーを削除するように API を変換する
  • API 応答の本文内の元の URL を API Management ゲートウェイの URL に置換する
  • レート制限ポリシー (調整) を追加して API を保護する
  • 変換をテストする

次のステップ

次のチュートリアルに進みます。