Network ACL 이란, Access Control List 의 약어로써 접근 제어 리스트를 말한다. 

AWS 의 각 VPC 단위로 접근 제어 목록을 만들 수 있고, VPC 로 접근하는 트래픽들에 대한 방화벽을 구성하는 보안계층이다.

기본 설정으로는 모든 인바운드 및 아웃바운드 트래픽을 허용하지만, 사용자 지정 ACL 의 경우 새 규칙을 추가하기 전까지 모든 트래픽을 거부하게 되어 있다.

만들어진 Network ACL 은 여러개의 서브넷에 적용할 수 있지만, 하나의 서브넷은 한 개의 ACL 만 적용할 수 있다.

단, VPC 는 여러개의 ACL을 적용가능하며 최대 200개까지 허용된다.

Network ACL 에는 Sequence Number 로 구분되어있는 규칙들이 정의되어 있고, 낮은 번호부터 우선적으로 적용된다.


Security Group 은 인스턴스에 대한 인바운드 & 아웃바운드 트래픽을 제어하는 가상 방화벽의 역할을 한다.

VPC 의 각 인스턴스당 최대 5개 Security Group 에 할당할 수 있으며, 인스턴스 수준에서 작동하기 때문에 VPC 에 있는 각 서브넷의 인스턴스들을 서로 다른 Security Group 에 할당하는 것이 가능하다.


ACL 과 유사하지만 별개로 동작하는 규칙들을 정의할 수 있다.

기본 Security Group 의 인바운드 트래픽 정책은 All Deny 이기 때문에, 각 규칙은 Allow 항목들을 추가해주는 WhiteList 방식이다.

반면, 기본 아웃바운드 트래픽 정책은 All Allow 상태이고, 규칙은 Deny 할 항목들을 추가해주는 BlackList 방식이다.


다음은 Network ACL 과 Security Group 의 차이를 정리해보았다.


(1) Network ACL은 VPC 레벨에서 외부간 통신을 담당하는 보안 기능으로 Subnet 단위로 설정이 가능하며 Security Group은 내부간 통신을 담당하며 서버 단위 정책을 설정한다.


- Network ACL : Stateless 필터링(요청 정보를 저장 안 하는 응답 Traffic 필터링)


- Security Group : Stateful 필터링(요청 정보를 저장하는 Traffic 제어)



(2) 외부에서 접근 시, Network ACL의 보안정책과 하위의 Security Group의 보안정책이 적용된다. 내부에서 접근시(동일한 서브넷) Security Group의 보안 정책만 적용된다.

 외부에서 내부로 트래픽이 들어오는 경우, 다른 Subnet 또는 외부에서 들어오는 경우에 Network ACL과 Security Group을 순차적으로 요청이 거치게 된다. 

이 때 응답은 Network ACL만 거쳐서 나가게 된다. 반면, 같은 서브넷일 경우에는 요청 수신시 Security Group 만을 거치고 응답 발신시 아무것도 거치지 않는다.


 내부에서 외부로 트래픽이 나가는 경우, 요청의 발신은 Security Group 과 Network ACL을 순차적으로 거치게 된다. 이때 응답의 수신은 Network ACL만을 거치게 된다.

같은 서브넷인 경우에는 요청의 발신이 Security Group 만을 거치고, 응답의 수신은 어떠한 것도 거치지 않는다.


> 즉 ACL은 Request/Response 모두에 관여하며 다른 서브넷 및 외부에서 들어오거나 나가는 요청/응답에 관여한다. 

 Security Group 은 Request 에만 관여하며 같은 서브넷, 다른 서브넷 및 외부에서 들어오는 요청의 수신/발신에 관여한다.


+ Recent posts