aws cloudformation WAF地理位置条件

时间:2017-11-10 04:17:05

标签: amazon-web-services amazon-cloudformation web-application-firewall

尝试创建云形成模板,以使用地理位置条件配置WAF。无法找到合适的模板。任何指针都会受到赞赏。

http://docs.aws.amazon.com/waf/latest/developerguide/web-acl-geo-conditions.html

3 个答案:

答案 0 :(得分:2)

不幸的是,实际答案(截至撰写本文,2018年7月)是您不能直接在CloudFormation中创建地理匹配集。您可以通过CLI或SDK创建它们,然后在WAFRule的DataId属性的Predicates字段中引用它们。


通过CLI通过一个约束创建一个GeoMatchSet:

aws waf-regional get-change-token
aws waf-regional create-geo-match-set --name my-geo-set --change-token <token>
aws waf-regional get-change-token
aws waf-regional update-geo-match-set --change-token <new_token> --geo-match-set-id <id> --updates '[ { "Action": "INSERT", "GeoMatchConstraint": { "Type": "Country", "Value": "US" } } ]'

现在参考CloudFormation中的GeoMatchSet id:

    "WebAclGeoRule": {
      "Type": "AWS::WAFRegional::Rule",
      "Properties": {
        ...
        "Predicates": [
          {
            "DataId": "00000000-1111-2222-3333-123412341234" // id from create-geo-match-set
            "Negated": false,
            "Type": "GeoMatch"
          }
        ]
      }
    }

答案 1 :(得分:0)

我担心你的问题太模糊,不能征求有用的回应。 CloudFormation User Guide (pdf)定义了许多不同的WAF / CloudFront / R53资源,这些资源将执行各种形式的地理匹配/地理阻止功能。您提供的链接似乎是Web访问控制列表(Web ACL)的子集 - 请参阅第2540页的AWS :: WAF :: WebACL。

我建议你看看,如果你仍然卡住,实际上描述你想要实现的目标。

请注意您使用的术语:&#34;地理位置条件&#34;并不直接与我所知道的AWS能力相关。

最后,如果您指的是https://aws.amazon.com/about-aws/whats-new/2017/10/aws-waf-now-supports-geographic-match/,那么最新的Cloudformation用户指南似乎尚未更新,以反映这一点。

答案 2 :(得分:0)

没有文档,但是可以在无服务器/云形式下创建地理位置匹配。

在无服务器环境中使用以下内容:

Resources:
  Geos:
    Type: "AWS::WAFRegional::GeoMatchSet"
    Properties:
      Name: geo
      GeoMatchConstraints:
      - Type: "Country"
        Value: "IE"

cloudformation中的以下内容:

"Geos": {
  "Type": "AWS::WAFRegional::GeoMatchSet",
  "Properties": {
    "Name": "geo",
    "GeoMatchConstraints": [
      {
        "Type": "Country",
        "Value": "IE"
      }
    ]
  }
}

然后可以在创建规则时引用它:

(无服务器):

Resources:
  MyRule:
    Type: "AWS::WAFRegional::Rule"
    Properties:
      Name: waf
      Predicates:
      - DataId:
          Ref: "Geos"
        Negated: false
        Type: "GeoMatch"

(cloudformation):

"MyRule": {
  "Type": "AWS::WAFRegional::Rule",
  "Properties": {
    "Name": "waf",
    "Predicates": [
      {
        "DataId": {
          "Ref": "Geos"
        },
        "Negated": false,
        "Type": "GeoMatch"
      }
    ]
  }
}