이번 글은 VPC(Virtual Private Cloud)내에 네트워크 트래픽을 제어하는 NACL과 보안그룹 대해 알아보고자 합니다.
# 네트워크 ACL(Access Control List)
VPC 내에서 네트워크 ACL을 구성하여 네트워크 방화벽과 같이 네트워크 트래픽을 제어 할 수 있습니다.
ACL은 IP 프로토콜, 서비스 포트, 출발지/목적지 IP 등에 따라 인/아웃바운드 규칙을 작성하여 트래픽을 허용 또는 거부 할 수 있습니다. 각 서브넷은 네트워크 ACL과 연결되어야하며, 명시적으로 연결되지 않았을 경우 자동으로 기본 네트워크 ACL 과 연결됩니다. 네트워크 ACL은 동일한 VPC 내에 여러 서브넷과 연결할 수 있습니다.
#보안그룹(Security Group)
보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상의 방화벽 역할을 합니다.
인스턴스를 생성할 경우 보안 그룹을 지정해야하며 지정하지 않을 경우 자동으로 VPC의 기본 보안 그룹에 할당됩니다.
보안 그룹의 경우 허용된 인바운드 트래픽에 대한 응답은 아웃바운드 규칙과 관계없이 아웃바운드로 흐르는 것이 허용됩니다. 반대로 아웃바운드로 나간 트래픽에 대한 응답은 인바운드 규칙과 관계없이 인바운드로 흐르는 것이 허용됩니다. ex) 80포트로 들어오는 트래픽을 허용하면 송신 포트 80이 자동으로 열립니다.
# 네트워크 ACL과 보안그룹 간 차이점
보안 그룹(Security Group)
네트워크 ACL (Access Control List)
ENI에 연결괴며 하이퍼바이저에 구현됨
서브넷에 연결되고 네트워크에 구현됨
허용 규칙만 지원
허용 및 거부 규칙 지원
상태 저장
상태 비저장
모든 귝칙은 트래픽 허용 여부를 결정하기 전에평가됨
모든 규칙은 트래픽 허용 여부를 결정할때 순서대로 처리됨
인스턴스에 수동으로 지정해야함
인스턴스가 서브넷에 추가될때 자동으로 적용됨
통신을 허용하려면 구성이 필요
기본적으로 통신 허용
# 네트워크 트래픽 흐름
VPC 내의 NACL과 SG를 통해 계층별 보안을 제공합니다.
위의 트래픽 흐름을 보면 Internet GW의 트래픽은 라우팅 테이블의 경로에 따라 해당 서브넷으로 라우팅됩니다.
서브넷과 연결된 네트워크 ACL에서 트래픽을 제어합니다. ENI와 연결된 보안 그룹은 EC2 인스턴스로의 트래픽을 제어합니다.