AWS에서 VPC 네트워크 보안을 구성할 때 가장 많이 언급되는 보편적인 2가지가 있다. 바로 NACL(Network ACL)과 보안 그룹이다. 둘 다 인바운드/아웃바운드 트래픽을 제어하는 역할을 하지만, 적용 범위와 동작 방식이 완전히 다르다. 제대로 이해하고 있지 않으면 헷갈릴 수 있는 두 개념에 대해 정리해보고자 한다.

인스턴스 단위에서 작동하는 Stateful한 보안 그룹
- EC2 인스턴스에 직접 붙는 방화벽
- Stateful → 요청이 허용되면 응답은 자동 허용
- 허용(Allow) 규칙만 존재
- 동일 VPC 내 SG 간 참조가 가능 (예: SG-A → SG-B 허용)
- 기본 보안 계층으로 가장 많이 사용됨
| 항목 | 내용 |
|---|---|
| 적용 대상 | EC2 인스턴스 |
| 트래픽 방향 | Inbound / Outbound 모두 설정 가능 |
| 상태 추적 | ✅ 상태 저장 (Stateful) |
| 규칙 유형 | Allow만 가능 |
| 설정 단위 | 최대 60개 인바운드 + 60개 아웃바운드 규칙 |
| VPC당 보안그룹 수 | 최대 2,500개 |
서브넷 단위에서 작동하는 Stateless한 네트워크 ACL
- VPC 내 서브넷의 입출력을 제어하는 네트워크 레벨의 방화벽
- Stateless → 요청과 응답은 각각 별도 규칙 필요
- 허용(Allow) + 거부(Deny) 규칙 모두 존재
- 숫자 우선순위에 따라 순서대로 평가
- 기본 NACL은 모든 트래픽 허용, 새로 만든 건 모두 거부
| 항목 | 내용 |
|---|---|
| 적용 대상 | 서브넷 전체 |
| 트래픽 방향 | Inbound / Outbound 모두 설정 |
| 상태 추적 | ❌ 상태 비저장 (Stateless) |
| 규칙 유형 | Allow + Deny 모두 가능 |
| VPC당 NACL 수 | 최대 200개 |
| 규칙 수 | Inbound 20 + Outbound 20개 |
| 우선순위 | 번호순으로 평가 (낮을수록 우선) |
| 항목 | NACL | 보안 그룹 |
|---|---|---|
| 적용 대상 | 서브넷 | 인스턴스 |
| 보안 계층 | 2차 보안 | 1차 보안 |
| 상태 추적 | Stateless | Stateful |
| 허용/거부 | 둘 다 가능 | 허용만 가능 |
| 응답 처리 | 응답도 별도 허용 필요 | 응답은 자동 허용 |
| 규칙 평가 | 낮은 번호 우선 | 모든 규칙 평가 |
| 다중 적용 | 여러 서브넷에 적용 가능 (단, 하나만 적용) | 여러 SG를 인스턴스에 적용 가능 |