AWS CloudFormation Guard ルールに対する入力データの検証 - AWS CloudFormation Guard

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

AWS CloudFormation Guard ルールに対する入力データの検証

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

前提条件

  • 入力データを検証する Guard ルールを記述します。詳細については、「ガードルールの記述」を参照してください。

  • ルールをテストして、意図したとおりに動作することを確認します。詳細については、「ガードルールのテスト」を参照してください。

validate コマンドの使用

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]

複数のデータファイルに対する複数のルールの検証

ルールを維持するために、ルールを複数のファイルに書き込み、必要に応じてルールを整理できます。その後、データファイルまたは複数のデータファイルに対して複数のルールファイルを検証できます。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.guardec2_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