---
schema_version: "1"
id: d7596dc0e432f6d15c404a87ae1a0bd7d7ca085d5c3a0a2238d11d4326e62050
title: スキーマ検証ポリシー
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/gateway/1.9/policies-included-schema-validation.md
canonical_url: https://docs.mulesoft.com/jp/gateway/1.9/policies-included-schema-validation
source_site: docs.mulesoft.com
content_type: documentation
content_hash: bf8c1697d9a819a1ce0d18721f0e9aec2e665318ed6eb7219538d6e6d8a1d654
description: MuleSoft Documentation Site
release: "1.9"
latest: false
---
# スキーマ検証ポリシー

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 75%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>ポリシー名</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">スキーマ検証ポリシー</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>概要</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">指定された API スキーマに対して受信トラフィックを検証する</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>カテゴリ</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">セキュリティ</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>使用可能な最小 Flex Gateway バージョン</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v1.4.0</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock"><strong>返される状況コード</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">400 - 要求プロパティが API 仕様に準拠していません。</p></td>
</tr>
</tbody>
</table>

## [](#概要)概要

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">スキーマ検証ポリシーでは REST API のみがサポートされていて、現在のところ OpenAPI 仕様 3.0 (OAS3) スキーマ検証のみがサポートされています。</td></tr></tbody></table>

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">スキーマ検証ポリシーでは ​<code>number</code>​ スキーマデータ型について最大 64 ビットがサポートされます。</td></tr></tbody></table>

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

REST API 仕様をアップロードする方法は多数ありますが、Exchange を使用する方法が最も簡単です。API 仕様を Exchange にアップロードするには、​[「Exchange アセットの作成」](https://docs.mulesoft.com/jp/exchange/to-create-an-asset)​を参照してください。

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

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

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

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

- 要求をブロックした後、400 エラー状況コードを返す。
- 要求を許可し、エラーを記録した後、要求の状況コードを返す。

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

- すべての必須プロパティが存在すること。
- 追加プロパティの有無。
- すべてのプロパティの型。
    
    たとえば、スキーマでプロパティが整数として指定されている場合、要求には文字列などの別の型ではなく整数が含まれている必要があります。
- プロパティの形式。
    
    たとえば、​`pattern`​ キーワードが指定されている場合、ポリシーではプロパティが正規表現として検証されます。

## [](#ポリシーのパラメーターの設定)ポリシーのパラメーターの設定

### [](#local-mode)Flex Gateway のローカルモード

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

\- policyRef:
    name: spec-validation-flex
  config:
    source: <string> // REQUIRED
    spec: <string> // REQUIRED
    apiBasePath: <string> // OPTIONAL
    blockOperation: <boolean> // REQUIRED
    strictParamsValidation: <boolean> // OPTIONAL

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">パラメーター</th>
<th class="tableblock halign-left valign-top">必須または省略可能</th>
<th class="tableblock halign-left valign-top">デフォルト値</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>source</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>context</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>スキーマがこの YAML リソースで指定されているか、Exchange の API コンテキストで指定されているか (接続モードのみ) を決定します。サポートされている値: <code>inline</code>​ または ​<code>context</code>​。ローカルモードでポリシーを設定する場合、​<code>inline</code>​ を指定する必要があります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>spec</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>""</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>実際のインライン仕様。ローカルモードでポリシーを設定する場合、これを指定する必要があります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>apiBasePath</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>"/"</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>API のベースパス。ローカルモードでポリシーを設定する場合、この値を指定する必要があります。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>blockOperation</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>必須</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>true</code>​ の場合、このポリシーでは無効な仕様検証がブロックされます。​<code>false</code>​ の場合、このポリシーではエラーのみが記録されます。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>strictParamsValidation</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>省略可能</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p><code>false</code></p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>仕様で定義されていないクエリパラメーターを検証するかどうかを決定します。</p>
</div></div></td>
</tr>
</tbody>
</table>

#### [](#リソースの設定例)リソースの設定例

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

### [](#connected-mode)管理 Flex Gateway および Flex Gateway の接続モード

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

<table class="tableblock frame-all grid-all fit-content spread">
<colgroup>
<col>
<col>
<col>
<col>
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">項目</th>
<th class="tableblock halign-left valign-top">説明</th>
<th class="tableblock halign-left valign-top">デフォルト</th>
<th class="tableblock halign-left valign-top">必須</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Block request (要求をブロック)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>API 仕様に準拠していない受信要求をブロックには、選択します。ブロックしないように選択すると、要求のみが記録されます。無効な要求をブロックするように選択すると、要求が無効な場合に 400 の状況が返されます。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Block enabled (ブロックが有効)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Strict query parameters validation (クエリパラメーターの厳格な検証)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>API 仕様で定義されていないクエリパラメーターからの API コールを制限します。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>いいえ</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Advanced Options (詳細オプション)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Policy version (ポリシーバージョン)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>適用されるポリシーのバージョン</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Latest (最新)</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>はい</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Rule of application (適用のルール)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>ポリシーを適用するランタイムを設定します。現在、スキーマ検証は Flex Gateway でのみ使用できます。ポリシーをすべてのランタイムに適用しても、ポリシーは Flex Gateway API にのみ適用されます。</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>All runtimes (すべてのランタイム)</p>
</div></div></td>
</tr>
</tbody>
</table>