すべてのプロダクト
Search
ドキュメントセンター

API Gateway:プラグインデータセットPlug-in dataset

最終更新日:Jul 31, 2024

API Gatewayは、ホットアップデートをサポートする強力なプラグインを通じて、コア機能の一部を提供します。 これまでに、このようなプラグインは12個用意されており、その数は増え続けています。 これらのプラグインは、API Gatewayの機能スイートを強化し、API Gatewayでのメタデータ管理を柔軟にします。 ただし、大規模なビジネスシナリオでは、これらのテキストプラグインによってユーザーのビジネスパフォーマンスが制限されます。 この問題を解決するには、プラグインの構成データをデータセットオブジェクトとして抽出し、個別に管理します。 これにより、ユーザーエクスペリエンスとプラグインのスケーラビリティが大幅に向上します。

私は テキストプラグインの制限

API Gatewayプラグインには、次の機能があります。

  • テキストベースの設定

  • サイズ制限

その結果、ユーザーは一部のプラグインを使用する際に問題が発生したり、特定のプラグインを使用できなくなったりします。 次の例は、IPアドレスベースのアクセス制御プラグインの一般的な構成を示しています。 このプラグインタイプはユーザーの間で人気があります。

---
type: ALLOW 
items: 
- blocks:
  - 61.3.XX.XX/24
  - 192.168.34.XX/32
  - 192.168.158.XX/32
  appId: 219810
- blocks:
  - 79.11.XX.XX
  - 85.13.XX.XX
  - 72.152.XX.XX

この構成は、いくつかのCIDRブロックしか含まない小規模なアプリケーションに適しているようです。 ただし、アプリケーションの規模が大きく、スコアまたは100を超えるCIDRブロックが含まれる場合は、大きな問題が発生します。 次の項目には、2つの主要な問題があります。

  • エラーが発生しやすい管理: CIDRブロックのわずかな変更により、プラグイン全体がフォークリフトで更新されます。

  • サイズが大きい: CIDRブロックが多すぎると、プラグインのサイズ制限を超えます。

どちらの問題もテキスト設定に基づいて排除することはできませんが、プラグインデータセット機能は両方の問題を同時に解決できます。

II. データセットオブジェクトとしての構成データの抽出

プラグインデータセットの機能について説明します。 つまり、構成は、必要に応じてプラグインが参照するデータセットオブジェクトとして抽出されます。 データセットオブジェクトの変更は、このデータセットオブジェクトを参照するすべてのプラグインですぐに有効になります。

データセットオブジェクトに基づいて、上記の例の構成は次のように簡略化できます。

---
type: ALLOW 
items: 
- blocksDatasetId: 87b65008e92541938537b1a4a236eda5
  appId: 219810
- blocksDatasetId: 87b65008e92541938537b1a4a236eda3

アクセス制御ポリシーを変更する場合は、プラグインデータセットの参照データエントリを変更するだけで済みます。

プラグインデータセットは、テキストプラグインの管理とサイズの問題を簡単に解決します。

  • データセットは、必要な数のオブジェクトを参照できるプラグインのサイズ制限の対象にはなりません。

  • データセット内のデータエントリを変更することでポリシーを変更できるため、プラグイン全体を更新する必要はありません。 たとえば、IPアドレスをホワイトリストに追加する場合は、データセットにデータエントリを追加するだけです。

現在、プラグインデータセット機能はJSON Web Token (JWT) 認証プラグインでサポートされています。 IPアドレスベースのアクセス制御、パラメータベースのアクセス制御、バックエンドルーティングプラグインなど、より多くのプラグインタイプでサポートされる予定です。

III. プラグインデータセットの特性

プラグインデータセットを使用すると、プラグインの設定を動的に変更できます。 プラグインのデータセットには次の特徴があります。

  1. データセット内のデータエントリに加えられた変更は、10秒以内にすべての専用インスタンスで有効になります。

  2. 最大100個のデータセットを定義し、各データセットに最大200個のデータエントリを追加できます。 クォータが不十分な場合は、チケットを起票してクォータを増やすことができます。

  3. データセットは複数のプラグインで参照でき、データセットに加えられた変更はすべてのプラグインに同期されます。

  4. データセットでデータを複製することはできません。

  5. 各データエントリの有効期限を設定できます。有効期限は、時間が来ると自動的に無効になります。 データエントリを永続的に有効に設定することもできます。

  6. データセット設定は、専用インスタンスのグループに対してのみ有効です。 グループが共有インスタンスに移行されるとすぐに、設定は無効になります。

