VPC, 서브넷, 보안그룹의 개념을 배우고 예시와 실제 사례로 알아보기

June·2024년 12월 1일
0

1. VPC (Virtual Private Cloud)

VPC - AWS에서 제공하는 가상 네트워크

  • VPC는 AWS 클라우드 내에서 사용자만의 독립적인 네트워크 공간을 제공합니다.
  • 데이터센터의 네트워크를 AWS 위에 구축한다고 생각할 수 있습니다.

주요 특징

  • 격리된 환경: 각 VPC는 기본적으로 다른 VPC나 인터넷과 격리되어 있습니다.
  • 커스터마이징 가능:
    • 라우팅 테이블 NAT 게이트웨이 인터넷 게이트웨이 등 네트워크 설정을 자유롭게 구성할 수 있습니다.
  • 인터넷 연결 여부:
    • 퍼블릭 서브넷을 통해 인터넷과 연결할 수 있습니다.
    • 반대로 프라이빗 서브넷은 외부와 격리된 내부 네트워크로 설정할 수 있습니다.

VPC 설정의 기본 요소

  • CIDR 블록: VPC의 IP 주소 범위를 지정하고 범위 내에서 IP 주소를 분배합니다. (예: 10.0.0.0/16)
  • 인터넷 게이트웨이: VPC를 외부 인터넷과 연결하기 위해 사용됩니다.
  • 라우팅 테이블: 트래픽 경로를 정의합니다. 어떤 서브넷이 인터넷 게이트웨이를 사용할지 등을 설정합니다.

2. 서브넷 (Subnet)

VPC를 더 작은 네트워크로 나누는 것

  • 서브넷은 VPC 내에서 더 세분화된 IP 주소 범위를 가진 네트워크 구간입니다.
  • 서브넷은 하나의 가용 영역(AZ Availability Zone)에 속하며 AWS 리소스를 특정 AZ에 배치하는 데 사용됩니다.
    • 예: us-east-1a, us-east-1b
  • 서브넷을 통해 AWS 리소스(예: EC2, RDS)의 네트워크 위치를 지정합니다.

퍼블릭 서브넷 vs 프라이빗 서브넷

  • 퍼블릭 서브넷: 인터넷 게이트웨이와 연결되어 있어 인터넷 액세스가 가능합니다.
  • 프라이빗 서브넷: 인터넷에 직접 연결되지 않고 내부 네트워크 통신에 사용됩니다.
    • NAT 게이트웨이를 통해 아웃바운드 트래픽만 허용할 수도 있습니다.

서브넷의 주요 역할

  1. 리소스 위치 지정: EC2, RDS, ElastiCache 등 AWS 리소스를 특정 서브넷에 배치합니다.
  2. 가용성 관리: 여러 가용 영역에 걸쳐 서브넷을 설정하여 고가용성을 보장합니다.
  3. 네트워크 세분화: 리소스 간 네트워크 경로를 세분화하여 성능을 최적화하고 보안을 강화합니다.

3. 보안 그룹 (Security Group)

AWS 리소스의 방화벽 역할

  • 보안 그룹은 VPC 내 리소스(예: EC2 인스턴스)에 대한 트래픽 제어를 담당합니다.
  • 보안 그룹은 허용(Inbound/Outbound Rules) 규칙만 적용하며 차단(Deny) 규칙은 없습니다.
    • 모든 트래픽이 기본적으로 차단되고 허용된 트래픽만 통과합니다.
  • 상태 기반 방화벽(Stateful)으로 작동합니다:
    • Inbound 규칙으로 들어오는 트래픽이 허용되면 Outbound는 자동으로 허용됩니다.

주요 구성

  • 인바운드 규칙: 어떤 트래픽을 인스턴스로 허용할지 설정합니다.
    • 예: TCP 80 (HTTP) 트래픽을 모든 IP로부터 허용
  • 아웃바운드 규칙: 인스턴스에서 나가는 트래픽을 제어합니다.
    • 예: 모든 아웃바운드 트래픽 허용

4. 전체적인 관계

VPC > 서브넷 > 보안 그룹

  1. VPC는 네트워크의 큰 틀을 제공합니다.
  2. 서브넷은 VPC를 더 세분화하여 리소스를 가용 영역에 배치하거나 퍼블릭/프라이빗 서브넷으로 나눕니다.
  3. 보안 그룹은 각 서브넷이나 리소스에 적용되는 트래픽 규칙을 정의합니다.

