我不想记录 Web ACL 分析的所有请求,但我想记录被阻止的请求。我该如何在 AWS WAF 中执行此操作?
解决方法
使用 AWS WAF 日志筛选功能,在评估请求时,根据规则操作或规则生成的标签筛选出日志条目。日志筛选可仅发布您选择的日志,从而帮助您节省 Amazon Kinesis Data Firehose 和存储成本。例如,您可以仅记录被阻止的请求。
要筛选 AWS WAF 日志,您必须先启用 AWS WAF 日志记录。有关启用 AWS WAF 日志记录的说明,请参阅如何启用 AWS WAF 日志记录并将日志发送到 Amazon CloudWatch、Amazon S3 或 Kinesis Data Firehose?
**注意:**使用 AWS 日志筛选无需额外付费。
启用 AWS WAF 日志筛选
- 打开 AWS WAF 控制台。
- 对于 Region(区域),选择您创建 Web ACL 的 AWS 区域。
**注意:**如果您的 Web ACL 是为 Amazon CloudFront 设置的,请选择 Global(全球)。
- 选择您的 Web ACL。
- 选择 Logging and Metrics(日志记录和指标)。
- 对于 Filter logs(筛选日志),选择 Add filter(添加筛选条件)。
- 添加一个或多个筛选条件。然后,选择条件是要 Match all of the filter conditions(匹配所有筛选条件)还是要 Match at least one of the filter conditions(匹配至少一个筛选条件)。
- 对于 Filter conditions(筛选条件),选择 Rule Action on request(对请求执行的规则操作)或 Request has label(请求有标签)。
对于 Rule Action(规则操作),根据规则执行的操作进行筛选,例如 Allow(允许)、Block(阻止)、Count(计数)或 CAPTCHA(验证码)。
对于 Request has label(请求有标签),在评估请求时,根据添加到 AWS WAF 的标签进行筛选。
- 对于 Filter behavior(筛选行为),选择 Keep in logs(保留在日志中)或 Drop from logs(从日志中删除)。
- 选择 Default logging(默认日志记录)行为。
- 选择 Save(保存)。
仅记录被阻止的请求
要仅记录 AWS WAF 阻止的请求,请选择基于 Rule Action(规则操作)和 Block(阻止)操作的筛选。
阻止操作是针对 AWS WAF 的终止操作。AWS WAF 日志筛选器会检查 AWS WAF 日志条目的终止规则操作。如果操作为 Block(阻止),则筛选日志条目会经过筛选选,然后添加到日志中。
记录来自规则组的计数请求
规则组中规则的设置方式决定日志是否要经过筛选:
- 当规则组中某个规则的操作设置为 Count(计数)时,匹配此规则的请求日志则不包含此规则的 Count(计数)操作。相反,AWS WAF 日志在 excludedRules 字段下显示此规则,筛选 AWS WAF 日志以执行计数操作时,不会选中这些字段。这意味着日志筛选不会针对 Count(计数)操作筛选这些请求。
- 系统将记录与规则组操作为 Override to Count(覆盖计数)的规则组中的规则匹配的请求。对于这些请求,AWS WAF 日志在 nonTerminatingMatchingRules 字段中包含 Count(计数)操作,在系统筛选 AWS WAF 日志中的 Count(计数)操作时会选中此字段。
**注意:**EXCLUDED_AS_COUNT 是用于日志筛选的有效操作类型。此选项可以使用 PutLoggingConfiguration API 进行配置。