はじめに
アウトアプットの練習で書いてみた
Resource typeはType: AWS::WAFv2::WebACL
結論
マネージドルールグループをRulesに追加した時Actionが二重に指定されているのが原因でエラーになり作成できなかった。
問題
CloudFormationでALBにWAFを追加してせキュリティを向上させようと思いマネージドルールを追加するtmplateを作ったけど作成できない。
実際のコードの一部
- Name: AWS-AWSManagedRulesCommonRuleSet
Priority: 2
Statement:
ManagedRuleGroupStatement:
VendorName: AWS
Name: AWSManagedRulesCommonRuleSet
ExcludedRules:
- Name: SizeRestrictions_BODY
- Name: CrossSiteScripting_BODY
Action:
Allow: {}
VisibilityConfig:
CloudWatchMetricsEnabled: true
MetricName: AWSManagedRulesCommonRuleSet
SampledRequestsEnabled: true
ACLのRulesに指定したマネージドルールです。
色々ためしてルールを変えたりするとstackが作成される時もあって成功する時と失敗する時の差がわからず苦労した。
解決方法
公式のマネージドルールグループでルールの詳細を確認すると一つのルールにActionが指定されていたのでこっちがActionを決める必要なないと思いActionを上書きしないようにした。
- Name: AWS-AWSManagedRulesCommonRuleSet
Priority: 2
Statement:
ManagedRuleGroupStatement:
VendorName: AWS
Name: AWSManagedRulesCommonRuleSet
ExcludedRules:
- Name: SizeRestrictions_BODY
- Name: CrossSiteScripting_BODY
OverrideAction: # ここで上書きするか変更できるが
None: {} # countとNoneしかサポートされてない
VisibilityConfig:
CloudWatchMetricsEnabled: true
MetricName: AWSManagedRulesCommonRuleSet
SampledRequestsEnabled: true
こうすると無事にstackが作成できたのでActionの二重指定が原因だったと分かった。
終わりに
いろんな記事とchatgptで調べていたけどchatgptは割と嘘をいうので最終確認は記事を参考にしていた。コードもOverrideAction:を使用している記事もあったが、追加したルールをAllowにしないと機能してないのではないかと勘違いしていて書き換えてしまったのが原因かなと思う。