TOPTerraform + AWSでLaravel環境を構築する② - セキュリティグループ編

2026/06/17

Terraform + AWSでLaravel環境を構築する② - セキュリティグループ編

環境構築AWS CLIAWSTerraform
広告準備中

Terraformを使用してAWSのセキュリティグループを追加します。

前回の記事はこちら

Webサーバー用(EC2)のセキュリティグループを追加

main.tfに以下のコードを追加します。

SSHのIP制限は自身のIPのみを許可するほうがよいですが、今回は練習としてすべて許可しています。

# EC2用のセキュリティグループの作成
resource "aws_security_group" "web" {
  name   = "practice-web-sg"
  vpc_id = aws_vpc.example.id
 
  # HTTP
  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
 
  # HTTPS
  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
 
  # SSH (自分のIPのみに制限推奨)
  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"] # セキュリティ上の理由から、実際には自分のIPアドレスに制限することを推奨
  }
 
  # 全アウトバウンド許可
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
 
  tags = {
    Name = "practice-web-sg"
  }
}

データベース用(RDS)のセキュリティグループを追加

同じように追加します。

# RDS用のセキュリティグループの作成
resource "aws_security_group" "db" {
  name   = "practice-db-sg"
  vpc_id = aws_vpc.example.id
 
  # MySQL (EC2からのみ許可)
  ingress {
    from_port       = 3306
    to_port         = 3306
    protocol        = "tcp"
    security_groups = [aws_security_group.web.id]
  }
 
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
 
  tags = {
    Name = "practice-db-sg"
  }
}

実行する

今まで通りコマンドを実行してAWSに反映します。

# フォーマット
terraform fmt
 
# 実行計画の確認
terraform plan
 
# 実行
terraform apply

実行出来たらコンソールのVPCからセキュリティグループのページへ移動して、追加されているか確認してみてください。

まとめ

今回はTerraformを使ってセキュリティグループを作成してみました。

次回はEC2インスタンスの作成を行います。