JSON 脅威保護ポリシー

ポリシー名

JSON 脅威保護

概要

API 要求内の悪意のある JSON から保護する

カテゴリ

セキュリティ

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

v1.4.0

返される状況コード

400 - Bad Request

概要

JSON 要求を処理するアプリケーションは、要素とネストレベルの異常な膨張により特徴付けられる攻撃を受けやすくなっています。攻撃者は再帰的な技法を使用してメモリリソースをコンシュームします。多くの場合、アプリケーションデータのサイズが劇的に変動することは、セキュリティの問題が発生していることを示します。JSON 脅威保護ポリシーは、このような侵入からアプリケーションを保護するのに役立ちます。

Anypoint Platform 環境への攻撃の検出が困難である場合は、JSON 脅威保護に保護レイヤーを追加したサービスアーキテクチャを設計する必要があります。

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

Flex Gateway のローカルモード

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

- policyRef:
    name: json-threat-protection-flex
  config:
    maxContainerDepth: <int> // OPTIONAL
    maxObjectEntryCount: <int> // OPTIONAL
    maxObjectEntryNameLength: <int> // OPTIONAL
    maxArrayElementCount: <int> // OPTIONAL
    maxStringValueLength: <int> // OPTIONAL
パラメーター 必須または省略可能 デフォルト値 説明

maxContainerDepth

省略可能

-1

最大ネスト深度を指定します。JSON では、コンテナ (オブジェクトおよび配列) を任意の順序で任意の深度までネストできます。-1 の指定は、項目値に制限がないことを意味します。

maxObjectEntryCount

省略可能

-1

オブジェクトのエントリ名の最大文字列長を指定します。-1 の指定は、項目値に制限がないことを意味します。

maxObjectEntryNameLength

省略可能

-1

オブジェクトの最大エントリ数を指定します。-1 の指定は、項目値に制限がないことを意味します。

maxArrayElementCount

省略可能

-1

配列の最大要素数を指定します。-1 の指定は、項目値に制限がないことを意味します。

maxStringValueLength

省略可能

-1

最大文字列値長を指定します。-1 の指定は、項目値に制限がないことを意味します。

リソースの設定例

- policyRef:
    name: json-threat-protection-flex
  config:
    maxContainerDepth: 10
    maxObjectEntryCount: 10000
    maxObjectEntryNameLength: 80
    maxArrayElementCount: 10000
    maxStringValueLength: 255

Flex Gateway の接続モード

UI から JSON 脅威保護ポリシーを API に適用するときに、以下のパラメーターが表示されます。

項目

説明

デフォルト

必須

Maximum Container Depth (最大コンテナ深度)

最大ネスト深度を指定します。JSON では、コンテナ (オブジェクトおよび配列) を任意の順序で任意の深度までネストできます。

-1

false

Maximum String Value Length (最大文字列値長)

文字列値の最大長を指定します。

-1

false

Maximum Object Entry Name Length (オブジェクトエントリ名の最大長)

オブジェクトのエントリ名の最大文字列長を指定します

-1

false

Maximum Object Entry Count (最大オブジェクトエントリ数)

オブジェクトの最大エントリ数を指定します。

-1

false

Maximum Array Element Count (最大配列要素数)

配列の最大要素数を指定します。

-1

false

-1 の値は、項目値に制限がないことを意味します。

ペイロードの例

ペイロードに次の JSON 例が含まれているとします。

{
   "Players":[
      {
         "Name":"Sachin",
         "Email":"sachin.tendulkar@example.com"
      },
      {
         "Name":"Suryakumar",
         "email":"Surya@example.com"
      },
      {   "Name":"Bhuvi",
          "email":"bhuvi@example.com"
      },
      {
         "Name":"Jonty",
         "Email":"jonty@example.com"
      }
   ]
}

ポリシーでは、次のようにパラメーター値の例が定義されます。

パラメーター Value (値) 説明

Maximum Container Depth (最大コンテナ深度)

3

Name​ エントリと ​Email​ エントリの深度

Maximum String Value Length (最大文字列値長)

28

sachin.tendulkar@example.com​ の長さ

Maximum Object Entry Name Length (オブジェクトエントリ名の最大長)

7

Players​ オブジェクトエントリ名の長さ

Maximum Object Entry Count (最大オブジェクトエントリ数)

2

各 ​Players​ オブジェクトのエントリ数

Maximum Array Element Count (最大配列要素数)

4

Players​ 配列の要素数