GCP의 Private Service Connect(PSC)는 VPC 네트워크 내부의 사설 IP 주소로 GCP의 관리형 서비스 또는 VM등에 배포된 LB 기반 서비스)에 대한 액세스를 구현하는 Google Cloud Networking 기능입니다. 이를 활용하면 서비스를 개시하는 프로듀서(Producer)는 이 서비스가 구성되어 있는 VPC 네트워크를 VPC Peering 또는 Cloud VPN 과 같은 직접적인 VPC간 연결을 구성하지 않고도 소비자(Consumer,클라이언트에 해당)에게 비공개(=사설 IP 통신) 연결을 제공할 수 있습니다.

[PSC 연결 개요]
예를 들어 PSC를 사용하여 Cloud SQL과 같은 관리형 DB 서비스를 이용할 경우, Google Tenant측의 Cloud SQL이 서비스 Producer이며, 고객의 DB 클라이언트가 위치한 VPC측이 Consumer에 해당됩니다.
PSC를 이용한 연결은 VPC 내부 네트워크를 벗어나지 않는 사설 IP간 연결이므로, 해당 트래픽은 전적으로 Google Cloud 내에 유지되어 보편적인 사설 통신 요구사항을 충족시킬 수 있습니다. PSC를 통해 연결 가능한 서비스의 종류는 아래와 같습니다.
- Google 측 프로듀서 서비스
- Google API(예: Cloud Storage 또는 BigQuery)
- Google 관리형 서비스(예: Apigee 또는 GKE Control Plane, Memorystore Redis Cluster 등)
- Private Service Connect 파트너가 제공하는 3rd Party 서비스
- 고객 GCP Organization 내에 VPC에 부하분산기를 통해 게시된 서비스
2. Private Service Connect의 특성
프로듀서측 서비스는 PSC Endpoint로 불리는 VPC 네트워크의 사설 IP 주소를 통해 소비자 VPC 네트워크에 생성됩니다. 해당 IP를 통해 소비자에서 프로듀서쪽으로 단방향 연결만이 가능하며, VPC간 Peering이 아니므로 프로듀서 VPC 네트워크에 대한 전체 통신 가능이 아닌 오직 PSC Endpoint IP 통해 게시된 프로듀서측의 해당 서비스에만 액세스할 수 있습니다.

[PSC 연결 방식 상세 구조도]
이때 프로듀서 측의 서비스에 도달하는 소비사측의 클라이언트 IP는 PSC 구성시 필요로 하게되는 PSC전용 서브넷 대역의 IP로 Source NAT 되어 프로듀서측의 서비스(위의 구성도 사례에서는 Load Balancer)에 도달하게 됩니다.
따라서 프로듀서측에서 VPC 방화벽등의 IP 수준의 접근제어가 이루어 지고 있는 경우 PSC전용 서브넷 대역의 IP 대역을 허용 조치해주어야 만합니다. 다만 프로듀서측의 PSC가 프록시 기반 부하분산기를 사용하고 있을 경우, PSC 전용 서브넷을 통해 SNAT된 소비자의 연결은 부하분산기를 경유하면서 다시 Source IP가 부하분산기의 프록시 IP 범위로 변경되는 것을 주의하여야 합니다.
이러한 NAT 기반 연결 특징으로 인해 소비자와 프로듀서 VPC 네트워크 간 IP 주소 조정이나 다른 종속 항목이 없으므로 설정을 간소화하고 관리형 서비스를 보다 쉽게 확장할 수 있게 해줍니다. 또한 PSC 트래픽은 프록시 연결이 아닌 클라이언트에서 프로듀서 백엔드까지 소비자 및 프로듀서 VM을 호스팅하는 물리적 호스트 머신에서 직접 NAT가 수행되므로 저 지연과 높은 대역폭을 지원합니다. 참고로 PSC의 대역폭은 통신하는 클라이언트 및 서버 머신의 대역폭 용량에 의존합니다.
마지막으로 Private Service Connect는 소비자 및 프로듀서에게 세밀한 제어 기능을 제공하는 승인 방식을 기본으로 제공하며, Organization Policy 와 조직 수준의 정책을 통해 추가적인 보안 조치를 강제할 수 있습니다.
3. Private Service Connect 구성 예시
아래의 구성 예시는 프로듀서측 VPC 네트워크에 부하분산기를 통해 직접 구성된 서비스를 기반으로 PSC 를 구성하는 방식을 안내합니다. 만약 부하분산기 기반이 아닌 Google API 또는 Google 관리형 서비스를 대상으로 PSC를 구성하는 방식이라면 3번째 단계부터 진행할 수 있습니다.
1. 프로듀서측 VPC 네트워크에서 PSC 전용 서브넷의 생성
NAT 기반 연결 특징으로 인해 다수의 소비자 프로젝트를 단일 프로듀서측의 서비스에 연결하는 구성이라면 프로듀서측 PSC 전용 서브넷의 IP 범위를 충분히 확보해줄 필요가 있습니다.

[서브넷 생성 화면]
2. 프로듀서측 프로젝트에서 PSC 서비스(Service Attachment) 생성
프로듀서측 VPC 네트워크에 구성된 3가치 타입의 부하분산기를 기반으로 Service Attachment를 생성할 수 있습니다. 생성시, 소비자측 프로젝트의 PSC 연결 요청을 수용하는 방식(Connection Preference)를 정의할 수 있으며, 일반적으로 관리자가 개별적으로 연결 요청을 수락하는 방식(Accept Connections for selected projects)를 사용합니다.

[PSC Service – Service Attachment 생성화면]

[PSC Service 생성 완료 화면]
3. 소비자측 프로젝트에서 PSC Endpoint 생성
소비자측 VPC 네트워크에서 정의한 사설 IP와 PSC Endpoint 를 생성합니다. 이때 앞서 단계에서 생성한 Service Attachment 정보인 Target Service 항목을 필요로 합니다.만약 Google 관리형 서비스라면 해당 서비스측에서 제공하는 Service Attachment 주소를 입력할 수 있으며, GCP API를 연결하고자 한다면 Target 항목에서 Google APIs를 선택할 수 있습니다.

[PSC Endpoint 구성 화면]
4. 프로듀서측 프로젝트에서 연결 요청 수락
최종적으로 프로듀서측 PSC 서비스 항목에서 소비자측의 연결 요청을 수락하면 해당 시점부터 소비자측 VPC의 리소스는 Endpoint IP를 통해 해당 서비스에 연결이 가능해집니다.

[프로듀서측 허용 조치]
4. Private Service Connect의 활용
PSC는 VPC 네트워크간 직접적인 연결 없이 서비스 게시자와 클라이언트간 사설 IP 연결을 가능하게 합니다. 이를 활용하면 VPC간 Peering이나 Cloud VPN과 같은 VPC간 연결 없이 서비스 단위로 프로젝트에 연결할 수 있으며, 별도의 프록시나 NAT 수단 없이 관리자가 지정한 Endpoint IP로 해당 연결을 구현할 수 있습니다.
또한 소비자측의 PSC Endpoint는 VPC와 연결된 온프레미스 환경과의 연결을 지원하며, 프로듀서측 또한 부하분산기를 통해 연결되는 서비스에 온프레미스를 연결할 수 있습니다. 이를 활용하면 IP범위와 같은 제약사항으로부터 비교적 자유로우면서 다양한 연결 요구사항을 만족시키는 네트워크 아키텍처 구현이 가능합니다.

[PSC를 이용한 VPC 네트워크 구성 사례]