本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
标签匹配示例
本节提供标签匹配规则语句的匹配规范示例。
这些 JSON 列表是在控制台中创建的,方法是将规则添加到带有标签匹配规范的 Web ACL,然后编辑规则并切换到规则 JSON 编辑器. 您还可以通过 API 或命令行界面获取规则组或 Web ACL 的 JSON。
与本地标签匹配
以下 JSON 列表显示了在本地添加到 Web 请求中的标签的标签匹配语句,该标签与此规则相同。
Rule: { Name: "match_rule", Statement: { LabelMatchStatement: { Scope: "LABEL", Key: "header:encoding:utf8" } }, RuleLabels: [ ...generate_more_labels... ], Action: { Block: {} } }
如果您在帐户 111122223333 中使用此匹配语句,则在您为 Web ACL 定义的规则中testWebACL
,它将匹配以下标签。
awswaf:111122223333:webacl:testWebACL:header:encoding:utf8
awswaf:111122223333:webacl:testWebACL:testNS1:testNS2:header:encoding:utf8
它与以下标签不匹配,因为标签字符串不是完全匹配。
awswaf:111122223333:webacl:testWebACL:header:encoding2:utf8
它不匹配以下标签,因为上下文不相同,所以前缀不匹配。即使您添加了规则组,情况依然如此productionRules
到 Web ACLtestWebACL
,在其中定义规则。
awswaf:111122223333:rulegroup:productionRules:header:encoding:utf8
与其他上下文中的标签进行匹配
以下 JSON 列表显示了一个标签匹配规则,该规则与用户创建的规则组内的规则中的标签进行匹配。在 Web ACL 中运行但不属于指定规则组的所有规则的规范中必须使用前缀。此示例标签规范仅匹配精确的标签。
Rule: { Name: "match_rule", Statement: { LabelMatchStatement: { Scope: "LABEL", Key: "awswaf:111122223333:rulegroup:testRules:header:encoding:utf8" } }, RuleLabels: [ ...generate_more_labels... ], Action: { Block: {} } }
匹配托管规则组标签
这是与来自匹配规则以外的其他上下文的标签进行匹配的特殊情况。以下 JSON 列表显示了托管规则组标签的标签匹配语句。这只匹配标签匹配语句的键设置中指定的精确标签。
Rule: { Name: "match_rule", Statement: { LabelMatchStatement: { Scope: "LABEL", Key: "awswaf:managed:aws:managed-rule-set:header:encoding:utf8" } }, RuleLabels: [ ...generate_more_labels... ], Action: { Block: {} } }
与本地命名空间匹配
以下 JSON 列表显示了本地命名空间的标签匹配语句。
Rule: { Name: "match_rule", Statement: { LabelMatchStatement: { Scope: "NAMESPACE", Key: "header:encoding:" } }, Labels: [ ...generate_more_labels... ], Action: { Block: {} } }
与本地类似Label
匹配,如果您在帐户 111122223333 中使用此语句,则在您为 Web ACL 定义的规则中testWebACL
,它将匹配以下标签。
awswaf:111122223333:webacl:testWebACL:header:encoding:utf8
它不匹配以下标签,因为帐户不相同,所以前缀不匹配。
awswaf:444455556666:webacl:testWebACL:header:encoding:utf8
前缀也与托管规则组应用的任何标签不匹配,如下所示。
awswaf:managed:aws:managed-rule-set:header:encoding:utf8
匹配托管规则组命名空间
以下 JSON 列表显示了托管规则组命名空间的标签匹配语句。对于您拥有的规则组,您还需要提供前缀,以便与规则上下文之外的命名空间进行匹配。
Rule: { Name: "match_rule", Statement: { LabelMatchStatement: { Scope: "NAMESPACE", Key: "awswaf:managed:aws:managed-rule-set:header:" } }, RuleLabels: [ ...generate_more_labels... ], Action: { Block: {} } }
此规范与以下示例标签匹配。
awswaf:managed:aws:managed-rule-set:header:encoding:utf8
awswaf:managed:aws:managed-rule-set:header:encoding:unicode
它与以下标签不匹配。
awswaf:managed:aws:managed-rule-set:query:badstring