適用対象: すべての API Management レベル
この記事では、Azure portal でポリシー定義を編集して、API Management インスタンスでポリシーを構成する方法について説明します。 各ポリシー定義は、API 要求と応答で順番に実行される一連の受信ステートメントと送信ステートメントを記述する XML ドキュメントです。
ポータルのポリシー エディターには、API パブリッシャーがポリシー定義でポリシーを追加および編集するためのガイド付きフォームが用意されています。 ポリシー コード エディターで XML を直接編集することもできます。
ポリシーの詳細:
- ポリシーの概要
- ポリシー ステートメントとその設定の一覧に関するポリシー リファレンス
- ポリシー スニペットのリポジトリ
- Azure API Management ポリシー ツールキット
- Azure で Microsoft Copilot を使用してポリシーを作成する
前提条件
API Management インスタンスとバックエンド API がまだない場合は、次をご覧ください。
API Management インスタンスに移動します。
Azure portal で、 API Management サービスを検索して選択します。
[API Management サービス] ページで、API Management インスタンスを選択します。
ポータルでポリシーを構成する
次の例は、ポータルのポリシー エディターで 2 つのオプションを使用してポリシーを構成する方法を示しています。
- 多くのポリシーを簡単に構成するためのガイド付きフォームベース エディター
- XML を直接追加または編集できるコード エディター
この例では、ポリシーは特定の受信 IP アドレスからの要求をフィルター処理します。 このスコープは、選択した API に設定されます。
ポリシーを構成するには、次の手順を実行します。
API Management インスタンスの左側のナビゲーションで [API] を選択します。
以前にインポートした API を選択します。
[デザイン] タブを選択します。
すべての操作にポリシーを適用するには、[すべての操作] を選択します。
[受信処理] セクションで、[ポリシーの追加] を選択します。
[受信ポリシーの追加] で、追加するポリシーを選択します。 たとえば、[Filter IP addresses (IP アドレスのフィルター処理)] を選択します。
ヒント
- 表示されるポリシーは、構成しているポリシー セクション (この場合は受信処理用) にスコープが設定されます。
- 必要なポリシーが表示されない場合は、[その他のポリシー] タイルを選択します。 これにより、XML コード エディターが開き、そのセクションとスコープのポリシーの完全な一覧が表示されます。
[許可された IP]>[IP フィルターの追加] を選択し、API 要求を行うことが許可されている受信アドレスの範囲の最初と最後の IP アドレスを追加します。 必要に応じて、他の IP アドレス範囲を追加します。
[保存] を選択すると、変更がすぐに API Management ゲートウェイに反映されます。
ip-filter ポリシーが [受信処理] セクションに表示されるようになりました。
異なるスコープでポリシーを構成する
API Management では、ポリシーの各セクションで、複数のスコープでポリシー定義を柔軟に構成できます。
重要
スコープまたはポリシーのセクションそれぞれですべてのポリシーを適用できるわけではありません。 追加するポリシーが有効になっていない場合、そのポリシー用のサポートされているポリシーのセクションおよびスコープが選択されていることを確認してください。 ポリシーのセクションとスコープを確認するには、ポリシー リファレンス トピックの使用例セクションをご覧ください。
注
バックエンド ポリシー セクションには、ポリシー要素を 1 つだけ含めることができます。 既定では、API Management は、グローバル スコープで forward-request
セクションの ポリシーを構成し、その他のスコープで base
要素を構成します。
グローバル スコープ
グローバル スコープが API Management インスタンス内の [すべての API] に対して構成されます。
API Management インスタンスの左側のナビゲーションで [API]>[すべての API] を選択します。
[デザイン] タブを選択します。
ポリシー セクションで、[ポリシーの追加] を選択してフォームベース ポリシー エディターを使用するか、</> (コード エディター) アイコンを選択して XML を直接追加および編集します。
[保存] を選択すると、変更がすぐに API Management ゲートウェイに反映されます。
成果物スコープ
成果物スコープは、選択した成果物に対して構成されます。
左側のメニューで [成果物] を選択し、ポリシーを適用する成果物を選択します。
[成果物] ウィンドウで、[ポリシー] を選択します。
ポリシー セクションで、[ポリシーの追加] を選択してフォームベース ポリシー エディターを使用するか、</> (コード エディター) アイコンを選択して XML を直接追加および編集します。
[保存] を選択すると、変更がすぐに API Management ゲートウェイに反映されます。
API スコープ
API スコープは、選択した API の [すべての操作] に対して構成されます。
API Management インスタンスの左側のナビゲーションで、[API] を選択し、ポリシーを適用する API を選択します。
[デザイン] タブを選択します。
[すべての操作] を選択します。
ポリシー セクションで、[ポリシーの追加] を選択してフォームベース ポリシー エディターを使用するか、</> (コード エディター) アイコンを選択して XML を直接追加および編集します。
[保存] を選択すると、変更がすぐに API Management ゲートウェイに反映されます。
操作スコープ
操作スコープは、選択した API 操作に対して構成されます。
API Management インスタンスの左側のナビゲーションで [API] を選択します。
[デザイン] タブを選択します。
ポリシーを適用する操作を選びます。
ポリシー セクションで、[ポリシーの追加] を選択してフォームベース ポリシー エディターを使用するか、</> (コード エディター) アイコンを選択して XML を直接追加および編集します。
[保存] を選択すると、変更がすぐに API Management ゲートウェイに反映されます。
ポリシー構成を再利用する
API Management インスタンスで再利用可能なポリシー フラグメントを作成できます。 ポリシー フラグメントは、1 つ以上のポリシーの構成を含む XML 要素です。 ポリシー フラグメントは、ポリシーを一貫して構成し、XML コードを繰り返したり、再入力したりする必要なくポリシー定義を維持するのに役立ちます。
ポリシー定義にポリシー フラグメントを挿入するように include-fragment
ポリシーを使用します。
base
要素を使用してポリシーの評価順序を設定する
ポリシー定義を複数のスコープで構成すると、API 要求または応答に複数のポリシーが適用される可能性があります。 さまざまなスコープのポリシーが適用される順序に応じて、要求または応答の変換が異なる場合があります。
API Management では、ポリシー定義内の各セクションの base
要素を各スコープに配置して、ポリシー評価順序を決定します。
base
要素は、次のより広範な (親) スコープで、そのセクションで構成されたポリシーを継承します。
base
要素は、既定で各ポリシー セクションに含まれています。
注
現在のスコープで有効なポリシーを表示するには、ポリシー エディターで [Calculate effective policy] (有効なポリシーの計算) を選択します。
ポリシー エディターを使用してポリシー評価順序を変更するには、次の手順を実行します。
まず、構成した最も狭いスコープで定義します。API Management はこれを最初に適用します。
たとえば、グローバル スコープと API スコープで構成されたポリシー定義を使用する場合は、まず API スコープで構成します。
base
要素をセクション内に配置して、親スコープの対応するセクションからすべてのポリシーを継承する場所を決定します。たとえば、API スコープで構成された
inbound
セクションで、グローバル スコープのbase
セクションで構成されたポリシーを継承する場所を制御するinbound
要素を配置します。 次の例では、グローバル スコープから継承されたポリシーは、ip-filter
ポリシーの前に適用されます。<policies> <inbound> <base /> <ip-filter action="allow"> <address>10.100.7.1</address> </ip-filter> </inbound> [...] </policies>
注
-
base
要素は、セクション内の任意のポリシー要素の前または後に配置できます。 - 親スコープからポリシーを継承しないようにするには、
base
要素を削除します。 ほとんどの場合、これは推奨されません。 ただし、API (すべての操作) スコープに対して構成されているポリシーとは異なるポリシーを特定の操作に適用する場合などの、特定の状況ではこれが役立つ場合があります。
-
引き続き、より広範なスコープでポリシー定義内の
base
要素を構成します。グローバル スコープのポリシーには親ポリシーがないため、そこで
base
要素を使用しても効果はありません。
Copilot のサポートを受ける
Copilot から AI の支援を受けて、API Management ポリシー定義を作成および編集できます。 Copilot を使用すると、XML 構文を知らなくても、特定の要件に一致するポリシーを作成および更新できます。 既存のポリシーの説明を取得することもできます。 また、Copilot は、他の API 管理ソリューションで構成したポリシーを翻訳するのに役立ちます。
- Azure の Microsoft Copilot は、Azure portal の自然言語プロンプトに対するポリシー作成の支援を提供します。 API Management ポリシー エディターでポリシーを作成し、ポリシー セクションの説明を Copilot に依頼できます。
- Visual Studio Code の GitHub Copilot for Azure では、Visual Studio Code でポリシー作成の支援が提供され、 Visual Studio Code 用の Azure API Management 拡張機能 を使用してポリシー構成を高速化できます。 自然言語で Copilot Chat または Copilot Edits にプロンプトを表示して、ポリシー定義を作成して調整することができます。
プロンプトの例:
Generate a policy that adds an Authorization header to the request with a Bearer token.
Copilot では AI を利用しているため、想定外のことや間違いが起こる可能性があります。 詳細については、「Copilot の一般的な使用に関する FAQ」を参照してください。
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。