AWS - VPC와 개념 공부

zooju·2022년 11월 17일
1
post-thumbnail
post-custom-banner

이전에 프로젝트를 진행하면서, AWS 아키텍처를 좀 더 정교하게 짜지 못해서 아쉽다고 생각했다. 그렇기에, 새로운 프로젝트를 들어가는 지금 AWS 아키텍처를 조금 더 공부해서 VPC - subnet - CICD 세가지를 추가로 적용해서 개발해보고자 한다. (추후에 Auto Scaling도 추가하고 싶다) 좀 더 공부해서 좋은 아키텍처를 기반으로 스프링 프로젝트를 진행해야지!!!!

AWS VPC

VPC란?

개념

  • Virtual Private Cloud
  • AWS 클라우드에서 논리적으로 격리된 공간을 프리비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있다. IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있음.
  • 가상 네트워크 센터!
💡 VPC는 하나의 사설 IP를 보유하고 있다. 여기 안에서 서브넷을 생성하여 사설 IP 대역 일부를 분배한다. 주로 회사마다 VPC가 있고, 그 회사 내에서 프로젝트별로 서브넷이 있는 구조!

종류

  • Default VPC
    • 계정 생성시 자동으로 셋업 되어 있음(모든 리전에)
    • 모든 서브넷의 인터넷 접근이 가능함
    • EC2가 퍼블릭 IP와 프라이빗 IP 모두 가지고 있음
    • 삭제시 복구 불가
  • Custom VPC
    • 새로 만들어야 함
    • private IP 만 가지고 있음
    • Default VPC의 특징을 가지고 있지 않음

VPC로 할 수 있는 것들

  • EC2 실행 가능
  • 서브넷을 구성 가능
  • 보안 설정(IP block, 인터넷에 노출되지 않은 EC2 구성 - 예시: DB) 가능
  • VPC Peering 가능
    • VPC간의 연결
    • 원래대로면 자기네 EC2는 자기네 VPC 안에서만 연결할 수 있음
    • 참고: Transitive Peering은 불가능! (중계 VPC 불가)
  • VPC Flow Log: VPC의 로그를 CloudWatch에 저장 가능
  • IP 대역 지정 가능
  • 한 Region에 하나! (다른 Region으로 확장 불가능)

VPC의 구성 요소

  1. Availability Zone
  2. Internet Gateway
  3. Route Table
  4. NACL (Network Access Control List)
  5. Security Group
  6. EC2
  7. subnet
  8. NAT gateway
  9. Bastion host

서브넷이란?

VPC내에 생성된 분리된 네트워크로, 하나의 AZ에 연결되어 있다.

VPC가 가지는 사설 IP 범위에서 서브넷을 쪼개서 사용한다.

EC2나 RDS는 이 서브넷 내에서 생성되고 사설 IP가 할당된다(private한 상태) 여기서 필요에 따라 공인 IP를 부여한다.

💡 **서브넷 중, 인터넷 게이트웨이로 라우팅 되는 경우 public Subnet이 된다. 인터넷 게이트웨이로 라우팅 되지 않는 경우, private Subnet이 된다.**

서브넷은 라우팅 테이블과 하나의 NACL을 가진다.

ENI(Elastic Network Interface) - EC2 level

VPC 내의 EC2 인스턴스에 붙는 가상 인터페이스를 의미한다.

VPC내의 리소스는 ENI와 사설 IP를 기본적으로 할당받는다.

StateFul! :보안 그룹은 ENI에 설정되고, 인바운드를 허용해주면 아웃 바운드 포트들은 자동적으로 allow 처리가 된다.

NACL(Network Access Control List) - subnet level

서브넷 레벨의 접근 제어로, VPC 내부에 생성한 서브넷 네트워크에 대한 접근 제어를 해준다.

StateLess! : 아웃바운드 규칙을 허용할지 거부할지 결정할 수 있음

NACL이 ENI 보안 그룹 규칙보다 더 우선된다.

라우팅 테이블

라우팅 테이블에는 0개 이상의 서브넷이 연결될 수 있으며, 서브넷은 최대 1개의 라우팅 테이블에만 연결할 수 있다.

라우팅 테이블을 따로 연결하지 않은 서브넷은 default 라우팅테이블에 비 명시적으로 연결된다고 한다.

예시1)

  • 172.16.0.0/24: local로 연결된다(VPC 내부 통신을 위한 로컬 라우팅!) → 모든 라우팅 테이블에!
  • 그 외 모든 목적지: internet gateway로 연결된다(이렇게 하면 public subnet이 되는 것 같다)

EC2등의 리소스가 외부 인터넷과 통신하고자 할 경우 조건

  1. Internet 통신하고자 하는 Resource가 공인 IP를 보유할 것
  2. Resource가 소속된 Subnet의 Routing Table에 ‘0.0.0.0/0’ 목적지로 갖는 Routing ‘Internet gateway’가 있을 것
  3. Network ACL과 Security Group 규칙에서 허용할 것

Public subnet VS Private subnet

  • IGW와 연결된 라우팅 테이블에 연결된 서브넷: Public subnet
  • IGW와 연결되지 않은 라우팅 테이블에 연결된 서브넷: Private subnet

profile
이것 저것 새로운 분야에 관심이 많은 서버 개발자
post-custom-banner

0개의 댓글