| 구분 | 보안 그룹 (Security Group) | NACL (Network ACL) |
|---|---|---|
| 적용 대상 | EC2, ALB, RDS 같은 인스턴스 레벨 | 서브넷 레벨 (VPC 내부의 서브넷 전체에 적용) |
| 작동 방식 | Stateful (상태 저장됨) → 인바운드 허용하면 자동으로 아웃바운드도 허용됨 | Stateless (상태 저장 안됨) → 인바운드/아웃바운드를 각각 명시해야 함 |
| 설정 단위 | EC2 인스턴스에 개별적으로 적용 | 서브넷 단위로 모든 리소스에 일괄 적용 |
| 인바운드 & 아웃바운드 관계 | 인바운드 허용 → 해당 세션의 아웃바운드는 자동 허용됨 | 인바운드/아웃바운드를 각각 따로 설정해야 함 |
| 허용 vs 거부 | 허용(Allow)만 가능, 거부(Deny) 없음 | 허용(Allow) & 거부(Deny) 둘 다 가능 |
| 우선순위 | 여러 개 적용 가능, 가장 엄격한 규칙이 우선 | 규칙에 번호(번호가 낮을수록 우선 적용됨) |
| 사용 사례 | 특정 EC2, RDS 등에 세부적인 방화벽 역할 | 서브넷 단위에서 기본적인 트래픽 필터링 |

이 이미지는 Incoming Request(들어오는 요청)과 Outgoing Request(나가는 요청)에서 보안 그룹(Security Group, SG)과 네트워크 ACL(NACL)의 차이를 설명하고 있음.
NACL의 인바운드 규칙 적용
보안 그룹(SG)의 인바운드 규칙 확인
EC2 인스턴스에서 아웃바운드 응답 (자동 허용됨)
EC2에서 나가는 트래픽을 보안 그룹(SG)에서 필터링
NACL의 아웃바운드 규칙 확인
응답이 돌아올 때 NACL의 인바운드 규칙을 다시 통과해야 함
보안 그룹 = 건물 내부 보안 🚪
NACL = 아파트 단지 입구 보안 🏢
보안 그룹 (SG)
NACL
👉 한마디로: