말하는 감자의 성장 기록
AWS 보안그룹(Security Group) (feat. Network ACL) 본문
보안 그룹(Security Group)
클라우드 환경이나 네트워크(AWS, GCP, Azure 등)에서 트래픽을 제어하는 가상의 방화벽 역할을 하는 접근 제어 규칙의 집합이다.
보안 그룹은 인스턴스(서버)에 대한 인바운드(들어오는) 및 아웃바운드(나가는) 트래픽을 제어한다.

주요 특징
1. 상태 저장(Stateful)
- 인바운드 요청을 허용하면, 그에 대한 응답 트래픽은 자동으로 허용되어 별도로 아웃바운드 규칙을 추가하지 않아도 된다.
- 인바운드에서 허용한 트래픽이 한 번 인바운드를 통과하면 아웃바운드 규칙에 영향을 받지 않고 나갈 수 있다.
- 인바운드를 통해 온 트래픽을 보안 그룹에서 기억하고 있다가 트래픽이 나갈 때 아웃바운드 규칙에 구애 받지 않고 내보낸다.
- 반대로 아웃바운드에서 허용한 트래픽이 한 번 아웃바운드를 통과하면 인바운드 규칙에 영향을 받지 않고 들어올 수 있다.
- 인바운드에서 허용한 트래픽이 한 번 인바운드를 통과하면 아웃바운드 규칙에 영향을 받지 않고 나갈 수 있다.
2. 허용(Allow) 기반 규칙
- 명시적으로 허용한 트래픽만 통과한다.
- 거부(Deny) 규칙은 없으며, 규칙에 없으면 기본적으로 차단된다. = 블랙리스트를 설정하지 못한다는 뜻
- <-> 차단 규칙은 Network ACL에서 설정 가능하다.
규칙 구성 요소
- 프로토콜: TCP, UDP, ICMP 등
- 포트 범위: 예) 80(HTTP), 443(HTTPS), 22(SSH)
- 소스/대상: IP 주소(CIDR), 또는 다른 보안 그룹
새 보안 그룹 생성 시 기본값
| 방향 | 기본값 |
| 인바운드 | 모든 트래픽 차단 (규칙 없음) |
| 아웃바운드 | 모든 트래픽 허용 (0.0.0.0/0) |
- 인바운드(외부에서 인스턴스로 들어오는 트래픽) → 명시적으로 허용하지 않으면 전부 차단
- 아웃바운드(인스턴스에서 외부로 나가는 트래픽) → 별도 설정 없이 전부 허용
- 인스턴스가 외부 패키지 설치, API 호출 등 인터넷에 접근해야 하는 경우가 많기 때문에 편의상 기본 허용으로 설정되어 있다. 보안을 강화할 경우 아웃바운드도 필요한 대상만 허용하도록 제한할 수 있다.

VPC와의 관계
VPC(Virtual Private Cloud) 는 클라우드 안에 만드는 나만의 격리된 가상 네트워크이다.

보안그룹은 VPC 안에 종속된다.
- 보안 그룹을 생성할 때 반드시 어느 VPC에 속할지 지정해야 한다.
- 특정 VPC에서 만든 보안 그룹은 다른 VPC의 리소스에는 적용 불가하다.
- VPC가 삭제되면 그 안의 보안 그룹도 함께 삭제된다.
VPC 안에는 여러 보안 그룹이 존재한다.
[인터넷]
↓
[인터넷 게이트웨이]
↓
[네트워크 ACL] ← 서브넷 수준 방화벽
↓
[서브넷]
↓
[보안 그룹] ← 인스턴스 수준 방화벽
↓
[EC2 인스턴스]
트래픽이 인스턴스에 도달하려면 네트워크 ACL → 보안 그룹 두 단계를 모두 통과해야한다.
AWS 외 클라우드 서비스에서의 보안그룹
AWS 외에 GCP, Azure에서도 보안그룹을 설정할 수 있다. 다만, 명칭과 구현 방식은 AWS의 Security Group과 조금 다르다.
GCP (Google Cloud Platform)
VPC 방화벽 규칙(Firewall Rules)이라는 이름으로 제공한다. 적용 단위는 VPC 전체 또는 특정 인스턴스(태그/서비스 계정 기준)이다.

Azure
네트워크 보안 그룹(NSG, Network Security Group)이라는 이름으로 제공한다. 적용 단위는 서브넷 또는 개별 NIC(네트워크 인터페이스)이다. AWS와 달리 명시적 거부(Deny) 규칙도 설정 가능하다.

Network ACL(Access Control List)
VPC 내 서브넷 수준에서 트래픽을 제어하는 방화벽이다. 서브넷으로 들어오고 나가는 트래픽을 필터링한다.
주요 특징
1. 무상태(Stateless)
- 보안 그룹은 Stateful이라 인바운드를 허용하면 응답 트래픽이 자동 허용된다.
- ACL은 Stateless라 인바운드와 아웃바운드를 각각 따로 설정해야 한다.
2. 허용(Allow) + 거부(Deny) 모두 가능
- 보안 그룹과 달리 특정 IP나 대역을 명시적으로 차단할 수 있다.
ACL을 사용해야 하는 경우
보안 그룹만으로도 대부분의 제어가 가능하지만, ACL은 아래 상황에서 추가로 활용한다.
- 특정 IP를 명시적으로 차단(Deny) 해야 할 때
- 서브넷 전체에 일괄적으로 규칙을 적용할 때
- 보안 그룹과 이중 방어선 구성이 필요할 때