0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraform 入門:AWSのセキュリティグループにインバウンドルールを一括作成する方法

Last updated at Posted at 2025-03-08

はじめに

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 のルールを確認できます。

実際のマネコン画面

Screenshot 2025-03-08 at 19.35.39.png

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を活用することで、 再現性の高いインフラ環境を構築 できます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?