(小ネタ)Terraform RegistryのModuleでdefault セキュリティグループのルール削除してみた

Terraform RegistryのAWS VPC Terraform moduleでdefault セキュリティグループのルール削除できるか調べてみました。
2021.10.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!コンサル部のinomaso(@inomasosan)です。

今回は、Terraform RegistryであるAWS VPC Terraform moduleでリソース作成時に、default セキュリティグループのルール削除できるか調べたのでまとめていきます。

結論

AWS VPC Terraform moduleで以下コードを追加することで、default セキュリティグループのルール削除できます。

manage_default_security_group  = true
default_security_group_ingress = []
default_security_group_egress  = []

環境

今回実行した環境は以下の通りです。

  • macOS BigSur 11.6
  • Terraform 1.0.7
  • AWSプロバイダー 3.63.0

Terraform RegistryのModuleって何

HashiCorp社によって検証されたModuleとなります。
Terraform Moduleの詳細については、以下ブログをご参照願います。

今回の検証にはAWS VPC Terraform moduleを使用しております。

上記モジュールは2021/10/31現在で頻繁にアップデートされております。
Release noteの内容を確認してみると、2021/10/13に発表のあったVPCフローログのアップデートが数日で対応されていました。

default セキュリティグループのルール削除ってしたほうがいいの?

AWS Security Hubに[EC2.2] VPC のデフォルトのセキュリティグループでは、インバウンドトラフィックとアウトバウンドトラフィックが禁止されますというチェック項目があります。

デフォルトのセキュリティグループは削除できないため、インバウンドとアウトバウンドのルールを削除すると、誤ってリソースに設定した場合でも事故を防ぐことができます。

Terraformコード全体

今回検証したAWS VPC Terraform moduleのコードとなります。

main.tf

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "3.10.0"

  name = "my-vpc"
  cidr                 = "10.0.0.0/16"
  enable_dns_hostnames = true
  enable_dns_support   = true

  azs             = ["ap-northeast-1a", "ap-northeast-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
  public_subnets  = ["10.0.11.0/24", "10.0.12.0/24"]

  enable_nat_gateway = true

  manage_default_security_group  = true
  default_security_group_ingress = []
  default_security_group_egress  = []

  tags = {
    Terraform = "true"
    Environment = "dev"
  }
}

Terraform RegistryのModule以外でも設定可能なの?

以下のブログにResource: aws_default_security_groupを使用した解説がありました。

まとめ

Terraform RegistryのModuleを初めて使用してみたのですが、少ないコードで簡単にVPCを作成することができました。
細かい機能にも対応していそうなので、自前でモジュールを作って管理するより圧倒的に楽だと思います。

この記事が、どなたかのお役に立てば幸いです。それでは!