Amazon Virtual Private Cloud (VPC)는 AWS 클라우드에서 격리된 가상 네트워크를 프로비저닝하여 사용자가 정의한 가상 네트워크 환경에서 AWS 리소스를 시작할 수 있도록 합니다. VPC의 핵심적인 두 가지 측면은 **라우팅 (Routing)**과 **보안 (Security)**이며, 이는 VPC 내의 통신 방식과 접근 제어를 정의합니다.
1. Amazon VPC 라우팅 (Routing)
VPC 내의 인스턴스 및 기타 리소스 간의 네트워크 트래픽 경로를 결정하는 것이 라우팅입니다. VPC 라우팅은 **라우팅 테이블 (Route Table)**을 통해 구성됩니다.
1.1 라우팅 테이블 (Route Table)
정의: 라우팅 테이블은 네트워크 트래픽이 전달되어야 하는 다음 홉 (Next Hop)을 결정하는 규칙 (라우트)의 집합입니다.
연결: 각 서브넷은 하나의 메인 라우팅 테이블과 연결되거나, 사용자가 생성한 사용자 정의 라우팅 테이블과 명시적으로 연결될 수 있습니다. 서브넷 내의 모든 인스턴스는 해당 서브넷에 연결된 라우팅 테이블의 규칙을 따릅니다.
기본 라우팅 테이블: VPC를 생성하면 자동으로 기본 라우팅 테이블이 생성됩니다. 기본적으로 VPC 내의 모든 서브넷은 이 라우팅 테이블과 연결되며, VPC CIDR 블록 내의 모든 주소 간의 통신을 허용하는 로컬 라우트를 포함합니다.
1.2 라우트 (Route)
각 라우팅 테이블은 하나 이상의 라우트로 구성됩니다. 각 라우트는 다음 정보를 포함합니다.
대상 (Destination): 트래픽이 향하는 IP 주소 범위 (CIDR 블록)입니다.
대상 유형 (Target): 트래픽을 보낼 다음 홉입니다. 다음 홉은 다음과 같은 유형이 될 수 있습니다.
local: VPC 내부의 통신 (기본 라우트)
Internet Gateway (IGW): VPC와 인터넷 간의 통신을 가능하게 합니다. 퍼블릭 서브넷의 인스턴스는 IGW를 통해 외부 인터넷과 통신할 수 있습니다.
NAT Gateway: 프라이빗 서브넷의 인스턴스가 아웃바운드 인터넷 연결을 시작할 수 있도록 하지만, 외부에서의 인바운드 연결은 허용하지 않습니다.
Virtual Private Gateway (VGW): 온프레미스 네트워크와 VPC 간의 VPN 연결을 위한 게이트웨이입니다.
Transit Gateway (TGW): 여러 VPC 및 온프레미스 네트워크를 상호 연결할 수 있는 네트워크 전송 허브입니다.
VPC Endpoint: S3, DynamoDB 등 AWS 서비스에 대한 프라이빗 연결을 제공합니다.
Peering Connection: 다른 VPC와의 프라이빗 연결을 가능하게 합니다.
Network Interface (eni-xxxxxxxx): 특정 네트워크 인터페이스로 트래픽을 전달합니다 (특수한 경우).
Instance (i-xxxxxxxx): 특정 EC2 인스턴스로 트래픽을 전달합니다 (일반적이지 않음).
Gateway Load Balancer Endpoint: Gateway Load Balancer를 통해 트래픽을 전달합니다.
1.3 라우팅 결정 (Route Selection)
트래픽이 특정 대상으로 향할 때, 라우팅 테이블 내의 여러 라우트가 해당 대상과 일치할 수 있습니다. 이 경우, AWS는 가장 구체적인 (가장 작은 CIDR 블록) 라우트를 선택합니다. 예를 들어, 대상이 10.0.1.0/24이고 라우팅 테이블에 10.0.0.0/16을 IGW로 향하는 라우트와 10.0.1.0/24를 NAT Gateway로 향하는 라우트가 모두 있다면, 더 구체적인 10.0.1.0/24 라우트가 선택되어 트래픽은 NAT Gateway로 전달됩니다.
1.4 사용자 정의 라우팅 테이블 (Custom Route Table)
기본 라우팅 테이블 외에도 사용자는 필요에 따라 여러 개의 사용자 정의 라우팅 테이블을 생성하고 특정 서브넷과 연결할 수 있습니다. 이를 통해 각 서브넷의 트래픽 흐름을 세밀하게 제어할 수 있습니다. 예를 들어, 퍼블릭 서브넷은 IGW로 향하는 라우트를 가질 수 있지만, 프라이빗 서브넷은 NAT Gateway 또는 VPC Endpoint로 향하는 라우트를 가질 수 있습니다.
2. Amazon VPC 보안 (Security)
VPC 내의 리소스에 대한 네트워크 접근을 제어하는 것은 보안의 중요한 측면입니다. AWS는 VPC 환경에서 강력한 보안을 구현하기 위해 다음과 같은 주요 기능을 제공합니다.
2.1 보안 그룹 (Security Groups)
정의: 보안 그룹은 EC2 인스턴스의 인바운드 (들어오는) 및 아웃바운드 (나가는) 트래픽을 제어하는 가상 방화벽 역할을 합니다.
상태 저장 방화벽 (Stateful Firewall): 보안 그룹은 상태 저장 방화벽입니다. 인바운드 규칙에 따라 허용된 연결에 대한 아웃바운드 응답은 명시적인 아웃바운드 규칙 없이 자동으로 허용됩니다. 마찬가지로, 아웃바운드 규칙에 따라 시작된 연결에 대한 인바운드 응답도 자동으로 허용됩니다.
규칙 기반: 보안 그룹은 허용 (Allow) 규칙만 지원합니다. 명시적으로 거부 (Deny)하는 규칙은 설정할 수 없습니다.
적용 대상: 보안 그룹은 인스턴스 수준에서 적용됩니다. 여러 인스턴스에 동일한 보안 그룹을 연결할 수 있습니다.
규칙 구성: 각 규칙은 다음 정보를 포함합니다.
프로토콜 (Protocol): TCP, UDP, ICMP, 또는 모든 프로토콜
포트 범위 (Port Range): 특정 포트 또는 포트 범위 (예: 80, 443, 1024-65535)
소스/대상 (Source/Destination): IP 주소 범위 (CIDR 블록), 다른 보안 그룹, 또는 프리픽스 목록
2.2 네트워크 ACL (Network Access Control Lists - NACLs)
정의: 네트워크 ACL은 서브넷 수준에서 인바운드 및 아웃바운드 트래픽을 제어하는 선택적 보안 계층입니다.
상태 비저장 방화벽 (Stateless Firewall): 네트워크 ACL은 상태 비저장 방화벽입니다. 인바운드 트래픽을 허용하는 규칙을 설정했다면, 해당 연결에 대한 아웃바운드 응답 트래픽을 허용하는 별도의 아웃바운드 규칙을 명시적으로 설정해야 합니다.
규칙 기반: 네트워크 ACL은 허용 (Allow) 및 거부 (Deny) 규칙을 모두 지원합니다.
적용 대상: 네트워크 ACL은 서브넷 수준에서 적용됩니다. 각 서브넷은 하나의 네트워크 ACL과 연결되어야 합니다 (사용자 정의 ACL을 연결하지 않으면 기본 ACL이 사용됨).
규칙 평가: 네트워크 ACL 규칙은 번호 순서대로 평가됩니다. 트래픽과 일치하는 첫 번째 규칙 (허용 또는 거부)이 적용되고 나머지 규칙은 평가되지 않습니다.
기본 네트워크 ACL: VPC를 생성하면 자동으로 기본 네트워크 ACL이 생성됩니다. 기본적으로 모든 인바운드 및 아웃바운드 트래픽을 허용하는 규칙을 포함합니다.
2.3 보안 그룹 vs. 네트워크 ACL 비교
특징
보안 그룹 (Security Groups)
네트워크 ACL (Network ACLs)
적용 범위
인스턴스 수준
서브넷 수준
상태 저장 여부
상태 저장 (Stateful)
상태 비저장 (Stateless)
규칙 유형
허용 (Allow) 규칙만
허용 (Allow) 및 거부 (Deny) 규칙 모두
규칙 평가
모든 규칙 평가 후 허용 여부 결정 (가장 제한적인 규칙 우선)
번호 순서대로 첫 번째 일치 규칙 적용
기본 동작
모든 아웃바운드 허용, 인바운드 명시적 허용 필요
모든 인바운드 및 아웃바운드 허용 (기본 ACL)
일반적인 보안 구성:
보안 그룹: 특정 애플리케이션 또는 서비스에 필요한 최소한의 포트만 열어 인스턴스 수준의 세밀한 접근 제어를 구현합니다.
네트워크 ACL: 서브넷 경계에서 기본적인 트래픽 필터링을 수행하여 원치 않는 트래픽을 사전에 차단하는 데 사용될 수 있습니다 (예: 특정 IP 범위로부터의 접근 차단).
2.4 추가 보안 기능
VPC Flow Logs: VPC 내의 네트워크 인터페이스를 오가는 IP 트래픽에 대한 정보를 캡처하여 CloudWatch Logs 또는 S3로 게시할 수 있습니다. 이는 보안 분석, 트래픽 모니터링 및 문제 해결에 유용합니다.
AWS WAF (Web Application Firewall): 애플리케이션 계층에서 작동하여 SQL 인젝션, 교차 사이트 스크립팅 (XSS)과 같은 일반적인 웹 공격으로부터 웹 애플리케이션을 보호합니다. ALB 및 API Gateway와 통합하여 사용할 수 있습니다.
AWS Shield: DDoS (Distributed Denial of Service) 공격으로부터 AWS 리소스를 보호하는 관리형 DDoS 방어 서비스입니다. Standard 계층은 모든 AWS 고객에게 자동으로 제공되며, Advanced 계층은 추가적인 탐지 및 완화 기능을 제공합니다.
AWS PrivateLink: VPC와 지원되는 AWS 서비스 또는 다른 AWS 계정에서 호스팅되는 서비스 간에 프라이빗 연결을 안전하게 설정할 수 있도록 합니다. 퍼블릭 인터넷을 통해 트래픽을 라우팅하지 않고 서비스를 VPC 내에서 직접 호스팅하는 것처럼 접근할 수 있습니다.
Amazon VPC의 라우팅 및 보안 기능은 클라우드 환경에서 안전하고 격리된 네트워크를 구축하고 관리하는 데 필수적입니다. 라우팅 테이블을 통해 VPC 내외부 트래픽의 흐름을 정의하고, 보안 그룹과 네트워크 ACL을 통해 인스턴스 및 서브넷 수준에서 세밀한 접근 제어를 구현함으로써 애플리케이션과 데이터를 안전하게 보호할 수 있습니다.
효과적인 VPC 설계 및 보안 구성을 위해서는 라우팅 및 보안 메커니즘에 대한 깊이 있는 이해가 중요합니다.
댓글 영역