Azure API Management ポリシーの設定または編集方法
適用対象: すべての 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 では、ポリシーの各セクションで、複数のスコープでポリシー定義を柔軟に構成できます。
重要
スコープまたはポリシーのセクションそれぞれですべてのポリシーを適用できるわけではありません。 追加するポリシーが有効になっていない場合、そのポリシー用のサポートされているポリシーのセクションおよびスコープが選択されていることを確認してください。 ポリシーのセクションとスコープを確認するには、ポリシー リファレンス トピックの使用例セクションをご覧ください。
Note
バックエンド ポリシー セクションには、ポリシー要素を 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
要素は、既定で各ポリシー セクションに含まれています。
Note
現在のスコープで有効なポリシーを表示するには、ポリシー エディターで [Calculate effective policy] (有効なポリシーの計算) を選択します。
ポリシー エディターを使用してポリシー評価順序を変更するには、次の手順を実行します。
まず、構成した最も狭いスコープで定義します。API Management はこれを最初に適用します。
たとえば、グローバル スコープと API スコープで構成されたポリシー定義を使用する場合は、まず API スコープで構成します。
base
要素をセクション内に配置して、親スコープの対応するセクションからすべてのポリシーを継承する場所を決定します。たとえば、API スコープで構成された
inbound
セクションで、グローバル スコープのinbound
セクションで構成されたポリシーを継承する場所を制御するbase
要素を配置します。 次の例では、グローバル スコープから継承されたポリシーは、ip-filter
ポリシーの前に適用されます。<policies> <inbound> <base /> <ip-filter action="allow"> <address>10.100.7.1</address> </ip-filter> </inbound> [...] </policies>
Note
base
要素は、セクション内の任意のポリシー要素の前または後に配置できます。- 親スコープからポリシーを継承しないようにするには、
base
要素を削除します。 ほとんどの場合、これは推奨されません。 ただし、API (すべての操作) スコープに対して構成されているポリシーとは異なるポリシーを特定の操作に適用する場合などの、特定の状況ではこれが役立つ場合があります。
引き続き、より広範なスコープでポリシー定義内の
base
要素を構成します。グローバル スコープのポリシーには親ポリシーがないため、そこで
base
要素を使用しても効果はありません。
Microsoft Copilot in Azure (プレビュー) を使ったポリシーの作成についてサポートを受ける
Microsoft Copilot in Azure (プレビュー) には、Azure API Management のポリシー作成機能があります。 API Management のポリシー エディターのコンテキストで Copilot in Azure を使うと、構文を知らなくても特定の要件に合致するポリシーを作成したり、構成済みのポリシーについての説明を受けたりすることができます。
Copilot in Azure にポリシー定義を生成するようにプロンプトを指定し、その結果をポリシー エディターにコピーして、必要な調整を行うことができます。 質問してさまざまなオプションについて分析情報を得る、提供されたポリシーを変更する、または既存のポリシーを明確することができます。 詳細情報
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。