0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WAFCharm導入後にRate-based-ruleを追加しようとした

Posted at

これはなに?

WAFCharm導入後、AWS Shield Advancedを追加導入するためレートベースルールを同じWebACLに追加を試みた結果です。
元々の構成もTerraformで構築されており、多仕向へのデプロイを想定していたのでTerraformもしくはcliで実行したかったですが上手くいかなかったので備忘録です。

まず考えたこと

構築済の部分はTerrafomで構築されていたので、Terraformに定義されたWebACLリソースのRuleに追加する案。
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_web_acl#rules

問題1

構築後、WAFCharmから配信されるルールはTerraform管理外ではあるが差分として出てくるのでruleをignoreしていた。
なのでルールをさらに追加しようとするとWAFCharmから配信されるルールをimport or追記してapplyする必要がある。

問題2

今後WAFCharmからルールが配信される度に差分が出るし、tfファイルがごちゃつくのでナシで。

次に考えたこと

Terraformのlocal-execの機能を用いてaws cliを叩いてルールを追加する案。
https://www.terraform.io/docs/language/resources/provisioners/local-exec.html

問題1

まずはaws cliで叩いてどんなもんか試してみようとした。

アップデートに必要な--lock-tokenを取得するコマンド

aws wafv2 get-web-acl --name test-webacl --scope CLOUDFRONT --id xxxxxxxxxx-4332-b1e6-3fdae9dfc0d3 --region us-east-1 | jq -r '.LockToken'

・アップデートのコマンド

aws wafv2 update-web-acl --name test-webacl --scope CLOUDFRONT --id XXXXXXXXX-b1e6-3fdae9dfc0d3 --default-action=Block={} --rules file://ratebase-rule.json --visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=test-webacl --lock-token 1b53ce78-04a3-4a3b-xxxxxxxxxxx --region us-east-1

・ratebase-rule.json

ratebase-rule.json
[
  {
    "Name": "ratebase-rule",
    "Priority": 0,
    "Statement": {
      "RateBasedStatement": {
        "Limit": 10000,
        "AggregateKeyType": "FORWARDED_IP",
        "ForwardedIPConfig": {
          "HeaderName": "X-Forwarded-For",
          "FallbackBehavior": "MATCH"
        }
      }
    },
    "Action": {
      "Block": {}
    },
    "VisibilityConfig": {
      "SampledRequestsEnabled": true,
      "CloudWatchMetricsEnabled": true,
      "MetricName": "ratebase-rule"
    }
  }
]

しかし、update-web-aclなので--rulesで渡すルールのjsonはWAFCharmで配信されたルールも含めて実行してあげないと、jsonに定義されたルール以外が消えてしまうことに気が付く。。。

まとめ

・結果的にShieldAdvancedの導入は部分的にコードでデプロイし、ルールの追加はマネジメントコンソールから行いました。

・複数環境へWAFCharmのルールを入れる際はタイミングは少し考えた方が良い。

・WebACLのcliの意外と大変だったので誰かの役に立てば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?