justkod 2022. 8. 24. 23:24

내가 만든 서비스를 공개 IP를 통해 배포했었는데 이렇게 실 서비스를 배포하게 되면 누구나 우리의 DB를 볼 수 있게 되고 이는 즉 해커의 맛있는 먹잇감이 될 수 있다는 뜻이다. 따라서 이런 보안상의 문제를 해결하기 위해서 Docker와 비슷한 가상환경 VPC를 이용해서 백엔드 서버를 배포하게 되었는데 이 VPC에 대해서 좀 더 자세히 알아보자.


 

VPC?

Virtual Private Cloud(VPC) 네트워크는 Andromeda를 사용하여 Google의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상 버전입니다. VPC 네트워크는 다음을 제공합니다.

Compute Engine 가상 머신(VM) 인스턴스에 대한 연결을 제공하며 여기에는 Google Kubernetes Engine(GKE) 클러스터, App Engine 가변형 환경 인스턴스 및 Compute Engine VM에 내장된 기타 Google Cloud 제품이 포함됩니다.내부 HTTP(S) 부하 분산을 위한 기본 내부 TCP/UDP 부하 분산 및 프록시 시스템을 제공합니다.Cloud VPN 터널 및 Cloud Interconnect 연결을 사용하여 온프레미스 네트워크에 연결합니다.Google Cloud 외부 부하 분산기에서 백엔드로 트래픽을 배포합니다.

프로젝트에는 여러 VPC 네트워크가 포함될 수 있습니다. 이를 금지하는 조직 정책을 만들지 않는 한, 새 프로젝트는 각 리전에 하나의 서브네트워크(서브넷)가 있는 기본 네트워크(자동 모드 VPC 네트워크)로 시작됩니다.

Google Cloud - VCP 가이드

 

 구글 클라우드에서 설명한 VCP 가이드를 살펴보면 대략적으로 VPC가 무엇인지, 어떤 역할을 하는지 감을 잡을 수 있다. 간단하게 설명하자면 일종의 가상 네트워크 센터로서 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 말한다. 이는 GCP에서만 존재하는 개념이 아니라 거의 모든 클라우드 업체에서 제공하는 서비스일 것이다. 이 VPC 위에 우리의 백엔드 서버와 DB 서버를 올리게 되고 각각의 VPC 위에 올라가 있는 두개의 서버를 서로 연결해 주는 과정을 VPC Peering 이라고 한다. VPC는 단순히 보안을 위해서 뿐만 아니라 복잡한 네트워크 관계를 정리해주고 설정을 용이하게 변경할 수 있게 해준다. 왜냐면 각각의 VPC는 서로 완전히 독립된 네트워크처럼 작동하기 때문이다.

VPC를 적용하기 전과 후 (https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098)

 

 로컬에서 백엔드 서버와 DB서버를 띄울때 도커 위에서 DB서버를 올려서 띄웠던 것 처럼, 클라우드 서비스에서 백엔드 서버와 도커를 각각 VPC위에서 띄우는 것과 같다. 그렇다면 VPC 위의 서버끼리 통신할 수 있도록 GCP에서 VPC Peering 설정을 해보자

 

VPC Peering

VPC 피어링을 하는 이유에 대해서는 위에서 충분히 설명했으니 내가 직접 만든 프로젝트에 적용시켜보자. 우선 SQL의 설정을 수정해야한다. 기존에는 공개 IP에 대해서 연결을 허용했지만 이를 비공개 IP로 바꾸어주어야 한다.

 

 

 이때 네트워크 설정을 해주어야 하는데 연결 설정을 클릭하게 되면 옆에 뜨는 설정창에서 API사용 설정을 해준다. IP 범위 할당을 자동으로 할당된 IP 범위 사용 을 선택하고 계속을 누른다. 이렇게 설정된 default 네트워크로 연결설정을 마무리해주면 VPC 설정이 모두 마무리된다. VPC 피어링 시 주의할 점은 각 VPC의 CIDR 대역이 겹치면 안된다는 점이다. 예를들어 192.168.10.0/24 대역과  192.168.10.0/16 대역을 갖고 있는 VPC 간에는 Peering자체가 불가능하다. 그 외에 VPC 피어링은 다른 계정간 생성도 가능하며 다른 리전간에도 생성이 가능하다.

 

https://cloud.google.com/vpc/docs/overview?hl=ko 

https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098