はじめに
AWS環境をTerraformでコード化(Infrastructure as Code, IaC)することで、インフラ構成の管理や再現性を向上できます。
本記事では、Terraformを用いてセキュリティグループを作成し、指定されたインバウンドルールを適用する方法を解説します。
1. セキュリティグループとは?
AWSのセキュリティグループ(Security Group, SG)は、仮想ネットワーク内のEC2インスタンスや他のリソースの通信を制御するファイアウォール機能を提供します。
特にインバウンドルール(受信トラフィック)を適切に設定することで、不要なアクセスを制限し、セキュリティを向上できます。
2. Terraformでセキュリティグループを作成
main.tf の作成
以下のTerraformコードを作成し、main.tf
というファイルに保存します。
provider "aws" {
region = "us-east-1" # バージニア北部(us-east-1)に設定
}
resource "aws_security_group" "custom_sg" {
name = "custom-security-group"
description = "Security group with multiple inbound rules"
vpc_id = "vpc-xxxxxxxx" # 適切なVPC IDに変更
tags = {
Name = "CustomSecurityGroup"
}
}
resource "aws_security_group_rule" "inbound_rules" {
count = length(var.inbound_rules)
security_group_id = aws_security_group.custom_sg.id
type = "ingress"
from_port = var.inbound_rules[count.index]["port"]
to_port = var.inbound_rules[count.index]["port"]
protocol = var.inbound_rules[count.index]["protocol"]
cidr_blocks = [var.inbound_rules[count.index]["source"]]
description = var.inbound_rules[count.index]["description"]
}
variable "inbound_rules" {
default = [
{ port = 445, protocol = "tcp", source = "0.0.0.0/0", description = "SMB" },
{ port = 3268, protocol = "tcp", source = "0.0.0.0/0", description = "Custom TCP" },
{ port = 88, protocol = "udp", source = "0.0.0.0/0", description = "Custom UDP" },
{ port = 53, protocol = "udp", source = "0.0.0.0/0", description = "DNS" },
{ port = 3389, protocol = "tcp", source = "0.0.0.0/0", description = "RDP" },
{ port = 80, protocol = "tcp", source = "0.0.0.0/0", description = "HTTP" }
]
}
3. Terraformの実行手順
① Terraformの初期化
まず、Terraformを初期化するために、以下のコマンドを実行します。
terraform init
このコマンドは、必要なTerraformプロバイダ(AWS)をダウンロードし、環境をセットアップします。
② 変更内容を事前に確認
変更内容を適用する前に、以下のコマンドで確認できます。
terraform plan
Terraformが適用しようとしている変更点を事前に把握し、誤った設定を防ぐのに役立ちます。
③ Terraformの適用
設定を適用するために、以下のコマンドを実行します。
terraform apply
Terraformは、設定内容を適用する前に「変更プラン(plan)」を表示し、確認を求めます。
問題なければ「yes」を入力して適用してください。
④ 適用結果の確認
適用が成功すると、AWSのセキュリティグループに指定したインバウンドルールが追加されます。
AWSマネジメントコンソールの「EC2 > セキュリティグループ」から、作成された custom-security-group
のルールを確認できます。
実際のマネコン画面
4. 注意点
VPC IDの設定
vpc_id = "vpc-xxxxxxxx"
の部分は 実際のVPC IDに変更 してください。
VPC IDが不明な場合は、以下のAWS CLIコマンドで確認できます。
aws ec2 describe-vpcs --query 'Vpcs[*].VpcId' --output text
全てのIPアドレスからのアクセスを許可している(0.0.0.0/0)
0.0.0.0/0
はすべてのIPアドレスからのアクセスを許可する設定のため、 セキュリティリスクが高くなります。
適切な IP制限(例: 192.168.1.0/24) を設定することを推奨します。
まとめ
本記事では、Terraformを用いて AWSのセキュリティグループにインバウンドルールを適用 する方法を紹介しました。
本記事のポイント
- Terraformを使うことで インフラ構成をコードで管理 できる
-
aws_security_group_rule
を利用し、 複数のインバウンドルールを一括適用 -
terraform plan
で 適用前に変更内容を確認 可能 -
terraform apply
で 簡単にAWSリソースを作成
Terraformを活用することで、 再現性の高いインフラ環境を構築 できます。