IV。 JWT認証プラグイン用のプラグインデータセットの構成

1. プラグインデータセットの設定

  • データセットを作成する

このステップでは、名前を設定し、データセットのタイプを選択する必要があります。 データセットの名前はいつでも変更できますが、データセットのタイプは変更できません。 JWT認証プラグインの場合、データセットタイプをJWT_BLOCKINGに設定します。

  • データセットにデータエントリを作成する

作成したデータセットをクリックして、データエントリを作成します。 データエントリの値は、データセット内で一意である必要があります。 各データエントリの有効期限を設定できます。有効期限は、時間が来ると自動的に無効になります。

  • データセットのIDを取得する

プラグインデータセットが作成されると、システムはデータセットのIDを生成します。 データセットリストでIDを表示できます。 このIDは、プラグインをデータセットに関連付けるために使用され、変更されません。

2. JWT認証プラグインの設定

プラグインデータセットは、JWT認証プラグインでサポートされています。

JWT認証プラグインは通常、ブラックリストに追加されたが公式トークンを取得したユーザーから送信されたリクエストをブロックするために使用されます。 プラグインデータセットを使用すると、JWT認証プラグインは、トークンから復号化されたクレームパラメーターに基づいてリクエストを拒否できます。 API Gatewayでは、拒否されたリクエストに対してカスタム応答を設定することもできます。 次のコードは、JWT認証プラグインを設定する方法の例を示しています。 ブロックで始まるパラメータ定義に注意してください。

---
parameter: Authorization   # The parameter from which the token is obtained. 
parameterLocation: header  # The location from which the token is obtained.
claimParameters:           # The claims to be converted into parameters. API Gateway maps JWT claims to backend parameters.
- claimName: aud           # The name of the JWT claim, which can be public or private.
  parameterName: X-Aud     # The name of the backend parameter, to which the JWT claim is mapped.
  location: header         # The location of the backend parameter, to which the JWT claim is mapped. Valid values: query, header, path, and formData.
- claimName: userId        # The name of the JWT claim, which can be public or private.
  parameterName: userId    # The name of the backend parameter, to which the JWT claim is mapped.
  location: query          # The location of the backend parameter, to which the JWT claim is mapped. Valid values: query, header, path, and formData.
blockClaimParameterName: userId # The location of the backend parameter, to which the JWT claim is mapped. Valid values: query, header, path, and formData.
blockByDataSet: 87 b65008e92541938537b1a4a236eda5 # The location of the backend parameter, to which the JWT claim is mapped. Valid values: query, header, path, and formData.
blockStatusCode: 403       # The status code of the response that is returned to a rejected request.
blockResponseHeaders:      # The header of the response that is returned to a rejected request.
  Content-Type: application/xml
blockResponseBody:         # The body of the response that is returned to a rejected request.
  <Reason>be blocked</Reason>
jwks:
- kid: O9fpdhrViq2zaaaBEWZITz         # kid must be set to different values for different JWKs.
  kty: RSA
  e: AQAB
  use: sig
  alg: RS256
  n: qSVxcknOm0uCq5v....

V. 概要

プラグインデータセット機能は、テキスト時代から構造化データ時代へのプラグイン構成を案内します。 データの部分的なホットアップデートがサポートされており、プラグインには以前よりもはるかに多くの設定を含めることができます。 API Gatewayは、高負荷シナリオで100万を超えるプラグインデータセットをサポートしています。 さらに、プラグインは小さなサイズによって制限されなくなったため、ユーザーはAPI Gatewayプラグインでより多くのことを行うことができます。

現在、この新機能はJWT認証プラグインでのみ使用できます。 今後は、IPアドレスベースのアクセス制御、パラメータベースのアクセス制御、バックエンドルーティングプラグインなどのプラグインをサポートする予定です。