네트워크 트래픽을 제어하기 위해 사용하는 보안 필터이다.
VPC의 서브넷 수준에서 동작하며, 인바운드와 아웃바운드 트래픽에 대해 허용(Allow)하거나 거부(Deny)할 수 있는 규칙들을 설정할 수 있다.
모든 VPC에는 기본 NACL이 자동으로 제공되고, 해당 NACL에 서브넷을 연결하여 사용하면 된다.
각 서브넷은 하나의 NACL과 연관될 수 있으며, NACL의 규칙은 낮은 번호 순서대로 적용된다.
AWS에서 기본적으로 생성되는 NACL(네트워크 액세스 제어 리스트)은 모든 인바운드 및 아웃바운드 트래픽을 허용되만, 사용자 정의로 새로 생성되는 NACL은 모든 인바운드 및 아웃바운드 트래픽을 거부하는 기본 규칙을 가지고 있다.
NACL은 상태 비저장이므로 모든 트래픽에 대한 명시적인 규칙이 필요하다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 141p
인바운드/아웃바운드 규칙
인바운드 규칙은 외부에서 서브넷으로 들어오는 트래픽을 제어하며, 아웃바운드 규칙은 서브넷에서 외부로 나가는 트래픽을 제어한다. 각 방향에 대해 별도의 규칙을 설정할 수 있다.
규칙 번호
각 규칙은 고유한 번호를 가지고 있으며, NACL은 이 번호를 기준으로 순차적으로 규칙을 평가한다. 작은 번호부터 평가되며, 트래픽이 해당 규칙과 일치하면 더 이상 다른 규칙을 평가하지 않는다.
유형
규칙이 적용될 트래픽의 프로토콜 유형을 나타낸다. 예를 들어, TCP, UDP, ICMP 등이 있으며, 특정 프로토콜에 대한 규칙을 설정할 수 있다.
프로토콜
트래픽이 사용하는 네트워크 프로토콜을 지정한다.
포트 범위
트래픽이 허용되거나 거부될 포트 번호 또는 포트 번호의 범위를 지정한다. 예를 들어, HTTP 트래픽은 포트 80을 사용하며, HTTPS는 포트 443을 사용한다.
소스
트래픽의 소스(CIDR 범위)이다. 인바운드 규칙에만 적용된다.
대상 위치
트래픽의 대상 위치(CIDR 범위)이다. 아웃바운드 규칙에만 적용된다.
허용 또는 거부
해당 규칙에 따라 트래픽을 허용할지(Allow) 거부할지(Deny)를 결정한다. 허용으로 설정된 트래픽은 통과되며, 거부로 설정된 트래픽은 차단된다.
기본적으로 VPC 생성시 기본적으로 하나가 생성되지만, 추가적으로 NACL을 생성하거나 특정 서브넷에 맞춤형 NACL을 연결할 수 있다.
NACL 생성 후 다음 항목들을 편집하여 사용하면 된다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 143p
출처: Architecting on AWS 7.7.9 (KO): Student Guide 144p
AWS에서 인스턴스 수준에서 네트워크 트래픽을 제어하기 위해 사용하는 가상 방화벽이다.
보안 그룹은 VPC 내에서 EC2 인스턴스, RDS 데이터베이스 등 다양한 리소스에 적용할 수 있으며, 인바운드(들어오는 트래픽)와 아웃바운드(나가는 트래픽)를 제어하는 규칙을 설정할 수 있다.
IP 프로토콜, 포트, IP 주소를 기준으로 트래픽을 허용한다.
보안 그룹은 상태 저장 방식을 사용하기 때문에 별도로 아웃바운드 규칙을 설정하지 않아도 인바운드 트래픽이 허용된 경우, 해당 연결에 대한 응답은 자동으로 허용된다.
보안 그룹은 기본적으로 모든 아웃바운드 트래픽을 허용하며, 인바운드 트래픽은 모두 허용하지 않는다. 따라서 인바운드 규칙에 명시적 허용 규칙을 추가해줘야 한다.
한 인스턴스에 여러 보안 그룹을 연결할 수 있으며, 각 보안 그룹의 규칙이 결합되어 적용된다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 145p
보안 그룹 사용 시 프로토콜 및 포트 번호를 기준으로 트래픽을 필터링 할 수 있다.
보안 그룹은 상태 저장 그룹이므로, 들어온 트래픽은 별도의 아웃바운드 규칙메 명시가 되어있지 않아도 나갈 수 있다.
인바운드 규칙
첫 번째 규칙은 HTTP 트래픽이 허용된다는 것을 의미한다.
두 번째 규칙은 HTTPS 트래픽이 허용된다는 것을 의미한다.
아웃바운드 규칙
첫 번째 규칙은 해당 보안 그룹에 속한 인스턴스가 SQL Server에 접근할 수 있도록 허용된다는 의미이다.
두 번째 규칙은 해당 보안 그룹에 속한 인스턴스가 MySQL 서버에 접근할 수 있음을 의미한다.
cf. 웹 서버가 외부 클라이언트로부터의 HTTP 또는 HTTPS 요청에 응답하는 경우, 아웃바운드 트래픽에 대해 추가적인 규칙을 설정할 필요가 없다.
기본 아웃바운드 규칙이 모든 트래픽을 허용하도록 되어 있거나, 아웃바운드 규칙이 명시적으로 설정되어 있지 않더라도, 인바운드 요청에 대한 응답은 자동으로 허용되기 때문이다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 146p
웹 보안 그룹 (Web Security Group)
웹 서버에 적용된 보안 그룹이다.
앱 보안 그룹 (App Security Group)
앱 서버에 적용된 보안 그룹이다.
데이터 보안 그룹 (Database Security Group)
데이터베이스에 적용된 보안 그룹이다.
cf. 소스에 192.168.1.0/24와 같은 특정 IP 범위를 설정하는 경우, 해당 IP에서 오는 트래픽을 허용할 수 있다.
소스에 sg-1234567890abcdef0와 같은 특정 보안 그룹 ID를 소스로 지정하면, 해당 보안 그룹에 속한 모든 인스턴스에서 오는 트래픽을 허용할 수 있다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 147p
외부 인터넷에서 들어오는 트래픽은 인터넷 게이트웨이를 통해 VPC로 들어오며, 라우팅 테이블에 정의된 경로에 따라 네트워크 ACL을 거쳐 퍼블릭 서브넷에 도달한다.
서브넷 내 인스턴스는 보안 그룹에 의해 보호되며, 허용된 트래픽만 인스턴스로 들어오거나 인스턴스에서 나갈 수 있다.
네트워크 보안은 여러 단계로 강화되어 있으며, 서브넷과 인스턴스 수준에서 각각 네트워크 ACL과 보안 그룹을 통해 트래픽을 필터링하고 관리한다.
출처: Architecting on AWS 7.7.9 (KO): Student Guide 148p
적용 범위
보안 그룹은 인스턴스 수준에서 적용되며, NACL은 서브넷 수준에서 적용된다.
상태 정보
보안 그룹은 상태 저장(Stateful)이며, NACL은 비상태적(Stateless)이다.
트래픽 제어 방향
보안 그룹은 명시적으로 허용된 트래픽만 허용하는 반면, NACL은 허용 및 거부 규칙을 모두 설정할 수 있다.