API プロダクトの概要

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

以降のセクションでは、API プロダクトとそれに関連するコンセプト(割り当てや API キーなど)について説明します。

API プロダクトとは

API プロバイダは、API をバンドルする API プロダクトを作成することにより、アプリ デベロッパーがそれらを使用できるようにします。API プロダクトは、製品ラインと考えることができます。

具体的には、API プロダクトは 1 つ以上のオペレーションをバンドル化したものです。オペレーションでは、API プロキシと、そのプロキシ上でアクセスできるリソースパスを指定します。オペレーションで HTTP メソッドや割り当てでアクセスを制限することもできます。

API プロダクトは、API へのアクセス制御の中核となるメカニズムです。デベロッパー アプリで 1 つ以上の API プロダクトを定義すると、API キーを使用してプロキシへのアクセスを制限できます。Apigee では、API 自体ではなく API プロダクトに対して API キーがプロビジョニングされます。つまり、API キーは、製品ラインまたは特定のサービスプランを定義するオペレーションのバンドルにプロビジョニングされます。

一般的なユースケース

特定のユースケースに対応するオペレーションを含む複数の API プロダクトを作成できます。たとえば、デベロッパーがアプリケーションにマップを簡単に統合できるように、マッピング リソースを含む多数のオペレーションをバンドルした API プロダクトを作成できます。

さらに、API プロダクトを使用すると次のような基準に基づいて価格レベルを定義できます。

リクエストの数:

  • プレミアム: 1 日あたりのリクエスト数の上限なし
  • ベーシック: 1 日あたり最大 1,000 件のリクエスト
  • フリー: 1 日あたり最大 100 件のリクエスト

アクセスレベル:

  • プレミアム: 読み取り、書き込み、更新、削除
  • ベーシック: 読み取り、更新
  • フリー: 読み取り専用

上記の任意の組み合わせ:

  • エクストラ プレミアム: 1 日あたりの読み取り / 書き込み回数の制限なし
  • プレミアム: 1 日あたり最大 1,000 件のリクエストの読み取り / 書き込み
  • ベーシック: 1 日あたり最大 100 回の読み取り / 書き込みアクセス
  • フリー: 1 日あたり最大 1,000 回の読み取り
  • フリー: 1 日あたり 100 件のリクエストの読み取り専用アクセス

要件

従量課金制の一部である API プロダクトには、次のものが含まれている必要があります。

オペレーション

オペレーションは、リソースパス、HTTP メソッド、割り当てなどの条件に基づいて 1 つ以上の API プロキシへのアクセスを制限する属性のグループです。オペレーションには次の属性が含まれます。

属性 必須かどうか 説明
API プロキシ 必須 各オペレーション グループで API プロキシを指定する必要があります。オペレーション グループごとに許可されるプロキシは 1 つのみです。
リモート サービス 場合によって異なる Apigee Adapter for Envoy をインストールして使用する場合にのみ必要です。
リソースパス 必須 各オペレーション グループでリソースパスを 1 つ以上指定する必要があります。オペレーションのリソースパスは、API プロキシ上の特定のリソースへのアクセスを制限します(リソースパスは、プロキシのベースパスの後に続く API プロキシのリクエスト URL の一部です)。
HTTP メソッド 省略可 HTTP メソッドを使用してプロキシへのアクセスを制限することもできます。たとえば、オペレーション グループの GET メソッドと POST メソッドを指定すると、HTTP GETPOST リクエストのみが、指定されたリソースパスのプロキシにアクセスできます。メソッドを指定しない場合、すべてのメソッドが許可されます。
割り当て 省略可 オペレーション グループの割り当てを指定できます。指定した場合、オペレーション グループに指定された割り当ては API プロダクト レベルの割り当てよりも優先されます。
カスタム属性 省略可 カスタム属性は指標やモニタリングに役立つだけでなく、API プロダクトと一緒に追加情報を保存して後でアクセスまたは取得できるようにする場合にも便利です。API プロダクト レベルのカスタム属性の他に、オペレーションに関連付けられたカスタム属性が存在し、apiproduct.operation.attributes という接頭辞を持つフロー変数としてランタイムでアクセスできます。

API キー

デベロッパーのアプリを組織で登録するには、アプリに 1 つ以上の API プロダクトを関連付ける必要があります。アプリを 1 つ以上の API プロダクトに関連付けると、Apigee は一意のコンシューマ キーをアプリに割り当てます。アプリを登録した API へのアクセスの管理もご覧ください。

コンシューマ キーまたはアクセス トークンは、リクエストの認証情報として機能します。アプリ デベロッパーはコンシューマ キーをアプリに埋め込みます。これにより、アプリが Apigee によってホストされる API にリクエストを送信する際、次のいずれかの方法でそのリクエストにコンシューマ キーを渡すことができます。

  • API で API キー検証を使用する場合、アプリはコンシューマ キーを直接渡す必要があります。
  • API で OAuth トークン検証を使用する場合、アプリはコンシューマ キーから生成されたトークンを渡す必要があります。

