🐺

AWS Waf の IPSet を Terraform で管理する

2024/07/03に公開

はじめに

IPSetをTerraformで管理するようにした話

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_ip_set

※今回はCLOUDFRONTの設定を更新しています。

terraform の基本設定

そもそも入っていない場合は、公式のinstall手順に従い設定を行う

https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli

AWS のアクセスキー確認

設定を行う際にAWSのアクセスキーを設定する必要があるため設定をする
その時に下記コマンドでシュッとみれる

aws configure get default.aws_access_key_id

aws configure get default.aws_secret_access_key

IPSet を import する

今回はすでにIPSetを作成しているのでterraformコマンドでimportする

terraform import aws_wafv2_ip_set.hoge-IP-set ID/NAME/SCOPE
  • ID: すでに作成されているIPSetのIDを入力する
  • NAME: IPSetの名前を入力する
  • SCOPR: SCOPRが何かを入力する(今回はCLOUDFRONT)

実装する場合は下記

import {
  to = aws_wafv2_ip_set.example
  id = "ID/NAME/CLOUDFRONT"
}

IPSetの取得周りは下記にまとめていますのでよければ参考までに

https://zenn.dev/tetoteto/articles/419a728554b6c3

リソースの設定

実装は公式のドキュメントを参考に値を変える

provider "aws" {
  region = "us-east-1"
}

resource "aws_wafv2_ip_set" "hoge-IP-set" {
  name               = "hoge-IP-set"
  description        = "hoge waf ip set"
  scope              = "CLOUDFRONT"
  ip_address_version = "IPV4"
  addresses = [
    "198.51.100.0/32" // IP
  ]

  tags = {
    Name        = "hoge"
  }
}

実行計画の確認

実装を適応する前に実行計画の確認を行う

terraform plan

今回は更新を行うので差分が出てくる

resource "aws_wafv2_ip_set" "hoge-IP-set" {
    + description        = "hgoe waf ip set"
    id                 = "xxxxx-xxxx-xxxx-xxxxxx"
    name               = "hoge-IP-set"
    ~ tags               = {
        + "Name"        = "hoge"
    }
    ~ tags_all           = {
        + "Name"        = "hoge"
    }
}

変更を適応する

最後に適応を行う

terraform apply

上記手順でIPSetの反映が完了

最後に

  • 既に登録している場合は一度pullする必要があること
  • CLOUDFRONTに対して設定を行う場合はproviderを設定すること

これらを忘れなければサクッと管理できる

Discussion