机器人控制示例:允许特定被屏蔽的机器人 - Amazon WAFAmazon Firewall Manager、和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

机器人控制示例:允许特定被屏蔽的机器人

机器人可能会被多条机器人控制功能规则阻止。对每条阻止规则执行以下步骤。

如果 Amazon WAF 机器人控制规则正在屏蔽您不想屏蔽的机器人,请执行以下操作:

  1. 通过查看日志,识别阻止机器人的机器人控制功能规则。将在日志中名称以 terminatingRule 开头的字段中指定阻止规则。有关 Web ACL 日志的更多信息,请参阅 记录 Amazon WAF Web ACL 流量。请注意规则添加到请求中的标签。

  2. 在您的 Web ACL 中,覆盖阻止规则的操作以计数。要在控制台中执行此操作,请编辑 Web ACL 中的规则组规则,然后为该规则选择 Count 规则操作覆盖。这样可以确保机器人不会被规则阻止,但规则仍会将其标签应用于匹配的请求。

  3. 在 Web ACL 中,在机器人控制功能托管规则组后添加标签匹配规则。将规则配置为与被覆盖的规则的标签相匹配,并阻止除您不想阻止的机器人之外的所有匹配请求。

    现在,您的 Web ACL 已配置完毕,因此您要允许的机器人不再被您通过日志识别的阻止规则所阻止。

再次检查流量和您的日志,确保机器人被允许通过。如果不是,请再次执行上述步骤。

例如,假设您需要阻止除 pingdom 以外的所有监控机器人。在这种情况下,您可以将 CategoryMonitoring 规则覆盖为计数,然后编写一条规则来阻止除带有机器人名称标签 pingdom 的机器人之外的所有监控机器人。

以下规则使用机器人控制功能托管规则组,但会将 CategoryMonitoring 规则操作覆盖为计数。类别监控规则像往常一样将其标签应用于匹配的请求,但仅对它们进行计数,而不是执行通常的阻止操作。

{ "Name": "AWS-AWSBotControl-Example", "Priority": 5, "Statement": { "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesBotControlRuleSet", "ManagedRuleGroupConfigs": [ { "AWSManagedRulesBotControlRuleSet": { "InspectionLevel": "COMMON" } } ], "RuleActionOverrides": [ { "ActionToUse": { "Count": {} }, "Name": "CategoryMonitoring" } ], "ExcludedRules": [] } }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "AWS-AWSBotControl-Example" } }

以下规则与前面的 CategoryMonitoring 规则添加到匹配的 Web 请求中的类别监控标签相匹配。在类别监控请求中,该规则会阻止所有请求,除带有机器人名称 pingdom 标签的请求外。

以下规则必须在 Web ACL 处理顺序中前面的机器人控制功能托管规则组之后运行。

{ "Name": "match_rule", "Priority": 10, "Statement": { "AndStatement": { "Statements": [ { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring" } }, { "NotStatement": { "Statement": { "LabelMatchStatement": { "Scope": "LABEL", "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom" } } } } ] } }, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "match_rule" } }