VPCのデフォルトセキュリティグループの無効化

デフォルトセキュリティグループとは

  • AWSではVPCを作成すると、デフォルトセキュリティグループが作成される
  • EC2インスタンス作成時などに、明示的にセキュリティグループを指定しなかった場合、該当リソースに自動的に割り当てられる
  • 一方で、このセキュリティグループのinboundルールは、デフォルトセキュリティグループ内の通信は全てのプロトコルで許可しており、意図せず通信できてしまったりする
  • なので、デフォルトセキュリティグループの利用は非推奨なわけだけど、削除ができないので、別途対応が必要

対応方法

  • 全部のルールを削除する (or 最低限inboundルールは全削除)

Terraformでの実装方法

結論: aws_default_security_groupリソースを利用する

  • リンク先に説明があるとおり、このリソースはちょっと特殊
    • このリソースがapplyされると、Terraformはこのセキュリティグループのingress/egressルールを全削除
    • その後、リソース内で指定されているルールを追加
When Terraform first adopts the default security group, it immediately removes all ingress and egress rules in the Security Group. It then creates any rules specified in the configuration. This way only the rules specified in the configuration are created.
  • ということは、全部のルールを削除するには、リソースだけterraformのマニフェストで定義してあげて、ルールを空にしておけばよい
  • こんな感じ
resource "aws_default_security_group" "default_sg_vpc0" {
  vpc_id = <vpc_id>
}