web-dev-qa-db-ja.com

CloudFormationを介してAWSWAFをALBに追加する方法

CloudFormationを介してWAFをALBに関連付ける方法に関する例やドキュメントが見つかりません。おそらく、このニュース発表によって可能性があります https://aws.Amazon.com/about-aws/whats-new/2017/05/cloudformation-support-for-aws-waf-on-alb/ =しかし、その方法を示すものは何も見つかりませんでした。 ALBの代わりにCloudFrontを使用することは十分に文書化されていますが、(CloudFormationを介して)ALBを使用することに関する単一の例は見つかりませんでした。

Update:セットアップ全体を実行する完全な例は必要ありませんが、少なくとも、WAFがどのように関連付けられるかを示すスニペットが必要です。 ALBまたはその逆。リンクは何が欠けているかです。

11
Usman Mutawakil

これを解決するために、リリース履歴を参照して、WAFとALBをサポートするように更新されたCloudFormationリソースを見つけました http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/ReleaseHistory.html そこから、リンクコンポーネントはWAFとALBをマッピングするWebACLAssociationであると推測できました。ただし、これには、通常のWebACLの代わりにWAFRegionalを使用する必要もあります。これまでのところ、コード全体で:: WAFを:: WAFRegionalに変更することだけを意味しているようです。

WAFRegional(AWS :: WAFRegional :: WebACL): http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide /aws-resource-wafregional-webacl.html

"MyWebACL": {
  "Type": "AWS::WAFRegional::WebACL",
  "Properties": {
    "Name": "WebACL to with three rules",
    "DefaultAction": {
      "Type": "ALLOW"
    },
    "MetricName" : "MyWebACL",
    "Rules": [
      {
        "Action" : {
          "Type" : "BLOCK"
        },
        "Priority" : 1,
        "RuleId" : { "Ref" : "MyRule" }
      },
      {
        "Action" : {
          "Type" : "BLOCK"
        },
        "Priority" : 2,
        "RuleId" : { "Ref" : "BadReferersRule" }
      },
      {
        "Action" : {
          "Type" : "BLOCK"
        },
        "Priority" : 3,
        "RuleId" : { "Ref" : "SqlInjRule" }
      }
    ]
  }      
}

WebACLAssociation(AWS :: WAFRegional :: WebACLAssociation) http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/ aws-resource-wafregional-webaclassociation.html

    "MyWebACLAssociation": {
  "Type": "AWS::WAFRegional::WebACLAssociation",
  "Properties": {
    "ResourceArn": { "Ref": "MyLoadBalancer" },
    "WebACLId": { "Ref": "MyWebACL" }
  }
}
17
Usman Mutawakil

以下はYAML形式の例です。

   Resources:
    WafAcldev:
     DependsOn: Whitelist
     DependsOn: WafRule
     Type: AWS::WAF::WebACL
     Condition: CreateDEVResources
     Properties:
      DefaultAction:
        Type: "BLOCK"
      MetricName: test
      Name: test
      Rules:
        -
          Action:
            Type: "ALLOW"
          Priority: 1
          RuleId: !Ref WafRule

    WafRule:
        DependsOn: WhitelistIPdev
        Type: AWS::WAF::Rule
        Condition: CreateDEVResources
        Properties:
          MetricName: test
          Name: test
          Predicates:
            -
              DataId:
               Ref: "Whitelist"
              Negated: false
              Type: "IPMatch"

    MyWebACLAssociation:
          Type: "AWS::WAFRegional::WebACLAssociation"
          Properties:
            ResourceArn: arn:aws:elasticloadbalancing:us-east-2:123456789012:listener/app/my-load-balancer/1234567890123456/1234567890123456
            WebACLId:
              Ref: WafAcldev
    Whitelist:
        Type: AWS::WAF::IPSet
        Condition: CreateDEVResources
        Properties:
          Name: "IPSet for Whitelisted IP adresses"
          IPSetDescriptors:
            -
             Type: "IPV4"
             Value: "213.126.223.11/32"
            -
2
mahendra rathod