AWS는 '심층 방어(Defense in Depth)'라는 보안 원칙을 기반으로, 단일 방어선이 뚫리더라도 다음 방어선이 위협을 막을 수 있도록 다계층의 보안 체계를 제공합니다. VPC 환경에서 가장 기본적이면서도 강력한 두 가지 방화벽 계층이 바로 보안 그룹(Security Group)과 네트워크 ACL(Network Access Control List, NACL)입니다.
보안 그룹과 NACL의 가장 근본적인 차이점은 트래픽의 상태(State)를 추적하는지 여부입니다.
이 두 가지 보안 도구는 단순히 기능의 차이를 넘어, 보안을 설계하는 철학의 차이를 반영합니다. 보안 그룹은 기본적으로 '아무것도 허용하지 않는 상태(Deny All)'에서 시작하여 필요한 것만 '허용(Allow)'하는 규칙을 추가하는 긍정적 보안 모델(Positive Security Model)을 따릅니다. 이는 특정 역할을 수행하는 인스턴스에 필요한 최소한의 접근만 허용하여 공격 표면을 줄이는 데 초점을 맞춥니다. 즉, '신뢰'는 명시적으로 부여되어야 한다는 철학입니다.
반면, NACL은 '허용'과 '거부' 규칙을 모두 사용하여 네트워크 경계에서 트래픽을 명시적으로 통제합니다. 이는 서브넷이라는 더 넓은 경계에서 알려진 위협을 사전에 차단하고, 정책에 맞지 않는 트래픽을 필터링하는 경계 보안(Perimeter Security)의 역할을 수행합니다. 모든 트래픽을 '일단 불신'하고 규칙에 따라 엄격하게 판단하는 원칙을 따릅니다.
결론적으로, 보안 그룹은 인스턴스의 역할을 정의하고 그 역할에 맞는 접근을 제어하는 '역할 기반 접근 제어(Role-Based Access Control)'에 가깝고, NACL은 네트워크의 최전선에서 원치 않는 트래픽을 걸러내는 '필터'에 가깝습니다. 이 두 가지를 함께 사용하여 다계층 방어 체계를 구축하는 것이 바로 AWS가 권장하는 '심층 방어' 전략의 핵심입니다.
| 특징 | 보안 그룹 (Security Group) | 네트워크 ACL (Network ACL) |
|---|---|---|
| 적용 수준 | 인스턴스의 네트워크 인터페이스(ENI) 수준 | 서브넷 수준 |
| 상태 | Stateful (상태 저장): 응답 트래픽 자동 허용 | Stateless (상태 비저장): 응답 트래픽도 명시적 규칙 필요 |
| 허용 규칙 | Allow 규칙만 지원 (기본적으로 모두 거부) | Allow 및 Deny 규칙 모두 지원 |
| 규칙 평가 | 연결된 모든 그룹의 모든 규칙을 종합적으로 평가 | 규칙 번호가 낮은 순서대로 평가, 일치하는 첫 규칙 적용 |
| 기본 규칙 | 새 그룹: 인바운드 모두 거부, 아웃바운드 모두 허용 | 기본 NACL: 인/아웃바운드 모두 허용. 사용자 지정 NACL: 인/아웃바운드 모두 거부 |
| 비유 | 개인 경호원, 사무실 출입증 시스템 | 건물의 울타리, 층별 보안 게이트 |