AWS

AWS Network ACL vs Security Group

Somaz 2024. 11. 16. 21:02
728x90
반응형

Overview

AWS에서 보안 그룹(Security Group)과 네트워크 ACL(Network ACL)은 VPC(Virtual Private Cloud) 내 리소스의 네트워크 트래픽을 제어하는 핵심 보안 도구다.

  • Security Group은 인스턴스 단위로 작동하는 상태 저장형(Stateful) 방화벽이고,
  • Network ACL은 서브넷 단위로 작동하는 비상태형(Stateless) 방화벽이다.

 

두 보안 메커니즘은 기능, 적용 대상, 처리 방식 등에서 서로 다르기 때문에, 정확한 개념을 이해하고 상황에 맞게 조합하여 사용하는 전략이 중요하다.

 

 

이 글에서는 두 보안 도구의 차이점을 표로 비교하고, 제한 사항 및 실무 활용 팁까지 함께 정리한다.

 

 

 

 

 

 

📅 관련 글

2022.02.13 - [AWS] - AWS IAM (Identity and Access Management) 개요 및 설정 방법

2022.02.07 - [AWS] - AWS EC2 인스턴스 생성

2022.02.13 - [AWS] - AWS S3 (Simple Storage Service) 개요 및 활용 방법

2023.03.30 - [AWS] - AWS Secrets Manager란?(OAuth, SSO)

2023.03.29 - [AWS] - AWS CLI 정리

2023.03.28 - [AWS] - AWS IAM이란?

2023.03.28 - [AWS] - AWS S3 권한이란?

2023.03.28 - [AWS] - AWS S3란?(개념, 속성)

2023.03.30 - [AWS] - AWS Cloudfront란? / Canary 및 Blue-Green 배포

2023.04.03 - [AWS] - AWS VPC란?

2023.05.26 - [AWS] - AWS IRSA(IAM Roles for Service Accounts)란?

2024.11.07 - [AWS] - AWS Ingress Annotations 정리

2024.11.04 - [AWS] - AWS Assume Role이란?

2024.11.16 - [AWS] - AWS Network ACL vs Security Group

2024.11.21 - [AWS] - ALB access Log 활성화 → S3 권한 설정 및 로그 저장

2024.11.24 - [AWS] - EKS Pod Identity Addon

2024.11.27 - [AWS] - AWS DynamoDB란?

2025.01.03 - [AWS] - AWS DynamoDB Local 설치

 

 

 

 

 


 

 

 

 

AWS Network ACL vs Security Group

항목 Security Group (Stateful) Network ACL (Stateless)
기준 단위 EC2 인스턴스(ENI) 기준 서브넷 기준
방화벽 유형 상태 저장형 (Stateful) 비상태형 (Stateless)
허용/거부 허용만 가능 허용 및 거부 가능
응답 처리 인바운드 허용 시, 자동으로 아웃바운드 응답 허용 인바운드/아웃바운드 각각 명시 필요
평가 순서 모든 규칙 평가 후 허용/거부 결정 규칙 번호 순서로 평가, 첫 일치 룰 적용
적용 범위 명시적으로 지정한 인스턴스에만 적용 서브넷 전체에 자동 적용
기본 동작 기본 차단 (인바운드), 기본 허용 (아웃바운드) 기본 전면 차단
상호 참조 가능 여부 다른 SG 참조 가능 (보안 그룹 간 허용) SG 참조 불가
로깅 VPC Flow Logs 필요 VPC Flow Logs + NACL 로그(선택적 활성화) 가능

 

 

 

 

제한 사항

  • Network ACL
    • ACL 개수 제한: VPC당 최대 200개
    • 규칙 수 제한: 인바운드 20개, 아웃바운드 20개 (기본), 최대 40개까지 확장 가능
    • 성능 영향: 규칙 수가 많아지면 평가 비용 증가 → 성능 저하 가능성 있음

 

 

  • Security Group
    • SG 개수 제한: VPC당 최대 2,500개
    • 규칙 수 제한: SG당 인바운드 60개 / 아웃바운드 60개
    • ENI당 적용 가능한 SG 수: 최대 5개

 

 

 

 

 

 

 

