ポリシーとは

Apigee Edge では、「ポリシー」を使用することで、コードを記述せずに API の動作を「プログラミング」できます。ポリシーは、特定の限定された管理機能を実装するモジュールのようなものです。ポリシーは、一般的な管理機能を API に簡単かつ確実に追加できるように設計されています。ポリシーには、セキュリティ、レート制限、変換、仲介などの機能が備わっているため、こうした機能を自分でコーディングして維持する必要がありません。

Apigee Edge で提供されるポリシータイプのセットに制限されません。カスタムのスクリプトとコード(JavaScript や Node.js アプリケーションなど)を作成して API プロキシの機能を拡張し、Apigee のポリシーでサポートされる基本的な管理機能を基に革新的な機能を装備することもできます。

ポリシーの添付と適用の概要については、こちらの動画をご覧ください。

ポリシータイプ

技術的に見ると、ポリシーは XML 形式の構成ファイルです。各ポリシータイプの構造(具体的には、必須およびオプションの構成要素)は、XML スキーマによって定義されます。XML ツールを使い慣れている場合は、Github の API Platform サンプルにあるポリシー スキーマを試してみることをおすすめします。

Edge ポリシーのタイプは、以下の機能カテゴリに分類されます。

トラフィック管理

トラフィック管理カテゴリのポリシーでは、API プロキシを通じて、リクエスト メッセージとレスポンス メッセージのフローを制御できます。これらのポリシーは、運用レベルと業務レベルの両方の制御をサポートします。これらを使用すると、そのままのスループットを制御して、アプリ単位でトラフィックを制御することも可能です。トラフィック管理ポリシータイプは割り当てを適用するために使用できます。また、サービス拒否攻撃の防御にも役立ちます。

セキュリティ

セキュリティ カテゴリのポリシーは、認証、認可、およびコンテンツ ベースのセキュリティをサポートします。

仲介

仲介カテゴリのポリシーでは、API プロキシ内のフローを通過するメッセージをアクティブに操作できます。これらのポリシーにより、メッセージ形式を XML から JSON(またはその逆)に変換したり、特定の XML 形式を別の XML 形式に変換したりできます。また、メッセージの解析、新しいメッセージの生成、送信メッセージの値の変更なども可能です。さらに、仲介ポリシーは API サービスによって公開される基本的なサービスと連携しているので、アプリ、デベロッパー、セキュリティ トークン、API 製品の情報を実行時に取得できます。

拡張

拡張カテゴリのポリシーでは、API サービスの拡張性を利用して、選択したプログラミング言語でカスタムの動作を実装できます。

各ポリシータイプの詳細については、ポリシー リファレンスの概要に記載されています。このトピックでは、一般的な使い方について説明し、ポリシーの作成方法と、API プロキシ構成内のフローにポリシーを適用する方法を示します。

ポリシーの変更をデプロイする

ポリシーの変更を有効にするには、API プロキシのリビジョンを環境にデプロイする必要があります。ポリシーを適用するか既存のポリシーを変更した後、管理 UI または管理 API を使用して変更をデプロイします。

ポリシー適用を検証する

ポリシーが適切に適用されているかどうかを検証するには、HTTP クライアントで API を呼び出す必要があります。割り当て構成を検証する場合は、複数のリクエストを API に送信して、割り当てポリシーに設定した割り当て制限を超過するようにします。(以下のリクエストでは、URI パスは ProxyEndpoint のベースパスの設定に従って構成されており、値は /weather です。)

    http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
    

1 分以内に複数のリクエストを送信すると、次のエラー メッセージが表示されるはずです。

    {
       "fault":{
          "faultstring":"policies.ratelimit.QuotaViolation",
          "detail":{
             "errorcode":"policies.ratelimit.QuotaViolation"
          }
       }
    }
    

これは、API サービスによって割り当てポリシーが適用されていることを示しています。

ポリシーベースの障害処理

上記のエラー メッセージの形式に注目してください。faultstring プロパティと errorcode プロパティが含まれています。多くの場合、これらのエラーを処理するには、いくつかの動作を実装する必要があります。たとえば、カスタマイズしたメッセージをデベロッパーに送信して、どのアプリが割り当てを超過したかを通知します。

障害処理の詳細については、障害の処理をご覧ください。

おすすめの方法: 一般的なポリシーセット

基本的な管理要件を満たすために、API プロキシは通常、以下のポリシーを適用します。

基本的な API キー検証

ProxyEndpoint リクエスト フロー:
  1. SpikeArrest
  2. XMLThreatProtection または JSONThreatProtection
  3. API キー検証
  4. 割り当て
  5. ResponseCache
ProxyEndpoint レスポンス フロー:
  1. ResponseCache

基本的な変換: JSON から XML

リクエスト フロー:
  1. SpikeArrest
  2. JSONThreatProtection
  3. API キー検証
  4. 割り当て
  5. JSONToXML
レスポンス フロー:
  1. XMLToJSON
  2. ResponseCache