조금씩 차근차근 2025. 3. 6. 10:48

1. AWS VPC 란?

  • AWS VPC (Amazon Virtual Private Cloud)는 사용자가 AWS 클라우드 내에서 전용 가상 네트워크를 구성할 수 있게 하는 서비스이다. 이 네트워크는 타 사용자와 완전히 논리적으로 분리되며, EC2 인스턴스와 같은 여러 AWS 리소스를 안전하게 실행할 수 있는 환경을 제공한다. VPC 내에서는 네트워크를 보다 작은 범위의 서브넷으로 분할해 세밀하게 리소스와 트래픽을 관리할 수 있다.

2. EC2 Classic과 Default VPC

  • EC2 Classic
  • EC2 Classic은 VPC 도입 이전에 사용하던 단일 네트워크 환경이다. 2013년 12월 4일 이후 생성된 계정에서는 지원되지 않으며, 성능과 보안 측면에서 VPC에 비해 열위에 있다. 따라서 기존 EC2 Classic 환경을 사용 중인 경우라도 VPC로의 마이그레이션을 권장한다.
  • Default VPC
  • AWS 계정 생성 시 각 리전에 자동으로 생성되는 VPC이다. EC2 인스턴스 생성 시 별도의 VPC를 지정하지 않으면 기본적으로 이 Default VPC에서 인스턴스가 시작된다. 기본 VPC는 필요에 따라 삭제할 수 있으나, 사용자가 직접 생성할 수는 없고 AWS Support를 통해 관리해야 한다.

3. VPC의 주요 특징과 구성 요소

리전 및 가용 영역

  • 리전(Region)
  • VPC는 리전 기반 서비스로, 각 리전은 지리적 특성, 데이터 주권 및 지연 시간 등을 고려해 선택된다. 하나의 리전은 여러 개의 가용 영역(AZ)을 포함한다.
  • 가용 영역(Availability Zone, AZ)
  • 각 AZ는 물리적으로 독립된 데이터 센터 그룹으로, 전력, 네트워크, 냉각 등이 분리되어 있다. 이를 통해 서비스의 이중화 및 고가용성이 보장된다.

서브넷

  • VPC 내부 서브넷VPC 내에서 논리적으로 분할한 네트워크 영역이다. 전통적인 네트워크 서브넷과는 달리 AWS 서브넷은 특정 AZ에 속하며, 각 서브넷은 고유의 라우팅 테이블과 보안 정책(NACL)을 가진다. 동일 VPC 내에서는 CIDR 범위가 중첩되지 않아야 한다.

CIDR 표기법

  • **CIDR (Classless Inter-Domain Routing)**네트워크 주소를 표현하는 방식으로, IP 주소 뒤에 ‘/’와 숫자를 붙여 상위 네트워크 비트 수를 지정한다. 예를 들어, 10.1.0.0/16은 10.1.0.0부터 10.1.255.255까지의 주소 범위를 의미한다. AWS에서는 VPC 생성 시 16~28비트 프리픽스를 사용하며, 각 서브넷은 VPC의 CIDR 범위를 일부 할당받아 운영된다. 또한, AWS는 서브넷의 전체 IP 범위 중 앞 4개와 마지막 1개 주소를 예약하여 사용하므로, 실제 사용 가능한 IP 수는 전체 범위에서 5개를 뺀 값이다.

라우팅 테이블과 연결 대상

  • 라우팅 테이블라우팅 테이블에는 다음과 같은 대상이 설정된다.
    • 인터넷 게이트웨이 (IGW): 0.0.0.0/0와 같이 외부 인터넷 연결을 위해 지정.
    • VGW, NAT 게이트웨이/인스턴스, VPC Peering: 각기 다른 연결 방식을 통해 내부 네트워크와 외부 또는 다른 VPC와 연결. 하단에 peering 내용 참고.
    라우팅 우선순위는 “가장 구체적인 목적지” 규칙이 우선 적용되도록 구성된다.
  • 각 서브넷에 연결되는 라우팅 테이블은 트래픽이 목적지로 전달되는 경로를 결정한다. 기본 라우팅 테이블은 VPC 생성 시 자동으로 생성되며, 추가적으로 생성하여 서브넷 별로 다른 라우팅 정책을 적용할 수 있다.

