API を変換および保護するTransform and protect your API

このチュートリアルでは、API を変換して、プライベート バックエンド情報を公開しないようにする方法を示します。The tutorial shows how to transform your API so it does not reveal a private backend info. たとえば、バックエンドで実行されているテクノロジ スタックに関する情報を非表示にすることができます。For example, you might want to hide the info about technology stack that is running on the backend. API の HTTP 応答の本文に表示される元の URL を非表示にして、代わりに APIM ゲートウェイにリダイレクトすることもできます。You might also want to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

このチュートリアルでは、Azure API Management でレート制限を構成することによって、いかに簡単にバックエンド API の保護を追加できるかを示します。This tutorial also shows you how easy it is to add protection for your backend API by configuring rate limit with Azure API Management. たとえば、API の呼び出し回数を制限して、開発者が過剰に使用しないようにすることができます。For example, you may want to limit a number of calls the API is called so it is not overused by developers. 詳しくは、「API Management のポリシー」をご覧くださいFor more information, see API Management policies

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • 応答ヘッダーを削除するように API を変換するTransform an API to strip response headers
  • API 応答の本文内の元の URL を APIM ゲートウェイの URL に置換するReplace original URLs in the body of the API response with APIM gateway URLs
  • レート制限ポリシー (調整) を追加して API を保護するProtect an API by adding rate limit policy (throttling)
  • 変換をテストするTest the transformations

ポリシー

前提条件Prerequisites

API Management インスタンスに移動します。Go to your API Management instance

  1. Azure portal で、API Management サービス を検索して選択します。In the Azure portal, search for and select API Management services.

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

  2. [API Management] 画面で、ご自身の API Management インスタンスを選択します。On the API Management screen, select your API Management instance.

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

応答ヘッダーを削除するように API を変換するTransform an API to strip response headers

このセクションでは、ユーザーに対して表示したくない HTTP ヘッダーを非表示にする方法を示します。This section shows how to hide the HTTP headers that you do not want to show to your users. この例では、HTTP 応答で次のヘッダーが削除されます。In this example, the following headers get deleted in the HTTP response:

  • X-Powered-ByX-Powered-By
  • X-AspNet-VersionX-AspNet-Version

元の応答をテストするTest the original response

元の応答を表示するには:To see the original response:

  1. APIM サービス インスタンスで [API] ( [API 管理] の下) を選択します。In your APIM service instance, select APIs (under API MANAGEMENT).
  2. API の一覧で [Demo Conference API](デモ会議 API) をクリックします。Click Demo Conference API from your API list.
  3. 画面の上部にある [テスト] タブをクリックします。Click the Test tab, on the top of the screen.
  4. [GetSpeakers] 操作を選択します。Select the GetSpeakers operation.
  5. 画面の下部にある [送信] をクリックします。Press the Send button, at the bottom of the screen.

元の応答は次のようになります。The original response should look like this:

ポリシー

変換ポリシーを設定するSet the transformation policy

送信ポリシーを設定する

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. 画面の上部の [デザイン] タブを選択します。On the top of the screen, select Design tab.

  3. [すべての操作] を選択します。Select All operations.

  4. [送信処理] セクションで、 [</>] アイコンをクリックします。In the Outbound processing section, click the </> icon.

  5. <outbound> 要素内にカーソルを配置します。Position the cursor inside the <outbound> element.

  6. 右側のウィンドウの [変換ポリシー] で、 [+ HTTP ヘッダーの設定] を 2 回クリックします (2 つのポリシー スニペットを挿入するため)。In the right window, under Transformation policies, click + Set HTTP header twice (to insert two policy snippets).

    ポリシー

  7. <outbound> コードを次のように変更します。Modify your <outbound> code to look like this:

    <set-header name="X-Powered-By" exists-action="delete" />
    <set-header name="X-AspNet-Version" exists-action="delete" />
    

    ポリシー

  8. [保存] ボタンをクリックします。Click the Save button.

API 応答の本文内の元の URL を APIM ゲートウェイの URL に置換するReplace original URLs in the body of the API response with APIM gateway URLs

このセクションでは、API の HTTP 応答の本文に表示される元の URL を非表示にして、代わりに APIM ゲートウェイにリダイレクトする方法を示します。This section shows how to hide original URLs that appear in the body of API's HTTP response and instead redirect them to the APIM gateway.

元の応答をテストするTest the original response

元の応答を表示するには:To see the original response:

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. 画面の上部にある [テスト] タブをクリックします。Click the Test tab, on the top of the screen.

  3. [GetSpeakers] 操作を選択します。Select the GetSpeakers operation.

  4. 画面の下部にある [送信] をクリックします。Press the Send button, at the bottom of the screen.

    元の応答が次のように表示されます。As you can see the original response looks like this:

    ポリシー