API キーの適用は自動的には行われません。リクエストの認証情報としてコンシューマ キーまたは OAuth トークンのどちらを使用する場合でも、API プロキシは適切なフローに VerifyAPIKey ポリシーまたは VerifyAccessToken ポリシー構成(OAuthv2 ポリシーを参照)を含めることによって、API プロキシのリクエスト認証情報を検証します。API プロキシに認証情報の適用ポリシーが含まれていない場合、どの呼び出し元からでも API を呼び出せます。

リクエストに渡される認証情報を検証するために、Apigee は次の手順を行います。

  1. リクエストとともに渡される認証情報を取得します。OAuth トークンを検証する場合、Apigee はトークンの有効期限が切れていないことを検証してから、トークンの生成に使用されたコンシューマ キーを調べます。
  2. コンシューマ キーが関連付けられている API プロダクトのリストを取得します。
  3. 現在の API プロキシが API プロダクトに含まれているかどうか、現在のリソースパス(URL パス)が API プロダクトで有効になっているかどうか、プロダクトに含まれている場合は指定された HTTP 動詞がリクエストで使用されているかどうかを確認します。
  4. 割り当てが指定されている場合は、それを超えていないことを確認します。
  5. コンシューマ キーが有効期限切れまたは取り消し済みでないこと、アプリが取り消し済みでないこと、さらにアプリ デベロッパーがアクティブであることを確認します。

上記のチェックにすべて合格すると、認証情報の検証が成功します。

まとめると、Apigee はコンシューマ キーを自動生成しますが、API パブリッシャーは適切なポリシーを使用して API プロキシでキーを確認する必要があります。

鍵の承認

デフォルトでは、アプリから API プロダクトにアクセスするキーを取得するためのリクエストはすべて自動的に承認されます。または、手動でキーを承認するように API プロダクトを設定することもできます。この設定については、API プロダクトの管理をご覧ください。この場合、API プロダクトを追加するアプリからのキーリクエストを承認する必要があります。詳細については、アプリ登録を使用した API へのアクセスの管理をご覧ください。

割り当て

割り当てを行うことで、急激なトラフィックの変動からバックエンド サーバーを保護し、サービスを差別化できます。たとえば、割り当て量の多いリソースをプレミアム プロダクトとしてバンドルし、割り当て量の少ない同じバンドルをベーシック プロダクトとして使用できます。割り当てを利用すれば、プロダクトの需要が高まって短期間に大量のリクエストを受信するようになった場合にサーバーが過負荷になるのを防止できます。

API プロダクトに含まれているすべての API プロキシに適用される割り当てを指定するか、オペレーション レベルの割り当てを指定できます。オペレーションで指定された割り当ては、API プロダクト レベルで設定された割り当てよりも優先されます。

API プロダクトに割り当て上限を設定しても、割り当てが自動的に適用されるわけではありません。この割り当て上限は、単に割り当てポリシーで参照できるデフォルトの上限です。次に、割り当てポリシーが参照する割り当てをプロダクトに設定する利点をいくつか示します。

  • 割り当てポリシーを使用して、API プロダクトのすべての API プロキシに一律の設定を適用できます。
  • ランタイム時に API プロダクトの割り当て設定を変更すると、割り当てポリシーは更新された割り当て設定を自動的に参照します。

詳細については以下をご覧ください。

OAuth スコープ

OAuth スコープはカンマ区切りのリストとして定義できます。このリストは、プロダクトに関連するアクセス トークンに含まれている必要があります。Apigee OAuth ポリシーでのスコープの使用については、OAuth2 スコープの操作をご覧ください。

アクセスレベル

API プロダクトを定義する際に、次のアクセスレベルを設定できます。

アクセスレベル 説明
Public すべてのデベロッパーが使用できる API プロダクト。これらのプロダクトを、統合ポータルまたは Drupal ベースのデベロッパー ポータルに追加できます。
Private または Internal only 限定公開または内部使用を目的とした API プロダクト。

統合ポータルでは、必要に応じて Private または Internal only の API プロダクトを追加してアプリ デベロッパーが使用できるようにすることができます。

Drupal ベースのデベロッパー ポータルでは、次のセクションで説明するように、デベロッパー ポータルの Private または Internal only の API プロダクトへのアクセスを管理できます。

  • Drupal 10 デベロッパー ポータルでは、Configure access permissions to API products で説明されているように、デベロッパー ポータルの Private または Internal only の API プロダクトへのアクセスを設定できます。
  • Drupal 7 デベロッパー ポータルでは、Private または Internal only のAPI プロダクトをデベロッパー ポータルに追加することはできません。

    アプリ デベロッパーが Private または Internal only の API プロダクトを利用できるようにするには、アプリ登録を使用した API へのアクセスの管理で説明したように、Apigee UI または API から登録されたアプリに手動でプロダクトを追加する必要があります。

    API プロダクトを追加すると、ポータルでアプリに関連付けられた API プロダクトがデベロッパーに表示されます(アプリ内での API プロダクトの管理を参照)。アプリ デベロッパーが Private または Internal onlyAPI プロダクトへのアクセスを無効にすると、API プロダクトはアプリから削除され、ポータル管理者が手動で再追加しなければならなくなります。