説明
AWS WAF の DefaultAction は、先行する規則で最終的な許可・ブロックが決まらなかったリクエストに適用されます。公開サービスをブロックリストで保護する場合は、既定の許可が適切なこともあります。承認済みリクエストだけを受け付ける許可リスト方式では、明示的な許可規則と既定のブロックが必要です。
想定される影響
許可リストを意図していても、既定の許可を使うとリスト外のリクエストがアプリケーションに届く可能性があります。一方、必要な許可規則なしで既定のブロックに切り替えると、正規のリクエストを遮断するおそれがあります。
対処方法
先にアクセス方針を決め、既定のアクションと規則の優先順位をまとめて確認してください。許可リストが必要なサービスでは、承認済みリクエストを許可する規則を設定し、それ以外をブロックします。許可対象と不要なリクエストを両方試験してください。
例
既存 IP セットのアドレスだけを許可する REGIONAL ウェブ ACL の例です。同じリージョンの REGIONAL IP セットの ARN を TrustedIPSetArn に指定し、ウェブ ACL と保護対象の関連付けは別途設定します。変更前は IP セット外のリクエストも許可されますが、変更後はブロックされます。現在の AWS::WAFv2::WebACL 形式を使用しています。
変更前
yaml
Parameters:
TrustedIPSetArn:
Type: String
Resources:
MyWebACL:
Type: AWS::WAFv2::WebACL
Properties:
Name: WebACL
Scope: REGIONAL
DefaultAction:
Allow: {}
VisibilityConfig:
SampledRequestsEnabled: true
CloudWatchMetricsEnabled: true
MetricName: MyWebACL
Rules:
- Name: MyRule
Priority: 1
Action:
Allow: {}
Statement:
IPSetReferenceStatement:
Arn: !Ref TrustedIPSetArn
VisibilityConfig:
SampledRequestsEnabled: true
CloudWatchMetricsEnabled: true
MetricName: MyRule
変更後
yaml
Parameters:
TrustedIPSetArn:
Type: String
Resources:
MyWebACL:
Type: AWS::WAFv2::WebACL
Properties:
Name: WebACL
Scope: REGIONAL
DefaultAction:
Block: {}
VisibilityConfig:
SampledRequestsEnabled: true
CloudWatchMetricsEnabled: true
MetricName: MyWebACL
Rules:
- Name: MyRule
Priority: 1
Action:
Allow: {}
Statement:
IPSetReferenceStatement:
Arn: !Ref TrustedIPSetArn
VisibilityConfig:
SampledRequestsEnabled: true
CloudWatchMetricsEnabled: true
MetricName: MyRule