TestForge Blog
← 전체 포스트

AWS Security Group vs NACL - 언제 무엇을 써야 하나

AWS 네트워크 보안에서 자주 헷갈리는 Security Group과 NACL의 차이를 실무 관점에서 정리합니다. 상태 기반 필터링, 서브넷 단위 제어, 운영 패턴, 흔한 오해와 추천 설계까지 설명합니다.

TestForge Team ·

왜 이 둘이 자주 헷갈릴까

AWS를 처음 설계할 때 대부분 이런 질문을 합니다.

  • 보안그룹만 써도 되는가
  • NACL도 반드시 설정해야 하는가
  • 둘 다 인바운드/아웃바운드 규칙이 있는데 차이가 뭔가

결론부터 말하면, 실무에서는 보안그룹이 기본이고 NACL은 특수한 네트워크 차단 정책이 필요할 때 보조적으로 사용하는 경우가 많습니다.

핵심 차이 한 줄 요약

  • Security Group: 인스턴스/ENI 단위, 상태 저장형
  • NACL: 서브넷 단위, 상태 비저장형

이 차이 하나만 명확히 이해해도 운영 방식이 크게 단순해집니다.

Security Group의 특징

Security Group은 리소스 수준에서 붙는 가상 방화벽입니다.

주요 특징:

  • ENI 기준으로 동작
  • allow rule만 정의
  • stateful
  • 보안그룹 간 참조 가능

예:

App SG
- Inbound: 8080 from ALB SG
- Outbound: 5432 to DB SG

이런 구조는 운영하기 쉽고, IP 변경에도 강합니다.

NACL의 특징

NACL은 서브넷 경계에서 동작합니다.

주요 특징:

  • subnet 기준
  • allow / deny 모두 가능
  • stateless
  • rule number 순서대로 평가

예:

Inbound
100 allow 443 from 0.0.0.0/0
110 deny 203.0.113.0/24

Outbound
100 allow 1024-65535 to 0.0.0.0/0

stateless이기 때문에 응답 패킷을 위한 ephemeral port도 직접 열어줘야 합니다.

stateful vs stateless 차이가 중요한 이유

보안그룹은 요청이 허용되면 응답은 자동으로 허용됩니다.

하지만 NACL은 그렇지 않습니다.

예를 들어 외부에서 443으로 들어오는 요청을 허용해도, 응답 포트가 막혀 있으면 통신이 실패할 수 있습니다.

이 때문에 NACL은 실수하기 쉽고, 문제 발생 시 원인 추적도 더 어렵습니다.

실무에서는 어떻게 쓰는가

일반적인 추천 패턴:

  • 기본 접근 제어: Security Group
  • 특정 대역 차단, 서브넷 레벨 제어: NACL

예를 들어 이런 상황이면 NACL이 유용할 수 있습니다.

  • 특정 대역을 서브넷 차원에서 강제 차단
  • compliance 정책상 deny rule 필요
  • 퍼블릭 서브넷에 대한 보조 보호막이 필요

반대로 대부분의 애플리케이션 간 통신은 Security Group만으로도 충분합니다.

흔한 오해

1. NACL이 더 강력하니 무조건 같이 써야 한다

반드시 그렇지는 않습니다. 복잡도와 운영 비용이 더 커질 수 있습니다.

2. 보안그룹은 인스턴스만 보호한다

실제로는 ENI 기반이라 EC2뿐 아니라 ALB, RDS, Lambda ENI 등 여러 서비스에 영향을 줍니다.

3. NACL을 좁게 잠그면 더 안전하다

의도는 좋지만, ephemeral port 실수로 정상 트래픽까지 차단하는 일이 자주 생깁니다.

추천 운영 패턴

패턴 1. 대부분의 내부 통신은 Security Group만 사용

  • ALB SG
  • App SG
  • DB SG

이렇게 계층별로 나누는 편이 가장 관리가 쉽습니다.

패턴 2. 퍼블릭 서브넷만 제한적 NACL 적용

  • 명백히 차단할 IP 대역이 있음
  • 외부 노출 서브넷에 대한 추가 통제가 필요

이런 경우에만 선택적으로 둡니다.

문제 해결 시 어디부터 볼까

통신이 안 될 때 우선순위:

  1. Security Group
  2. 라우팅 테이블
  3. NACL

실무에서는 보안그룹이나 라우팅 문제인 경우가 더 많습니다. NACL부터 의심하면 오히려 디버깅이 느려질 수 있습니다.

마무리

AWS 네트워크 보안에서 핵심은 도구를 많이 쓰는 것이 아니라 경계를 단순하고 설명 가능하게 유지하는 것입니다.

대부분의 서비스는 Security Group 중심 설계로 충분하고, NACL은 명확한 필요가 있을 때만 추가하는 편이 좋습니다.