설명
EC2 인스턴스에 기본 보안 그룹을 연결하면 같은 그룹을 사용하는 다른 리소스와 네트워크 규칙을 공유합니다. AWS가 처음 제공하는 기본 보안 그룹은 같은 그룹의 리소스에서 들어오는 트래픽과 모든 외부 발신 트래픽을 허용합니다. 기본 보안 그룹이라는 이유만으로 인터넷 인바운드가 열리는 것은 아닙니다.
여러 서비스가 그룹을 공유하면 규칙 변경의 영향을 파악하기 어려워질 수 있습니다. 역할에 맞는 전용 그룹과 필요한 통신만 허용하는 규칙으로 접근 범위를 명확하게 관리하세요.
잠재적 영향
- 서로 통신할 필요가 없는 인스턴스 사이에도 연결이 허용될 수 있습니다.
- 공유 규칙을 잘못 변경하면 여러 인스턴스의 접근 범위가 동시에 넓어질 수 있습니다.
해결 방법
- 기본 보안 그룹의 실제 인바운드와 아웃바운드 규칙을 확인하고 불필요한 허용을 제거하세요.
- 서비스 역할에 맞는 전용 보안 그룹을 연결하고 필요한 포트와 대상만 허용하세요. 전용 그룹이라는 이름만으로 안전해지는 것은 아닙니다.
- 인스턴스에 연결된 모든 보안 그룹을 함께 확인하고, 변경 후 필요한 서비스 연결이 유지되는지 점검하세요.
예시
기존 amazon.aws.ec2 모듈 형식의 발췌입니다. 현재 환경에서는 지원되는 모듈 형식을 사용하고 이미지, 키, 서브넷 등의 예시 값을 실제 값으로 바꿔야 합니다. 보안 그룹 자체의 규칙은 생략했습니다.
변경 전
yaml
- name: EC2 인스턴스 생성
amazon.aws.ec2:
key_name: mykey
instance_type: t2.micro
image: ami-123456
wait: yes
group: default
count: 1
vpc_subnet_id: subnet-29e63245
assign_public_ip: yes
인스턴스가 default 보안 그룹의 규칙을 공유합니다.
변경 후
yaml
- name: EC2 인스턴스 생성
amazon.aws.ec2:
key_name: mykey
instance_type: t2.micro
image: ami-123456
wait: yes
group: web-private-sg
count: 1
vpc_subnet_id: subnet-29e63245
assign_public_ip: yes
별도 보안 그룹을 선택하지만 그 그룹의 실제 규칙을 제한해야 합니다. 두 예시 모두 assign_public_ip: yes를 유지하므로 그룹 변경만으로 인스턴스가 사설 네트워크 전용이 되지는 않습니다.