CICD/AWS

[AWS] VPC와 Subent

[dev] hiro 2024. 7. 25. 12:36
해당 포스팅은 AWS 강의실(https://www.youtube.com/@AWSClassroom)를 보고 공부한 내용을 정리한 블로그입니다.

아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
네 자신의 불행을 생각하지 않게 되는 가장 좋은 방법은 일에 몰두하는 것이다.
Ludwig van Beethoven

AWS 서비스 구조


AWS 서비스 구조

  • AWS의 서비스(DDB, S3, CloudWatch)는 public internet으로만 접근이 가능
  • 하지만 VPC는 public internet으로 접근 불가
    • AWS 내부라 하더라도 public internet을 거쳐야 함.

VPC


Virtual Private Cloud(VPC)는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. Amazon EC2인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있습니다. IP 주소 범위와 VPC 범위를 설정하고 서브넷을 추가하고 보안 그룹을 연결한 다음 라우팅 테이블을 구성합니다.
-AWS-
  • 가상의 데이터 센터
  • 외부에 격리된 네트워크 컨테이너 구성 가능
    • 원하는 대로 사설망 구축 가능 => 부여된 IP 대역을 분할하여 사용 가능
  • 리전 단위

VPC 구조

VPC 구조

사용사례

  • EC2, RDS, Lambda등의 AWS의 컴퓨팅 서비스 실행
  • 다양한 서브넷 구성
  • 보안 설정(IP Block, 인터넷에 노출되지 않는 EC2등 구성)

구성 요소

  • 서브넷
    • VPC의 하위 단위로 VPC에 할당된 IP를 더 작은 단위로 분할한 개념
    • 하나의 서브넷은 하나의 가용영역 안에 위치
    • CIDR block range로 IP 주소 지정
    • ex) 10.0.0.0/24라면
      10.0.0.0: Network Address
      10.0.0.1: VPC router
      10.0.0.2: Dns Server
      10.0.0.3: 미래에 사용을 위해 남겨둠
      10.0.0.255: 네트워크 브로드 캐스트 어드레스(AWS에서는 브로드캐스트를 지원하지 않음)
    • 퍼블릭 서브넷: 외부에서 인터넷을 통해 연결할 수 있는 서브넷
      • 인터넷 게이트웨이를 통해 외부의 인터넷과 연결되어 있음.
      • 안에 위치한 인스턴스에 퍼블릭 IP 부여가능
      • 웹서버, 어플리케이션 서버 등 유저에게 노출되어야 하는 인프라.
    • 프라빗 서브넷: 외부에서 인터넷을 통해 연결할 수 없는 서브넷
      • 외부 인터넷으로 경로가 없음
      • 퍼블릭 ip부여 불가능
      • 데이터베이스, 로직 서버 등 외부에 노출될 필요가 없는 인프라.
  • 인터넷 게이트웨이
    • VPC가 외부의 인터넷과 통신할 수 있도록 경로를 만들어주는 리소스
    • 기본적으로 확장성과 고가용성이 확보되어있음
    • IPv4(NAT 역할), IPv6 지원
    • Route Table에서 경로 설정 후에 접근 가능
    • 무료
  • NACL/보안그룹
    보안 그룹은 인스턴스에 대한 인바운드 및 아운바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다.
    • Network Access Control List(NACL)와 함께 방화벽의 역할을 하는 서비스
    • Port 허용
      • 기본적으로 모든 포트는 비활성화
      • 선택적으로 트래픽이 지나갈 수 있는 Port와 Source 설정 가능
      • Deny불가능 → NACL로 가능
    • 인스턴스 단위
      • 하나의 인스턴스에 하나 이상의 SG 설정 가능
      • NACL의 경우 서브넷 단위
      • 설정된 인스턴스는 설정한 모든 SG의 룰을 적용받음
      • 기본 5개 최대 16개
    • 보안 그룹의 stateful
      • inbound로 들어온 트래픽이 별다른 outbound 설정 없이 나갈 수 있음
      • NACL은 stateless
    • 네트워크 ACL(NACL)

Network Access Control List 규칙 순서

  • 보안 그룹처럼 방화벽 역할을 담당
  • 서브넷 단위
  • 포트 및 아이피를 직접 Deny 가능
    • 외부 공격을 받는 상황 등 특정 아이피를 블록 하고 싶을 때 사용
  • 순서대로 규칙 평가(낮은 숫자부터)
  • 규칙
    • 규칙 번호
      • 규칙에 부여되는 고유 숫자이며 규칙이 평가되는 순서(낮은 숫자부터)
        • AWS 추천은 100단위 증가
      • 유형: 미리 지정된 프로토콜. 선택시 AWS에서 잘 알려진 포트가 규칙에 지정됨
      • 프로토콜: 통신 프로토콜(TCP, UDP, SMTP…)
      • 포트 범위: 허용 혹은 거부할 포트 범위
      • 소스 IP 주소의 CIDR 블록
      • 허용/거부: 허용 혹은 거부 여부
  • 라우팅 테이블
    • 트래픽이 어디로 가야할지 알려주는 이정표
    • VPC 생성시 기본으로 하나 제공

NAT Instance

  • NAT Instance/ NAT Gateway
    NAT 게이트웨이는 Amazon Virtual Private Cloud(Amazon VPC)의 프라이빗 서브넷에 있는 인스턴스에서 인터넷에 쉽게 연결할 수 있도록 지원하는 가용성이 높은 AWS 관리형 서비스입니다.
    • private 인스턴스가 외부의 인터넷과 통신하기 위한 경로
    • NAT Instance는 단일 EC2인스턴스 / NAT Gateway는 AWS에서 제공하는 서비스
    • NAT Gateway/Instance는 모두 서브넷 단위
      • Public Subnet에 있어야함.
  • Bastion Host
    외부에서 사설 네트워크에 접속할 수 있도록 경로를 확보해주는 서버 
    • private 인스턴스에 접근하기 위한 EC2 인스턴스
    • public 서브넷에 위치해야함.
  • VPC Endpoint