5. 비유로 설명

VPC: 아파트 단지

  • 아파트 단지 전체를 하나의 VPC로 생각할 수 있습니다.
  • 단지는 외부와 격리된 공간이며 입구(게이트)를 통해 단지에 들어오거나 나갈 수 있습니다.

서브넷: 각 동

  • 단지 안에 여러 동이 존재합니다. 이 동이 바로 서브넷입니다.
  • 각 동은 특정 구역(AZ) 안에 속하고 동마다 용도가 다를 수 있습니다.
    • 퍼블릭 서브넷은 단지 입구와 연결된 동(인터넷 연결 가능)
    • 프라이빗 서브넷은 단지 내부 전용 동(외부 연결 제한)

보안 그룹: 각 세대의 현관문

  • 각 아파트 세대의 현관문 역할을 합니다.
  • 누가 들어올 수 있고 나갈 수 있는지 세대별로 설정할 수 있습니다.

6. 예시: 간단한 구성

  1. VPC 생성: CIDR 블록 10.0.0.0/16 설정
  2. 서브넷 생성:
    • 퍼블릭 서브넷: CIDR 10.0.1.0/24 인터넷 게이트웨이 연결
    • 프라이빗 서브넷: CIDR 10.0.2.0/24 NAT 게이트웨이 사용
  3. 보안 그룹 설정:
    • 웹 서버용 보안 그룹: 포트 80443 인바운드 허용
    • 데이터베이스용 보안 그룹: 프라이빗 서브넷 내 IP만 접근 허용

7. 실제 시나리오로 이해하기

1) EC2와 RDS의 네트워크 설정

  • VPC 구성: EC2와 RDS를 같은 VPC에 배치합니다.
  • 서브넷 배치:
    • EC2는 퍼블릭 서브넷에 배치합니다(인터넷 연결 필요)
    • RDS는 프라이빗 서브넷에 배치합니다(보안 강화를 위해 외부 연결 차단)
  • 보안 그룹 설정:
    • EC2에서 RDS로의 DB 연결 트래픽만 허용합니다(3306 포트)
    • RDS는 인터넷에서 접근할 수 없도록 설정합니다.

2) CloudFront와 VPC

  • CloudFront는 VPC 외부에 있습니다:
    • CloudFront는 AWS의 글로벌 콘텐츠 배포 네트워크(CDN) 서비스로 엣지 로케이션에서 작동하며 VPC와 독립적으로 운영됩니다.
  • CloudFront 오리진 설정:
    • CloudFront는 S3 버킷과 EC2를 콘텐츠 오리진으로 설정할 수 있습니다.
    • 이때 S3 버킷은 퍼블릭 액세스를 허용하지 않아도 되고 VPC 엔드포인트를 통해 제한된 네트워크 내에서 접근할 수 있습니다.
    • 오리진 액세스 컨트롤(OAC)을 사용하면 CloudFront를 통해서만 S3 버킷에 접근할 수 있도록 추가적인 보안을 설정할 수 있습니다.
    • EC2도 CloudFront로 특정 경로를 통해 오는 요청(ex /api/*)를 패턴을 설정하여 EC2로 요청하도록 설정할 수 있습니다.
  • VPC와 S3의 관계
    • S3는 AWS 리소스이며 VPC에 직접 포함되지 않습니다. 하지만 VPC 엔드포인트(Gateway Endpoint)를 설정하면 VPC 내 리소스가 인터넷 게이트웨이 없이도 S3에 접근할 수 있습니다.
    • 예를 들어 EC2 인스턴스가 프라이빗 서브넷에 위치해 있어도 VPC 엔드포인트를 통해 S3 버킷과 통신할 수 있습니다.

3) ElastiCache와 VPC

  • 같은 VPC에 존재해야 합니다:
    • ElastiCache는 외부에서 접근할 수 없으므로 같은 VPC 내에서만 접근 가능합니다.
  • 서브넷 그룹 설정:
    • ElastiCache를 배포할 서브넷을 정의하여 가용 영역과 네트워크 경로를 지정합니다.
    • EC2와 가까운 서브넷에 배치하면 성능이 최적화됩니다.
profile
😊

0개의 댓글