スキーマ検証ポリシー

ポリシー名

スキーマ検証ポリシー

概要

指定された API スキーマに対して受信トラフィックを検証する

カテゴリ

セキュリティ

使用可能な最小 Flex Gateway バージョン

v1.4.0

返される状況コード

400 - 要求プロパティが API 仕様に準拠していません。

概要

スキーマ検証ポリシーでは REST API のみがサポートされていて、現在のところ OpenAPI 仕様 3.0 (OAS3) スキーマ検証のみがサポートされています。
スキーマ検証ポリシーでは ​number​ スキーマデータ型について最大 64 ビットがサポートされます。

REST API 要求を処理するアプリケーションは、ヘッダー挿入やペイロード挿入などの攻撃を受けやすくなっています。また、他の脆弱性により機密情報にアクセスされる可能性があります。スキーマ検証ポリシーでは、指定された API 仕様に対してトラフィックを検証することで、このような攻撃と脆弱性から保護します。

REST API 仕様をアップロードする方法は多数ありますが、Exchange を使用する方法が最も簡単です。API 仕様を Exchange にアップロードするには、​「Exchange アセットの作成」​を参照してください。

Flex Gateway では、1 つのファイルに含まれている JSON または YAML で定義されたスキーマがサポートされます。

スキーマ検証ポリシーでは、リクエストヘッダー、クエリ、またはパスパラメーターが検証されます。

要求には、コンテンツタイプ ​application/json​ の JSON 形式のサポートのみが含まれます。

次のいずれかのアクションを実行するようにポリシーを設定します。

  • 要求をブロックした後、400 エラー状況コードを返す。

  • 要求を許可し、エラーを記録した後、要求の状況コードを返す。

次に対してコンテンツを検証することができます。

  • すべての必須プロパティが存在すること。

  • 追加プロパティの有無。

  • すべてのプロパティの型。

    たとえば、スキーマでプロパティが整数として指定されている場合、要求には文字列などの別の型ではなく整数が含まれている必要があります。

  • プロパティの形式。

    たとえば、​pattern​ キーワードが指定されている場合、ポリシーではプロパティが正規表現として検証されます。

ポリシーのパラメーターの設定

Flex Gateway のローカルモード

ローカルモードでは、宣言型の設定ファイルを使用してスキーマ検証ポリシーを API に適用します。以下のポリシー定義とパラメーターの表を参照してください。

- policyRef:
    name: spec-validation-flex
  config:
    source: <string> // REQUIRED
    spec: <string> // REQUIRED
    apiBasePath: <string> // OPTIONAL
    blockOperation: <boolean> // REQUIRED
    strictParamsValidation: <boolean> // OPTIONAL
パラメーター 必須または省略可能 デフォルト値 説明

source

必須

context

スキーマがこの YAML リソースで指定されているか、Exchange の API コンテキストで指定されているか (接続モードのみ) を決定します。サポートされている値: inline​ または ​context​。ローカルモードでポリシーを設定する場合、​inline​ を指定する必要があります。

spec

必須

""

実際のインライン仕様。ローカルモードでポリシーを設定する場合、これを指定する必要があります。

apiBasePath

省略可能

"/"

API のベースパス。ローカルモードでポリシーを設定する場合、この値を指定する必要があります。

blockOperation

必須

true

true​ の場合、このポリシーでは無効な仕様検証がブロックされます。​false​ の場合、このポリシーではエラーのみが記録されます。

strictParamsValidation

省略可能

false

仕様で定義されていないクエリパラメーターを検証するかどうかを決定します。

リソースの設定例

- policyRef:
    name: spec-validation-flex
  config:
    source: "inline"
    apiBasePath: "/"
    blockOperation: true
    strictParamsValidation: false
    spec: |
      {
        "openapi": "3.0.2",
        ...
      }

Flex Gateway の接続モード

UI からスキーマ検証ポリシーを API に適用するときに、以下のパラメーターが表示されます。

項目 説明 デフォルト 必須

Block request (要求をブロック)

API 仕様に準拠していない受信要求をブロックには、選択します。ブロックしないように選択すると、要求のみが記録されます。無効な要求をブロックするように選択すると、要求が無効な場合に 400 の状況が返されます。

Block enabled (ブロックが有効)

いいえ

Strict query parameters validation (クエリパラメーターの厳格な検証)

API 仕様で定義されていないクエリパラメーターからの API コールを制限します。

いいえ

いいえ

Advanced Options (詳細オプション)

Policy version (ポリシーバージョン)

適用されるポリシーのバージョン

Latest (最新)

はい

Rule of application (適用のルール)

ポリシーを適用するランタイムを設定します。現在、スキーマ検証は Flex Gateway でのみ使用できます。ポリシーをすべてのランタイムに適用しても、ポリシーは Flex Gateway API にのみ適用されます。

All runtimes (すべてのランタイム)