※ 공부 중이라 틀린 부분이 있을 수도 있습니다.
TL;DR (결론)
둘 다 보안을 위한 방화벽 기능을 갖고 있지만
Security Group 는 "인스턴스" 단위를 설정하는 Firewall(방화벽) 기능이다.
Network ACL 는 "서브넷" 단위의 전체 인스턴스에 적용하는 Firewall(방화벽) 기능이다.
Security Group → EC2 Instance
Network ACL → Subnet
비교 요약
Security Groups | Network ACLs | |
적용 수준 | 인스턴스 (네트워크 인터페이스) | 서브넷 |
상태 관리 | 상태 저장(Stateful) | 상태 비저장(Stateless) |
기본 설정 | 기본으로 모든 트래픽을 일단 차단, 허용 규칙만 설정 가능 |
허용 규칙과 차단 규칙을 설정 가능 |
규칙 적용 방식 | 모든 규칙을 적용 | 번호 순서대로 규칙을 적용 |
변경 적용 | 즉시 적용 | 즉시 적용 |
주요 사용 사례 | 인스턴스 수준의 세부적인 보안 설정 | 서브넷 수준의 기본 네트워크 트래픽 필터링 |
좀더 자세히 알아보자!
보안 그룹
Security Group
Security Group은 인스턴스을 위한 방화벽이다.
인스턴스에 들어오는 인바운드(inbound) 와 외부로 나가는 아웃바운드(outbound) 의 트래픽을 제어해주는 보안 장치이다.
외부에서 들어 오는 트레픽을 허용(Accept)하는 방식이다. (반대로 특정 IP를 막지를 못한다)
- 기본 설정: 모든 인바운드 통신을 거부하고, 모든 아웃바운드 통신을 허용.
- 여기서 관리자가 외부에서 들어 오는 특정 IP를 추가하여 통신을 허용하는 방식.
- 반대로 특정 IP 를 막을 수는 없다. 들어오는거 허용만 가능.
- 그러나 Network ACL은 특정 IP를 막을 수 있다.
Security Group의 Inbound 예시)
Type | Protocol | Port Range | Source | Description |
SSH | TCP | 22 | 0.0.0.0/0 (Anywhere) | All Traffic |
HTTP | TCP | 80 | 102.34.11.134 | Seoul Home |
- "0.0.0.0/0" 는 인터넷에서 들어오는 모든 트래픽을 허용한다는 뜻이다.
- Source에 적혀있는 IP 주소만 접속 가능하다. 안 적혀있으면 접속 불가.
- 1개의 Security Group 당 최대 60개 적을 수 있다.
"Network Access Control List"
Network ACL
Network ACL은 VPC의 서브넷(Subnet) 수준에서 작동하는 방화벽이다.
인바운드(inbound)와 아웃바운드(outbound) 트래픽에 대한 규칙을 정의하여 특정 서브넷에 대한 보안 정책을 설정한다.
Security Group과 달리 허용 규칙(Allow)과 거부 규칙(Deny)을 모두 설정할 수 있다
- 기본 설정: 인바운드 통신, 아웃바운드 통신 모두 모든 통신이 허용한다.
- IP 주소를 기준으로 허용 규칙(Allow)과 거부 규칙(Deny)을 모두 설정할 수 있다.
- 규칙은 사용자가 부여한 규칙 번호의 순서대로 평가되며, 규칙 간에 모순이 있는 경우 규칙 번호가 작은 숫자의 규칙부터 적용된다
- 예시) 규칙 번호: 100, 110, 120, 130, *
- 네트워크 ACL은 통신 상태를 관리하지 않는 "Stateless" 방화벽이다. 통신의 관련성을 고려하지 않으므로, 인바운드/아웃바운드 모두에 허용 설정이 필요합니다.
- 예시) 인바운드에서 특정 요청의 수락을 허용하더라도, 아웃바운드에서 응답의 송신을 허용하지 않으면 정상적으로 통신할 수 없습니다.
Network ACL의 Inbound 예시)
Rule Number | Traffic Type | Port | Source | Allow/Deny |
100 | HTTP (TCP) | 80 | 0.0.0.0/0 | Allow |
110 | HTTPS (TCP) | 443 | 0.0.0.0/0 | Allow |
120 | SSH (TCP) | 22 | 192.168.1.0/24 | Allow |
130 | All Traffic | All | 0.0.0.0/0 | Deny |
Network ACL의 Outbound 예시)
Rule Number | Traffic Type | Port | Destination | Allow/Deny |
100 | HTTP (TCP) | 80 | 0.0.0.0/0 | Allow |
110 | HTTPS (TCP) | 443 | 0.0.0.0/0 | Allow |
120 | All Traffic | All | 0.0.0.0/0 | Deny |
보안그룹과 네트워크 ACL의 설계 차이
🤔 SAA-C03 문제
네트워크 ACL의 인바운드 규칙이 이미지 상태일 때, 올바른 것은 무엇인가요?
Rule Number | Traffic Type | Protocol | Port | Source | Allow/Deny |
100 | HTTPS (443) | TCP(6) | 443 | 0.0.0.0/0 | Allow |
200 | All TCP | TCP(6) | All | 0.0.0.0/0 | Deny |
300 | HTTP (80) | TCP(6) | 80 | 0.0.0.0/0 | Allow |
* | All Traffic | All | All | 0.0.0.0/0 | Deny |
- 모든 인바운드 통신이 거부된다.
- HTTPS만 인바운드 통신이 허용된다.
- 모든 TCP만 인바운드 통신이 거부된다.
- HTTP, HTTPS만 인바운드 통신이 허용된다.
정답
2번. HTTPS만 인바운드 통신이 허용된다.
다음과 같은 네트워크 ACL 규칙이 있다:
- 규칙 번호 100: HTTPS를 허용
- 규칙 번호 200: 모든 TCP를 거부
- 규칙 번호 300: HTTP를 허용
- 규칙 번호 *: 모든 트래픽을 거부
네트워크 ACL에서는 규칙 번호가 작은 순서대로 규칙이 적용된다.
(이 문제에서는 규칙 번호 100 → 규칙 번호 200 → 규칙 번호 300 → 규칙 번호 *의 순서로 적용).
규칙 간에 충돌이 있을 경우, 작은 규칙 번호의 규칙이 우선된다.
이 문제의 경우 규칙 번호 200과 300이 충돌하지만, 규칙 번호 200이 우선적으로 적용된다.
(1) 규칙 번호 100에서 HTTPS가 허용됩니다.
(2) 규칙 번호 200에서 모든 TCP(HTTP를 포함하여)가 거부됩니다.
(3) 규칙 번호 300은 (2)에서 HTTP가 이미 거부되었으므로 적용되지 않습니다.
(4) 규칙 번호 *에서 모든 트래픽이 거부됩니다.
(1)~(4)의 규칙을 적용하면, HTTPS만 허용되고, 그 외의 모든 트래픽은 거부된다.
'클라우드(AWS)' 카테고리의 다른 글
클라우드 컴퓨팅 서비스(SaaS, PaaS, IaaS, FaaS) 간단하게 개념 정리 & 설명 (0) | 2023.10.14 |
---|---|
[AWS] Serverless 란 쉽게 개념 정리 (0) | 2023.10.07 |
What is AWS CodePipeline (CodeCommit, CodeBuild, CodeDeploy) (0) | 2023.04.27 |
CRON expressions 표현식 (0) | 2023.04.24 |
[AWS] [Elastic Container Service] ECS의 구조와 특징 쉽게 이해하기 (0) | 2023.03.28 |