설명
기본 보안 그룹은 별도 그룹을 지정하지 않은 리소스에 연결될 수 있어 열린 규칙의 영향이 여러 리소스로 번질 수 있습니다. 전체 주소를 허용하는 인바운드는 불필요한 접속을, 아웃바운드는 불필요한 외부 연결을 허용할 수 있습니다.
기본 그룹이라는 이유만으로 인터넷에서 도달할 수 있는 것은 아닙니다. 실제 연결 자원, 라우팅과 허용 포트를 함께 확인해야 합니다.
잠재적 영향
- 불필요한 수신 접속이나 외부 송신 경로가 열릴 수 있습니다.
- 한 그룹의 넓은 규칙이 여러 워크로드의 접근 범위에 영향을 줄 수 있습니다.
해결 방법
- 서비스별 전용 보안 그룹을 사용하고 기본 그룹의 불필요한 규칙을 제거하세요.
- 인바운드 소스와 아웃바운드 목적지를 각각 필요한 프로토콜·포트로 제한하세요. 응답 트래픽은 보안 그룹의 상태 추적에 따라 허용됩니다.
- aws_default_security_group은 처음 관리할 때 기존 규칙을 제거한 뒤 선언한 규칙을 적용하므로 영향을 먼저 검토하고 필요한 연결을 시험하세요.
예시
참조 VPC는 별도로 정의합니다. IPv4 범위와 문서용 IPv6 범위를 실제 승인된 범위로 바꾸세요. self 규칙과 CIDR 규칙은 함께 허용되므로 self가 CIDR 범위를 좁히는 것은 아닙니다.
변경 전
hcl
resource "aws_default_security_group" "default_sg" {
vpc_id = aws_vpc.mainvpc.id
ingress {
protocol = -1
self = true
from_port = 0
to_port = 0
cidr_blocks = ["0.0.0.0/0"]
}
}
모든 IPv4 소스와 같은 보안 그룹의 리소스에서 들어오는 모든 프로토콜을 허용합니다.
변경 후
hcl
resource "aws_default_security_group" "default_sg" {
vpc_id = aws_vpc.mainvpc.id
ingress {
protocol = -1
self = true
from_port = 0
to_port = 0
cidr_blocks = ["10.1.0.0/16"]
ipv6_cidr_blocks = ["2001:db8:1234::/64"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["10.1.0.0/16"]
ipv6_cidr_blocks = ["2001:db8:1234::/64"]
}
}
지정한 주소 범위와 같은 그룹의 리소스로 인바운드를 좁히고 지정 대역으로 아웃바운드를 제한합니다. 모든 프로토콜을 계속 허용하므로 필요한 서비스 포트만 남길 수 있는지도 검토하세요.