変換ポリシーを設定するSet the transformation policy

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. [すべての操作] を選択します。Select All operations.

  3. 画面の上部の [デザイン] タブを選択します。On the top of the screen, select Design tab.

  4. [送信処理] セクションで、 [</>] アイコンをクリックします。In the Outbound processing section, click the </> icon.

  5. <outbound> 要素内にカーソルを配置します。Position the cursor inside the <outbound> element.

  6. 右側のウィンドウの [変換ポリシー] で、 [+ Find and replace string in body](+ 本文内の文字列の検索および置換) をクリックします。In the right window, under Transformation policies, click + Find and replace string in body.

  7. find-and-replace コード ( <outbound> 要素内) を変更して、APIM ゲートウェイと一致するように URL を置換します。Modify your find-and-replace code (in the <outbound> element) to replace the URL to match your APIM gateway. 例:For example:

    <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
    

レート制限ポリシー (調整) を追加して API を保護するProtect an API by adding rate limit policy (throttling)

このセクションでは、レート制限を構成してバックエンド API の保護を強化する方法を示します。This section shows how to add protection for your backend API by configuring rate limits. たとえば、API の呼び出し回数を制限して、開発者が過剰に使用しないようにすることができます。For example, you may want to limit a number of calls the API is called so it is not overused by developers. この例では、各サブスクリプション ID に対して呼び出しの上限が 15 秒ごとに 3 回に設定されます。15 秒後、開発者は、API の呼び出しを再試行できます。In this example, the limit is set to 3 calls per 15 seconds for each subscription Id. After 15 seconds, a developer can retry calling the API.

受信ポリシーを設定する

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. [すべての操作] を選択します。Select All operations.

  3. 画面の上部の [デザイン] タブを選択します。On the top of the screen, select Design tab.

  4. [受信処理] セクションで、 [</>] アイコンをクリックします。In the Inbound processing section, click the </> icon.

  5. <inbound> 要素内にカーソルを配置します。Position the cursor inside the <inbound> element.

  6. 右側のウィンドウの [アクセス制限ポリシー] で、 [+ Limit call rate per key](+ キーごとの呼び出しレートの制限) をクリックします。In the right window, under Access restriction policies, click + Limit call rate per key.

  7. rate-limit-by-key コード ( <inbound> 要素内) を次のコードに変更します。Modify your rate-limit-by-key code (in the <inbound> element) to the following code:

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

変換をテストするTest the transformations

この時点でコード エディターのコードを確認すると、ポリシーは次のようになります。At this point if you look at the code in the code editor, your policies look like this:

<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" />
        <find-and-replace from="://conferenceapi.azurewebsites.net:443" to="://apiphany.azure-api.net/conference"/>
        <find-and-replace from="://conferenceapi.azurewebsites.net" to="://apiphany.azure-api.net/conference"/>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。The rest of this section tests policy transformations that you set in this article.

削除した応答ヘッダーをテストするTest the stripped response headers

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. [テスト] タブを選びます。Select the Test tab.

  3. [GetSpeakers] 操作をクリックします。Click the GetSpeakers operation.

  4. [送信] をクリックします。Press Send.

    ヘッダーが削除されたことがわかります。As you can see the headers have been stripped:

    ポリシー

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

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. [テスト] タブを選びます。Select the Test tab.

  3. [GetSpeakers] 操作をクリックします。Click the GetSpeakers operation.

  4. [送信] をクリックします。Press Send.

    URL が置換されたことがわかります。As you can see the URL has been replaced.

    ポリシー

レート制限 (調整) をテストするTest the rate limit (throttling)

  1. [Demo Conference API](デモ会議 API) を選択します。Select Demo Conference API.

  2. [テスト] タブを選びます。Select the Test tab.

  3. [GetSpeakers] 操作をクリックします。Click the GetSpeakers operation.

  4. 行の [送信] を 3 回クリックします。Press Send three times in a row.

    要求を 3 回送信すると、"429 要求が多すぎます" 応答が返されます。After sending the request 3 times, you get 429 Too many requests response.

  5. 15 秒ほど待ち、 [送信] をもう一度クリックします。Wait 15 seconds or so and press Send again. 今度は "200 OK" 応答が返されます。This time you should get a 200 OK response.

    Throttling

ビデオVideo

次の手順Next steps

このチュートリアルでは、以下の内容を学習しました。In this tutorial, you learned how to:

  • 応答ヘッダーを削除するように API を変換するTransform an API to strip response headers
  • API 応答の本文内の元の URL を APIM ゲートウェイの URL に置換するReplace original URLs in the body of the API response with APIM gateway URLs
  • レート制限ポリシー (調整) を追加して API を保護するProtect an API by adding rate limit policy (throttling)
  • 変換をテストするTest the transformations

次のチュートリアルに進みます。Advance to the next tutorial: