AWS WAF ACL的规则是强制执行的,这意味着当请求与ACL相关的规则匹配时,将会执行与该规则关联的操作。
以下是一个示例,展示了如何创建和配置一个AWS WAF ACL,并向其添加规则:
import boto3
# 创建AWS WAF client
waf_client = boto3.client('waf')
# 创建一个新的ACL
response = waf_client.create_web_acl(
Name='MyACL',
DefaultAction={
'Type': 'ALLOW'
},
MetricName='MyACLMetric',
ChangeToken='CHANGE_TOKEN'
)
# 获取ACL的ACLId
acl_id = response['WebACL']['WebACLId']
# 添加规则到ACL中
response = waf_client.create_rule(
Name='Rule1',
MetricName='Rule1Metric',
ChangeToken='CHANGE_TOKEN',
Predicates=[
{
'Negated': False,
'Type': 'IPMatch',
'DataId': 'IPSetId',
'Value': '192.0.2.0/24'
}
]
)
# 获取规则的RuleId
rule_id = response['Rule']['RuleId']
# 将规则添加到ACL中
response = waf_client.create_web_acl(
WebACLId=acl_id,
ChangeToken='CHANGE_TOKEN',
Updates=[
{
'Action': 'INSERT',
'ActivatedRule': {
'Priority': 1,
'RuleId': rule_id,
'Action': {
'Type': 'BLOCK'
}
}
}
]
)
# 更新ACL
response = waf_client.update_web_acl(
WebACLId=acl_id,
ChangeToken='CHANGE_TOKEN',
Updates=[
{
'Action': 'INSERT',
'ActivatedRule': {
'Priority': 2,
'RuleId': rule_id,
'Action': {
'Type': 'COUNT'
}
}
}
]
)
在这个示例中,我们首先创建了一个新的ACL,并将其默认操作设置为允许。然后,我们创建了一个规则,并将其添加到ACL中。最后,我们更新ACL以添加一个额外的规则。这些规则将在请求与ACL相关联时执行,并根据规则的操作类型执行相应的操作。