1. Terraform Docs 예시
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group
예시:
인수:
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. 결과
'AWS > Terraform' 카테고리의 다른 글
[AWS Terraform 기초]13. Application Load Balancer(ALB) 생성 (0) | 2023.07.12 |
---|---|
[AWS Terraform 기초]12. EC2 인스턴스 생성 (0) | 2023.07.12 |
[AWS Terraform 기초]10. 라우팅 테이블과 서브넷 연결(private) (0) | 2023.07.11 |
[AWS Terraform 기초]9. NAT Gateway Route Table 생성 (0) | 2023.07.11 |
[AWS Terraform 기초]8. NAT Gateway 생성 (0) | 2023.07.11 |