AWS - Private Database 구축하기(1) - VPC, Public Subnet, Private Subnet 개념 이해하기

김영훈·2022년 1월 1일
0

AWS

목록 보기
1/3
post-thumbnail

# Private Subnet Instance & Private Database

  • Private Subnet Instance

    • 외부 인터넷에서 트래픽 전송이 불가능한 서버(EC2 인스턴스, RDS 인스턴스 등)를 의미한다. 외부에서 접속이 허용되지 않기에, 퍼블릭 IP 주소(public IP address)가 존재하지 않는다. 대신, NAT 게이트웨이라는 서비스를 통해 private 서버에서 외부 인터넷으로 요청을 보내는 것이 가능하다. 서버 구축에 필요한 패키지 다운로드가 가능한 것도 그래서다.

    • private subnet instance를 구축하는 이유는 보안의 우수성때문이다. 외부에서의 접근이 차단되기 때문에, DB를 private subnet 내부에서 관리하면 안전하게 데이터를 보관할 수 있다. 실제로, AWS의 데이터베이스 관리 시스템인 RDSprivate subnet 안에 구축하여 사용하는 경우가 많다.

  • Private Database란?

    • 이미 예상했겠지만, private database란 private subnet instance의 한 종류로, private subnet 내부에 구축한 데이터베이스(DB 인스턴스)를 의미한다. 아래 이미지는 RDSprivate DB구축경우를 이해하기 쉽게 도식화시킨 것이다. 이미지 통해 네트워크 환경에서 private DB가 구축되는 전체적인 구조에 대해 알아보자.

# Private Database의 전체 구조 이해하기

  • VPC(Virtual Private Cloud)

    사용자가 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등을 정의하는 가상 네트워킹 환경을 VPC라고 합니다. VPC를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다.

    • VPC의 가장 큰 장점은 사용자가 독립된 자신만의 네트워크 환경을 구성할 수 있다는 점이다. 격리된 네트워크에서 사용자는 EC2, RDS 등의 다양한 리소스를 생성하여 사용할 수 있다.

      위 이미지에서 (1)의 테두리 선이 VPC 네트워크 환경에 해당한다.

      VPC에서 생성된 리소스들은 독립된 네트워크이기 때문에 다른 사용자들이 VPC에 접근(access)이 기본적으로 불가능하다. 하지만 외부 인터넷과의 연결을 가능하게 해주는 방법이 있는데, 바로 인터넷 게이트웨이(Internet Gateway)를 활용하는 것이다.

  • Internet Gateway

    인터넷 게이트웨이는 VPC와 인터넷 간에 통신할 수 있게 해줍니다.

    • 위 이미지의 (2)에 해당하는 인터넷 게이트웨이를 생성한 뒤, VPC에 연결하면 인터넷 게이트웨이가 활성화되면서 외부 인터넷에서 VPC로의 접근이 가능해진다. 주의할 부분은, 인터넷 게이트웨이가 활성화됐다고 해서 VPC 내의 모든 리소스(EC2, RDS 등의 인스턴스)로의 인터넷 연결이 허용되는 것은 아니라는 사실이다. 인터넷 엑세스가 가능하게 하려면 다음과 같은 추가적인 설정이 필요하다. 이 부분은 직접 VPC, 서브넷, 라우팅, 인터넷 게이트웨이를 생성해보면 자연스레 이해되는 부분이니 우선은 참고만 하도록 자.
      • 인터넷 바인딩된 트래픽을 인터넷 게이트웨이로 전달하는 라우팅을 서브넷의 라우팅 테이블에 추가합니다.
      • 서브넷의 인스턴스에 전역적으로 고유한 IP 주소(퍼블릭 IPv4 주소, 탄력적 IP 주소 또는 IPv6 주소)가 있는지 확인합니다.
      • 네트워크 액세스 제어 목록 및 보안 그룹 규칙에서 관련 트래픽이 인스턴스로, 그리고 인스턴스에서 흐르도록 허용되는지 확인합니다
  • Public Subnet

    서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결되는 경우, 이를 퍼블릭 서브넷이라고 합니다.

    • 서브넷은 네트워크를 효율적으로 관리하기 위해 분할된 작은 단위의 네트워크를 말한다. VPC의 경우를 예로 들자면, VPC 내부에서 분할된 일정한 IP 주소의 범위를 의미한다.

      Public Subnet이란 이러한 서브넷 중에서 인터넷 게이트웨이와 연결된 서브넷을 가리키는 것으로 위 이미지의 (3) 테두리에 해당한다. (3) 테두리 내부를 보면, EC2 인스턴스Public Subnet의 리소스로 존재하는 것을 확인할 수 있다.

  • Private Subnet

    서브넷이 인터넷 게이트웨이로 향하는 라우팅이 없는 라우팅 테이블과 연결되는 경우 이를 프라이빗 서브넷이라고 합니다.

    • Public Subnet이란 이러한 서브넷 중에서 인터넷 게이트웨이와 연결되지 않은 서브넷을 가리키는 것으로 위 이미지의 (4) 테두리에 해당한다. (3) 테두리 내부를 보면, RDS 인스턴스Private Subnet의 리소스로 존재하는 것을 확인할 수 있다.

    • Private Subnet은 위에서 언급했던 것처럼, 외부 인터넷에서 접근할 수 없다. Private Subnet 리소스(위 이미지의 RDS 인스턴스)에 접근하려면 Public Subnet의 리소스(위 이미지의 EC2 인스턴스)의 특정 포트 번호를 통해서만 요청이 가능하다.

    • 추가로, 앞서 언급했던 Nat Gateway가 위치하는 곳도 Public Subnet이다. 요약하면, Private Subnet Instance는 Public Subnet에 담긴 Instance와 Nat Gateway를 통해 내부로의 접근과, 내부에서 외부 인터넷으로의 요청이 가능해진다고 볼 수 있다.

    • 이제, 지금까지 알아본 개념을 토대로 다음 글에서 직접 Private DB를 구축해보자!

profile
Difference & Repetition

0개의 댓글