validate - AWS CloudFormation Guard

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

validate

根據 AWS CloudFormation Guard 規則驗證資料,以判斷成功或失敗。

語法

cfn-guard validate --data <value> --output-format <value> --rules <value> --show-summary <value> --type <value>

參數

-a, --alphabetical

依字母順序驗證目錄中的檔案。

-h, --help

列印說明資訊。

-m, --last-modified

驗證目錄中依上次修改時間排序的檔案。

-P, --payload

透過 以下列 JSON 格式提供規則和資料stdin

{"rules":["<rules 1>", "<rules 2>", ...], "data":["<data 1>", "<data 2>", ...]}

例如:

{"data": ["{\"Resources\":{\"NewVolume\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":500,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2b\"}},\"NewVolume2\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":50,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2c\"}}},\"Parameters\":{\"InstanceName\":\"TestInstance\"}}","{\"Resources\":{\"NewVolume\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":500,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2b\"}},\"NewVolume2\":{\"Type\":\"AWS::EC2::Volume\",\"Properties\":{\"Size\":50,\"Encrypted\":false,\"AvailabilityZone\":\"us-west-2c\"}}},\"Parameters\":{\"InstanceName\":\"TestInstance\"}}"], "rules" : [ "Parameters.InstanceName == \"TestInstance\"","Parameters.InstanceName == \"TestInstance\"" ]}

對於「規則」,指定規則檔案的字串版本清單。針對「資料」,指定資料檔案的字串版本清單。

--payload 指定 --rules--data無法指定 時。

-p, --print-json

以 JSON 格式列印輸出。

-s, --show-clause-failures

顯示子句失敗,包括摘要。

-V, --version

列印版本資訊。

-v, --verbose

增加輸出詳細程度。可以多次指定。

-z, --structured

列印結構化且有效的 JSON/YAML 清單。此引數與下列引數衝突:verbose, print-json, show-summary: all/fail/pass/skip, output-format: single-line-summary

選項

-d--data(字串)

提供 JSON 或 YAML 中的資料檔案或資料檔案目錄。重複使用此選項,支援傳遞多個值。

範例:--data template1.yaml --data ./data-dir1 --data template2.yaml

對於上述的目錄引數data-dir1,僅支援掃描具有下列副檔名的檔案:.yaml、.yml、.json、.jsn、.template

如果您指定 --payload旗標,請勿指定 --data選項。

-i--input-parameters(字串)

提供 JSON 或 YAML 中參數檔案的參數檔案或目錄,指定要與要用作合併內容的資料檔案搭配使用的任何其他參數。做為輸入傳遞的所有參數檔案都會合併,而此合併內容會再次與做為 引數傳遞的每個檔案合併data。因此,每個檔案都應該包含互斥屬性,而不會有任何重疊。重複使用此選項,支援傳遞多個值。

對於目錄引數,僅支援掃描具有下列副檔名的檔案:.yaml、.yml、.json、.jsn、.template

-o--output-format(字串)

指定輸出的格式。

預設single-line-summary

允許的值json | yaml | single-line-summary | junit | sarif

-r--rules(字串)

提供規則檔案或規則檔案的目錄。重複使用此選項,支援傳遞多個值。

範例:--rules rule1.guard --rules ./rules-dir1 --rules rule2.guard

對於上述等目錄引數rules-dir1,僅支援掃描具有下列副檔名的檔案:.guard、.ruleset

如果您指定 --payload旗標,請勿指定 --rules選項。

--show-summary (string)

控制是否需要顯示摘要資料表。--show-summary fail(預設) 或 --show-summary pass,fail(僅顯示已通過/失敗的規則) 或 --show-summary none(關閉) 或 --show-summary all(顯示通過、失敗或略過的所有規則)。

預設fail

允許的值none | all | pass | fail | skip

-t--type(字串)

提供輸入資料的格式。當您指定輸入資料類型時,Guard 會在輸出中顯示 CloudFormation 範本資源的邏輯名稱。根據預設,Guard 會顯示屬性路徑和值,例如 Property [/Resources/vol2/Properties/Encrypted

允許值CFNTemplate

範例

cfn-guard validate --data example.json --rules rules.guard

輸出

如果 Guard 成功驗證範本,validate命令會傳回結束狀態為 0($?在 bash 中為 )。如果 Guard 識別規則違規,validate命令會傳回失敗規則的狀態報告。

example.json Status = FAIL FAILED rules rules.guard/policy_effect_is_deny FAIL --- Evaluation of rules rules.guard against data example.json -- Property [/path/to/Effect] in data [example.json] is not compliant with [policy_effect_is_deny] because provided value ["Allow"] did not match expected value ["Deny"]. Error Message [ Policy statement "Effect" must be "Deny".]

另請參閱