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

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

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

Note

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

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

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

Policies in portal

前提条件

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

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

    Select API Management services

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

    Select your API Management instance

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

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

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

元の応答をテストする

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

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

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

Original API response

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

変換ポリシーを設定する

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

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

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

    Navigate to outbound policy

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

    Set HTTP header policy

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

    1. [名前] に、「X-Powered-By」と入力します。 [アクション] で、[削除] を選択します。
    2. [ヘッダーの追加] を選択します。
    3. [名前] に「X-AspNet-Version」と入力します。 [アクション] で、[削除] を選択します。

    Set HTTP header

  5. [保存] を選択します。 [送信処理] セクションには、2 つの set-header ポリシー要素が表示されます。

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

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

元の応答をテストする

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

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

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

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

    Original URLs in response

変換ポリシーを設定する

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

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

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

    Navigate to outbound policy code editor

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

    Select show snippets

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

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

    Mask URLs in content

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

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

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

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

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

    Navigate to inbound policy

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

    Set inbound policy

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

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

    Select limit call rate per 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] 操作を選択し、 [送信] を選択します。

    ヘッダーが削除されたことがわかります。

    Stripped response headers

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

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

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

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

    Replaced URLs

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

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

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

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

    Too many requests

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

次のステップ

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

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

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