서브넷 유형

  • Public Subnet
  • 라우팅 테이블에 IGW가 연결되어 외부 인터넷과 직접 통신할 수 있는 서브넷이다.
  • Private Subnet
  • 직접 인터넷에 노출되지 않으며, NAT 게이트웨이 또는 NAT 인스턴스를 통해 간접적으로 인터넷에 접근한다. 이를 통해 내부 리소스는 외부로부터 보호되면서도 필요한 경우 외부와 통신할 수 있다.
  • 보안 서브넷
  • 주로 민감 정보나 VPN 전용 트래픽을 위해 구성되며, 인터넷 망과 완전히 분리되어 있다. 외부와의 통신은 VPN 등의 보안 터널을 통해 이루어진다.

4. VPC 구성 및 운영 절차

VPC 생성 절차

  1. 리전 선택:
  2. VPC는 리전 단위로 구성되므로, 사용할 리전을 먼저 선택한다.
  3. VPC 생성:
    • CIDR 지정: 사용할 사설 IP 대역을 CIDR 표기법으로 지정한다.
    • VPC 이름 지정: 관리와 구분을 위해 명확한 이름을 부여한다.
  4. 서브넷 생성:
  5. VPC 내에서 각 AZ에 서브넷을 생성하고, CIDR 범위가 겹치지 않도록 할당한다.
  6. 인터넷 게이트웨이 연결:
  7. 외부 인터넷과 통신할 필요가 있는 경우 IGW를 생성하여 VPC에 연결하고, 해당 서브넷의 라우팅 테이블에 IGW 경로를 추가한다.

NAT 인스턴스 및 게이트웨이

  • NAT 인스턴스/게이트웨이 생성
  • Private Subnet 내의 리소스가 인터넷에 접근할 수 있도록 NAT 인스턴스나 NAT 게이트웨이를 생성한다. 이때 보안 그룹 및 내부 방화벽 규칙(IP Masquerade) 설정, 그리고 EC2 인스턴스의 SrcDestCheck 비활성화 등이 필수적으로 진행된다.
  • 라우팅 테이블 수정
  • Private Subnet의 라우팅 테이블에 NAT 대상 경로를 추가하여, 외부로 나가는 트래픽이 NAT 장치를 통해 전달되도록 한다.

VPC Peering 및 VPN 구성

  • VPC PeeringPeering 설정 후, 각 VPC의 라우팅 테이블을 수정해 연결을 명시적으로 구성해야 한다.
  • 동일 리전 또는 다른 계정 간에도 VPC를 직접 연결할 수 있다. 단, Peering은 트랜지티브(transitive)가 지원되지 않으므로, A와 B, 그리고 B와 C가 Peering되어 있다고 해서 A와 C 간 통신이 자동으로 가능한 것은 아니다.
  • AWS VPN 구성
  • 다양한 방식(하드웨어 VPN, Direct Connect, VPN CloudHub, 소프트웨어 VPN 등)을 통해 온프레미스 환경이나 다른 클라우드 네트워크와 안전하게 연결할 수 있다.

5. 보안 관리 및 운영 전략

보안 구성

AWS VPC 보안은 라우팅 테이블, 네트워크 ACL(NACL), 보안 그룹을 함께 사용해 다층 방어 체계를 구축하는 것이 최선의 방법이다.

  • 네트워크 Access Control List (NACL):
  • 서브넷 단위에서 트래픽을 Allow/deny 할 수 있는 규칙을 설정하며, 상태 비저장(stateless) 방식으로 동작한다.
  • 보안 그룹:
  • EC2 인스턴스와 같은 개별 리소스에 적용되며, 상태 저장(stateful) 방식으로 인바운드와 아웃바운드 트래픽을 제어한다.

두 방화벽 방식을 적절히 활용하면 네트워크 보안을 세밀하게 관리할 수 있다.

VPC S3 Endpoint

VPC S3 Endpoint는 VPC 내 리소스가 인터넷을 경유하지 않고도 안전하게 S3에 접근할 수 있도록 하는 기능이다. 이를 통해 데이터 전송 보안을 강화할 수 있다.

  • 주의: presigned url 과는 다름
    • presigned url: 특정 S3 객체에 대해 임시적으로 접근 권한을 부여하기 위해 생성하는 url
    • VPC S3 Endpoint: VPC 내에서 인터넷을 거치지 않고 S3에 안전하게 접근할 수 있도록 하는 네트워크 구성 요소

VPC 운영 전략

서비스의 특성, 테스트 환경, 기능별 요구에 따라 VPC를 분리해 운영할 수 있다. 예를 들어, 웹 서버, 데이터베이스 서버, 관리 서버를 별도의 VPC로 구성하면 문제 발생 시 영향 범위를 제한하고 보안을 강화할 수 있다.