AWS/Terraform / / 2023. 7. 12. 21:55

[AWS Terraform 기초]11. Security Group 생성

반응형

 

1. Terraform Docs 예시

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group

 

Terraform Registry

 

registry.terraform.io

 

 

예시:

 

 

인수:

 

 

2. Terraform 코드 작성

 

# 10_sg.tf
resource "aws_security_group" "pmh_sg" {
  name        = "pmh-sg"
  description = "Terraform Test Security Group"
  vpc_id      = aws_vpc.pmh_vpc.id

  ingress = [
    {
      description      = "ssh"
      from_port        = 22
      to_port          = 22
      protocol         = "tcp"
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    },
    {
      description      = "http"
      from_port        = 80
      to_port          = 80
      protocol         = "tcp"
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    },
    {
      description      = "mysql"
      from_port        = 3306
      to_port          = 3306
      protocol         = "tcp"
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    },
    {
      description      = "https"
      from_port        = 443
      to_port          = 443
      protocol         = "tcp"
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    },
    {
      description      = "ftp-data"
      from_port        = 60000
      to_port          = 60100
      protocol         = "tcp"
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    }
  ]

  egress = [
    {
      description      = "all"
      from_port        = 0
      to_port          = 0
      protocol         = -1
      cidr_blocks      = ["0.0.0.0/0"]
      ipv6_cidr_blocks = ["::/0"]
      prefix_list_ids  = null
      security_groups  = null
      self             = null
    }
  ]
  tags = {
    name = "pmh-sg"
  }
}



 

resource "aws_security_group" "pmh_sg"

pmh_sg 라는 이름의 aws_security_group 리소스를 정의

 

name = "pmh-sg" 

보안 그룹의 이름을 "pmh-sg"로 설정

 

description = "Terraform Test Security Group"

보안 그룹에 대한 설명을 "Terraform Test Security Group"으로 설정


vpc_id = aws_vpc.pmh_vpc.id

보안 그룹이 속할 VPC의 ID를 지정

(앞서 만들었던 VPC의 id)


ingress

인바운드(Ingress) 규칙을 정의

1. SSH 허용

2  FTP 데이터 포트 허용

3. HTTP/HTTPS 허용

4. MySQL 허용

 

이하 사용 안함(null)

1. prefix_list_ids: 프리픽스 리스트 ID를 지정

(프리픽스 리스트: 네트워크 트래픽을 제어하기 위해 사용되는 AWS의 보안 기능 중 하나)
2. security_groups: 다른 보안 그룹의 ID를 지정해서
해당 그룹에서 허용된 트래픽을 허용

3. self: 보안 그룹 자체에 대한 트래픽 허용 여부


egress

아웃바운드(Egress) 규칙을 정의

1. 모든 트래픽을 허용

 

tags = { Name = "pmh-sg" }

리소스에 태그 지정

(보안 그룹에 식별 가능한 이름 지정)

 

 

 

3. Terraform 분석 및 적용

 

terraform 파일이 있는 위치에서 아래 명령어 실행

 

# 변경 사항 검토 및 확인
terraform plan

# (대화형 승인 없이)변경 사용항 적용
terraform apply -auto-approve

 

4. 결과

 

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유