【Terraform×AWS】セキュリティグループのルールで”すべて”を指定する記述


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Terraformを利用してセキュリティグループを作成するときに、プロトコルやポート、ソースを指定しますよね。

 

ソースは絞って、プロトコルやポートは"すべて"を許可する場合の記述はどう書けばいいでしょうか。

 

公式リファレンスを見ても説明がわかりにくかったので、セキュリティグループのルールで"すべて"を指定する記述を紹介します。

 

 

☆☆☆☆☆☆☆☆☆↓Terraformを始めてみたい方はこちらをチェック↓☆☆☆☆☆☆☆☆☆☆
 
https://cloud5.jp/saitou-terraform-start/
 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

 

SGルールで"すべて"を指定する記述

■Terraformで作成するSGルール

今回作成するセキュリティグループルールの詳細は以下の通りです。

 

ルール プロトコル ポート ソース
インバウンドルール1 すべて すべて MyIPアドレス
インバウンドルール2 すべて すべて VPC CIDRブロック
アウトバウンドルール すべて すべて 0.0.0.0/0

 

 

■TerraformのSGルールの記述

記述を紹介する前に、前提条件を確認ください。

 

【前提】
 

  • tfvarsでMyIPアドレス(自身の環境のアドレス)を定義済み
  • VPC作成の記述で"cidr_block"を定義済み

 

【記述ポイント】
 

  • プロトコルを"すべて"にしたい場合は、"-1"と記述します。
  • ポートを"すべて"にしたい場合は、"from_port"と"to_port"の値を両方とも"0"と記述します。

 

以下がTerraformのセキュリティグループ記述例です。

 

# ---------------------------
# Security Group
# ---------------------------
resource "aws_security_group" "sg1" {
  name        = "test-sg"
  description = "test sg"
  vpc_id      = aws_vpc.vpc.id

  ingress {
    description      = "All traffic from myip"
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks       = ["${var.myip}"]
  }

  ingress {
    description      = "All traffic from vpc"
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks       = [aws_vpc.vpc.cidr_block]
  }

  egress {
    from_port        = 0
    to_port          = 0
    protocol         = "-1"
    cidr_blocks      = ["0.0.0.0/0"]
  }

  tags = {
    Name = "test-sg"
  }
}

 

 

■検証

さきほど示した記述をAWSにapplyしてみますと、

 

↓インバウンドルール

 

tf-security-groupsインバウンドルール

 

↓アウトバウンドルール

 

tf-security-groupsアウトバウンドルール

 

 

両ルールとも最初に示したセキュリティグループルールの詳細どおりに、作成されてるのが確認できます。

 

今回は以上です。

 

 

まとめ:セキュリティグループのルールで"すべて"を指定する記述

Terraformの公式リファレンスを読んでもわからないことが多々あります。指定できる引数は書かれているのですが、引数の値に関しては説明が無い場合があるんですよね。

 

TerrraformでAWSクラウド環境を構築する際に、また詰まったらブログで発信していきます。

 

 

☆☆☆☆☆☆☆☆☆↓Terraformを始めてみたい方はこちらをチェック↓☆☆☆☆☆☆☆☆☆☆
 
https://cloud5.jp/saitou-terraform-start/
 
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

 

 

参考リンク:Terraform-AWSドキュメント-リソース: aws_security_group
 

 

↓ほかの協栄情報メンバーも自動化に関する記事を公開しています。ぜひ参考にしてみてください。

 

■Terraformの概要と使用方法(higa)
https://cloud5.jp/terraform_summary/

 

■AWS CodePipeline を利用してS3の静的ウェブサイトの更新を自動化する(tatsuoka)
https://cloud5.jp/tatsuoka-handson-beginner-codepipeline/

 

■AWS上にopenstackを構築(liuwanying)
https://cloud5.jp/openstack-install/

 

■Ansibleを利用してwindowsOSのインスタンスを操作する方法(umemoto)
https://cloud5.jp/control-windows-fromansible/

 

 

Last modified: 2023-07-29

Author