

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS CloudFormation Guard ルールに対する入力データの検証
<a name="validating-rules"></a>

コマンドを使用して AWS CloudFormation Guard `validate`、Guard ルールに対してデータを検証できます。コマンドのパラメータやオプションなどの詳細については`validate`、[「検証](cfn-guard-validate.md)」を参照してください。

## 前提条件
<a name="validating-rules-prerequisites"></a>
+ 入力データを検証する Guard ルールを記述します。詳細については、「[ガードルールの記述](writing-rules.md)」を参照してください。
+ ルールをテストして、意図したとおりに動作することを確認します。詳細については、「[ガードルールのテスト](testing-rules.md)」を参照してください。

## `validate` コマンドの使用
<a name="validating-rules-walkthrough"></a>

 AWS CloudFormation テンプレートなどの Guard ルールに対して入力データを検証するには、Guard `validate` コマンドを実行します。`--rules` パラメータには、ルールファイルの名前を指定します。`--data` パラメータには、入力データファイルの名前を指定します。

```
cfn-guard validate --rules rules.guard --data template.json
```

Guard がテンプレートを正常に検証した場合、`validate`コマンドは終了ステータス `0` (`$?`bash 単位) を返します。Guard がルール違反を特定すると、`validate`コマンドは失敗したルールのステータスレポートを返します。概要フラグ (`-s all`) を使用して、Guard が各ルールをどのように評価したかを示す詳細な評価ツリーを表示します。

```
template.json Status = FAIL
SKIP rules
rules.guard/aws_apigateway_deployment_checks    SKIP
rules.guard/aws_apigateway_stage_checks         SKIP
rules.guard/aws_dynamodb_table_checks           SKIP
PASS rules
rules.guard/aws_events_rule_checks              PASS
rules.guard/aws_iam_role_checks                 PASS
FAILED rules
rules.guard/aws_ec2_volume_checks               FAIL
rules.guard/mixed_types_checks                  FAIL
---
Evaluation of rules rules.guard against data template.json
--
Property [/Resources/vol2/Properties/Encrypted] in data [template.json] is not compliant with [rules.guard/aws_ec2_volume_checks] because provided value [false] did not match expected value [true]. Error Message []
Property traversed until [/Resources/vol2/Properties] in data [template.json] is not compliant with [rules.guard/aws_ec2_volume_checks] due to retrieval error. Error Message [Attempting to retrieve array index or key from map at path = /Resources/vol2/Properties , Type was not an array/object map, Remaining Query = Size]
Property [/Resources/vol2/Properties/Encrypted] in data [template.json] is not compliant with [rules.guard/mixed_types_checks] because provided value [false] did not match expected value [true]. Error Message []
--
Rule [rules.guard/aws_iam_role_checks] is compliant for data [template.json]
Rule [rules.guard/aws_events_rule_checks] is compliant for data [template.json]
--
Rule [rules.guard/aws_apigateway_deployment_checks] is not applicable for data [template.json]
Rule [rules.guard/aws_apigateway_stage_checks] is not applicable for data [template.json]
Rule [rules.guard/aws_dynamodb_table_checks] is not applicable for data [template.json]
```

## 複数のデータファイルに対する複数のルールの検証
<a name="validating-rules-overview"></a>

ルールを維持するために、ルールを複数のファイルに書き込み、必要に応じてルールを整理できます。次に、データファイルまたは複数のデータファイルに対して複数のルールファイルを検証できます。`validate` コマンドは、 `--data`および `--rules`オプションのファイルのディレクトリを取得できます。たとえば、 に 1 つ以上のデータファイル`/path/to/dataDirectory`が含まれ、 に 1 つ以上のルールファイル`/path/to/ruleDirectory`が含まれている場合、次のコマンドを実行できます。

```
cfn-guard validate --data /path/to/dataDirectory --rules /path/to/ruleDirectory
```

複数の CloudFormation テンプレートで定義されたさまざまなリソースに、保管時の暗号化を保証する適切なプロパティ割り当てがあるかどうかをチェックするルールを作成できます。検索とメンテナンスを容易にするために、、、および という個別のファイル内の各リソースの保管時の暗号化を`s3_bucket_encryption.guard``ec2_volume_encryption.guard`、パス を持つディレクトリ`rds_dbinstance_encrytion.guard`でチェックするルールを設定できます`~/GuardRules/encryption_at_rest`。検証する必要がある CloudFormation テンプレートは、パス を持つディレクトリにあります`~/CloudFormation/templates`。この場合、次のように `validate` コマンドを実行します。

```
cfn-guard validate --data ~/CloudFormation/templates --rules ~/GuardRules/encryption_at_rest
```