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インスタンスの作成を行います。