チュートリアル: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 を保護する
- 変換をテストする
前提条件
- Azure API Management の用語について学習します。
- Azure API Management のポリシーの概念を理解します。
- 次のクイック スタートを完了すること:Azure API Management インスタンスを作成する。
- また、次のチュートリアルを完了すること: 最初の API のインポートと発行。
API Management インスタンスに移動します。
Azure portal で、[API Management サービス] を検索して選択します。
[API Management サービス] ページで、ご自身の API Management インスタンスを選択します。
応答ヘッダーを削除するように API を変換する
このセクションでは、ユーザーに対して表示したくない HTTP ヘッダーを非表示にする方法を示します。 たとえば、HTTP 応答から次のヘッダーを削除します。
- X-Powered-By
- X-AspNet-Version
元の応答をテストする
元の応答を表示するには:
- API Management サービス インスタンスで、 [API] を選択します。
- API の一覧で [Demo Conference API](デモ会議 API) を選択します。
- 画面の上部にある [テスト] タブを選択します。
- [GetSpeakers] 操作を選択してから、[送信] を選択します。
元の API 応答は、次に示す応答のようになります。
応答に、X-AspNet-Version と X-Powered-By というヘッダーが含まれていることがわかります。
変換ポリシーを設定する
この例では、フォームベース ポリシー エディターを使用する方法を示します。このエディターを使用すると、ポリシー XML ステートメントを直接編集しなくても、多くのポリシーを構成できます。
[Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。
[送信処理] セクションで、[ポリシーの追加] を選択します。
[送信ポリシーの追加] ウィンドウで、[ヘッダーの設定] を選択します。
ヘッダーの設定ポリシーを構成するには、次の操作を行います。
- [名前] に、「X-Powered-By」と入力します。
- [値] は空のままにします。 ドロップダウンに値が表示された場合は、削除します。
- [アクション] で、[削除] を選択します。
- [保存] を選択します。
前の 2 つのステップを繰り返して、X-AspNet-Version ヘッダーを削除する [ヘッダーの設定] ポリシーを追加します。
構成後、[送信処理] セクションには、2 つの set-header ポリシー要素が表示されます。
API 応答の本文内の元の URL を API Management ゲートウェイの URL に置換する
このセクションでは、API の HTTP 応答の本文に表示される元の URL を API Management ゲートウェイ URL に置き換える方法を示します。 元のバックエンド URL をユーザーから非表示にすることができます。
元の応答をテストする
元の応答を表示するには:
[Demo Conference API]\(デモ会議 API)>[テスト] を選択します。
[GetSpeakers] 操作を選択してから、[送信] を選択します。
応答に、元のバックエンド URL が含まれていることがわかります。
変換ポリシーを設定する
この例では、ポリシー コード エディターを使用して、ポリシー XML スニペットをポリシー定義に直接追加します。
[Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。
[送信処理] セクションで、コード エディター (</>) アイコンを選択します。
空の行で
<outbound>
要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。右側のウィンドウの [変換ポリシー] で、 [Mask URLs in content](コンテンツ内の URL をマスク) を選択します。
<redirect-content-urls />
要素は、カーソル位置に追加されます。[保存] を選択します。
レート制限ポリシー (調整) を追加して API を保護する
このセクションでは、開発者が API を使いすぎないように、レート制限を構成してバックエンド API に保護を追加する方法について説明します。 この例では、各サブスクリプション ID に対して呼び出しの上限が 15 秒ごとに 3 回に設定されます。 15 秒後、開発者は、API の呼び出しを再試行できます。
[Demo Conference API](デモ会議 API)>[Design](デザイン)>[すべての操作] を選択します。
[受信処理] セクションで、コード エディター (</>) アイコンを選択します。
空の行で
<inbound>
要素内にカーソルを配置します。 次に、画面の右上隅にある [スニペットの表示] を選択します。右側のウィンドウの [アクセス制限ポリシー] で、[Limit call rate per key](キーごとの呼び出しレートの制限) を選択します。
<rate-limit-by-key />
要素は、カーソル位置に追加されます。<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>
このセクションの残りの部分では、この記事で設定したポリシー変換をテストします。
削除した応答ヘッダーをテストする
[Demo Conference API]\(デモ会議 API)>[テスト] を選択します。
[GetSpeakers] 操作を選択し、 [送信] を選択します。
X-AspNet-Version と X-Powered-By というヘッダーが削除されたことがわかります。
置換された URL をテストする
[Demo Conference API]\(デモ会議 API)>[テスト] を選択します。
[GetSpeakers] 操作を選択し、 [送信] を選択します。
URL が置換されたことがわかります。
レート制限 (調整) をテストする
[Demo Conference API]\(デモ会議 API)>[テスト] を選択します。
[GetSpeakers] 操作を選択します。 [送信] を 4 回続けて選択します。
要求を 4 回送信すると、429 Too Many Requests 応答が返されます。
15 秒以上待ってから [送信] をもう一度選択します。 今度は "200 OK" 応答が返されます。
まとめ
このチュートリアルでは、次の作業を行う方法を学びました。
- 応答ヘッダーを削除するように API を変換する
- API 応答の本文内の元の URL を API Management ゲートウェイの URL に置換する
- レート制限ポリシー (調整) を追加して API を保護する
- 変換をテストする
次のステップ
次のチュートリアルに進みます。