如何解决如何在具有Terraform的一个AWS WAF规则中使用多个谓词条件?
只需单击“ 添加条件 ”按钮,我就可以通过AWS控制台的一项AWS WAF Classic规则创建多个条件。
那么如何在一个带地形的waf规则中定义多个条件(谓词)?
我对此进行了测试:
resource "aws_wafregional_rule" "wafregional_ip_whitelist_rule" {
depends_on = ["aws_wafregional_ipset.wafregional_ip_whitelist","aws_wafregional_ipset.wafregional_vpn_ip_whitelist"]
name = "internal_ip_whitelist_rule"
metric_name = "WAFWhitelistRule"
predicate {
data_id = ["${aws_wafregional_ipset.wafregional_ip_whitelist.id}","${aws_wafregional_ipset.wafregional_vpn_ip_whitelist.id}"]
negated = false
type = "IPMatch"
}
}
但是predicate.data_id不是列表:
Error: aws_wafregional_rule.wafregional_ip_whitelist_rule: predicate.0.data_id must be a single value,not a list
解决方法
如果您希望单个WAF规则具有多个谓词,则必须多次指定An error occurred: ConvertCustomS31 - Failed to create resource. The event is not supported for notifications See details in CloudWatch Log: 2020/08/25/[$LATEST]f50070907c60405085c3b03ab0183514.
块:
predicate
这将创建一个基于指定的两个IP集的允许/拒绝规则。
,是的,下面是一个有两个条件的规则示例:
rule {
name = "AllowPath"
priority = 1
action {
allow {}
}
statement {
and_statement {
statement {
regex_pattern_set_reference_statement {
arn = aws_wafv2_regex_pattern_set.regex_pattern_set_path.arn
field_to_match {
uri_path {}
}
text_transformation {
priority = 2
type = "NONE"
}
}
}
statement {
regex_pattern_set_reference_statement {
arn = aws_wafv2_regex_pattern_set.regex_pattern_set_example.arn
field_to_match {
single_header {
name = "my_header"
}
}
text_transformation {
priority = 2
type = "NONE"
}
}
}
}
}
visibility_config {
cloudwatch_metrics_enabled = true
metric_name = "AllowPath"
sampled_requests_enabled = true
}
}
基本上,在这种情况下,如果具有特定的标头,则允许访问某些路径,但是为了简化示例,应遵循以下结构以具有多个条件:
rule {
name = "my_rule"
priority = 1
action {
allow {}
}
statement {
and_statement {
statement {
### STATEMENT 1
}
statement {
### STATEMENT 2
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。