创建Dashboard

本节我们使用CloudWatch Log和Metric创建有意义的Dashboard。

Bot Control仪表板

首先,AWS WAF在我们的Web ACL用户界面中提供了原生仪表板,可以轻松指出我们流量的高级指标。

image-20240623223449242

Bot control Dashboard显示了机器人与非机器人流量的百分比、机器人类别、机器人名称:

image-20240623223550003

Sample requests

如果我们启用了请求采样,我们可以查看AWS WAF检查并允许或阻止的请求样本。对于每个采样请求,我们可以查看有关该请求的详细数据,例如源IP地址和请求中包含的标头。我们还可以查看与该请求匹配的规则,以及规则操作设置:

image-20240623223828266

image-20240623223947200

CloudWatch Metric

对于区域性AWS WAF(如Application Load Balancer或API Gateway的AWS WAF),CloudWatch会在其运行的区域收集指标。对于使用AWS WAF保护的CloudFront,指标会在us-east-1收集。

在Cloudwatch metric中找到WAFV2。单击WAFV2框,查看所有可用指标:

image-20240623224159479

选择Rule,WebACL维度:

image-20240623224333223

在指标列表中,我们将看到所有Web ACL中所有规则的命中次数。我们还可以看到AllowedRequestsCaptchaRequestsChallengeRequestsRequestsWithValidChallengeTokenCountedRequestsBlockedRequestsRequestsWithValidCaptchaTokenCaptchasSolvedCaptchasAttempted的总计指标:

image-20240623224444148

通过这些指标,可以单独做一个Dashboard,并且通过指标的数学计算(如计算block百分比)能够添加其他指标

在Dashboard中使用 CloudWatch Logs Insights

Log Insights中的查询也可以集成到 CloudWatch 仪表板中。

导航到 CloudWatch 服务控制台并单击 Logs Insights。对于 Log Group,选择 aws-waf-logs-Bots-Workshop 日志组。

image-20240623224800317

我们将构建一个查询,用于查找由于被AWSManagedRulesBotControlRuleSet 阻止的前 10 个 IP 地址及其所在国家。将以下查询复制到查询窗口中:

fields @timestamp,httpRequest.clientIp 
| filter terminatingRuleId = "AWS-AWSManagedRulesBotControlRuleSet" 
| stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country 
| sort requestCount desc
| limit 10

单击 Run query。我们应该会看到 10 个 IP 地址及其所在国家,以及失败尝试次数:

image-20240623225158718

单击 Add to dashboard 按钮。选择要想添加的Dashboard,然后单击 Add to dashboard

image-20240623225227536

根据需要调整小部件的大小,然后单击 Save 保存仪表板布局。

我们已成功在 CloudWatch 仪表板上设置了小部件。我们可以继续尝试在仪表板中添加更多 Insight 查询或指标:

image-20240623225541119

阅读材料

请注意这3个易于配置的解决方案:

在实际环境中,可能会使用上述方法的混合,