실무에서 자주 묻는 질문 (FAQ)

 

Q1. 둘 중 하나만 써도 되나요?

→ 대부분의 AWS 환경에서는 Security Group만 사용해도 충분하다.
다만 서브넷 레벨에서 트래픽을 선제적으로 제한하거나 특정 규칙 차단이 필요한 경우, NACL을 병행한다.

 

 

 

Q2. NACL이 먼저 적용되나요, SG가 먼저 적용되나요?

둘 다 적용된다. 먼저 NACL이 서브넷 레벨에서 적용되고, 그 다음 인스턴스에 적용된 Security Group이 적용된다.

 

 

 

Q3. 로그로 추적할 수 있나요?

→ NACL 로그는 최근에 추가된 기능이며, VPC Flow Logs를 함께 활성화하면 양방향 트래픽 흐름 분석이 가능하다.

 

 

로그 추적 전략 및 실무 팁 요약

  • VPC Flow Logs: Subnet, ENI 단위로 활성화 가능 (CloudWatch Logs에 전송)
  • NACL 로그: 최근 활성화 가능 (CloudTrail 연계 필요)
  • 실무 팁:
    • Flow Logs + Athena → 쿼리 기반 분석
    • Lambda 기반 알람 설정으로 비정상 접속 추적 가능

 

 

 

Q4. 보안 강화 팁은?

  • 외부 접속이 필요한 경우 Security Group에서 정밀 제어
  • 내부 마이크로서비스 간 트래픽은 NACL로 블록 단위 필터링
  • 접근이 불필요한 포트는 NACL로 완전 차단 (예: RDP, SMTP 등)

 

예: EC2에 RDP(3389 포트) 열려 있음 → SG는 허용했지만 NACL에서 차단하면 외부 접근 원천 차단 가능

 

 

 

 

 

 


 

 

 

 

 

 

 

1Security Group vs NACL 트래픽 흐름도

[Client] 
   ↓ (Inbound)
[NACL (Subnet)] 
   ↓
[Security Group (ENI)] 
   ↓
[EC2 Instance]

 

  • 반대 방향의 Outbound도 같은 흐름을 타며 NACL → SG 순으로 필터링됨.

 

 

 

Terraform 보안 예시 코드 블록

# Example: Security Group
resource "aws_security_group" "web_sg" {
  name   = "web-sg"
  vpc_id = aws_vpc.main.id

  ingress {
    from_port   = 80
    to_port     = 80
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

 

 

 

 

 

보안 조합 전략 예시 표 (SG + NACL)

시나리오 SG 설정 NACL 설정
외부 웹 접속 허용 HTTP/HTTPS Ingress 허용 포트 80/443 Inbound 허용
내부 DB 접속 제한 MySQL 포트 제한 (SG에서만 허용된 IP) DB 포트에 대한 NACL 거부 규칙 추가 가능
비인가 외부 IP 차단 특정 CIDR 제외 CIDR 별 Ingress 거부 (NACL 사용)

 

 

 

 

 

 

 


 

 

 

 

 

마무리: 역할을 구분하고 함께 쓰자

  • Security Group은 기본 방화벽이며 인스턴스 수준의 접근 제어에 적합
  • Network ACL은 서브넷 레벨에서 보다 광범위하거나, 특정 트래픽 차단이 필요한 경우 활용

 

대부분의 워크로드에서는 Security Group만으로도 충분하지만, 보안 감사를 고려하거나 서비스간 트래픽을 통제해야 하는 환경이라면 NACL과의 조합이 중요하다.

결국 “둘 중 하나”가 아닌 “어떤 트래픽을 어디서 제어할 것인가”에 따라 역할을 나누는 것이 베스트 프랙티스다.

 

 

 

 

 

 

 

 

 

 


Reference

 

 

 

728x90
반응형

'AWS' 카테고리의 다른 글

EKS Pod Identity Addon  (0) 2024.11.24
ALB access Log 활성화 → S3 권한 설정 및 로그 저장  (0) 2024.11.21
AWS Ingress Annotations 정리  (0) 2024.11.07
AWS Assume Role이란?  (0) 2024.11.04
AWS IRSA(IAM Roles for Service Accounts)란?  (0) 2023.05.28