이 페이지에서는 구성된 가상 프라이빗 클라우드(VPC) 외부에서 Cloud SQL 인스턴스에 연결하는 방법을 설명합니다.
시작하기 전에
시작하기 전에 다음 작업을 완료해야 합니다.
- Cloud SQL 인스턴스를 만듭니다.
- 외부 IP 주소 대신 내부 IP 주소를 사용하도록 인스턴스를 구성합니다.
외부 연결 정보
Cloud SQL 인스턴스는 Google 관리형 VPC 내의 여러 노드로 구성됩니다. 인스턴스를 만들 때 VPC 중 하나와 새 인스턴스가 포함된 Google 관리형 VPC 간에 비공개 서비스 액세스 또는 Private Service Connect를 구성합니다. 이 피어링된 연결을 사용하면 내부 IP 주소를 사용하여 인스턴스의 VPC에 있는 리소스를 마치 자체 VPC의 일부인 것처럼 액세스할 수 있습니다.
다음과 같은 경우에는 연결된 VPC 외부에서 인스턴스에 연결합니다.
애플리케이션은 비공개 서비스 액세스 또는 Private Service Connect를 통해 인스턴스에 연결하는 데 사용한 VPC 외부에서 실행됩니다.
애플리케이션이 Google 네트워크 외부에 있는 VPC에서 실행됩니다.
애플리케이션은 공개 인터넷의 다른 곳에 있는 머신에서 실행됩니다.
이 모든 경우에 추가 서비스를 구성하여 Cloud SQL 인스턴스에 대한 이러한 종류의 외부 연결을 사용 설정해야 합니다.
니즈에 따라 외부 연결을 설정하는 데 다음 솔루션을 사용하는 것이 좋습니다.
프로젝트 개발 또는 프로토타입 제작 또는 비교적 저렴한 프로덕션 환경의 경우 VPC 내 bastion이라고도 하는 중간 가상 머신(VM)을 구성합니다. 이 중간 VM을 기반으로 외부 애플리케이션 환경과 Cloud SQL 인스턴스 간의 보안 연결로 변환하는 다양한 방법이 있습니다.
고가용성이 필요한 프로덕션 환경의 경우 Cloud VPN 또는 Cloud Interconnect를 통해 VPC 및 애플리케이션 간에 영구 연결을 설정하는 것이 좋습니다.
다음 섹션에서는 이러한 솔루션에 대해 설명합니다.
중간 VM을 통해 연결
오픈소스 도구와 최소한의 추가 리소스를 사용하여 VPC 외부에서 Cloud SQL 인스턴스에 연결을 설정하려면 해당 VPC 내에 구성된 중간 VM에서 프록시 서비스를 실행합니다. 새 VM을 구성하거나 Cloud SQL 인스턴스의 VPC 내에 이미 실행 중인 VM을 사용할 수 있습니다.
자체 관리형 솔루션으로 중간 VM을 사용하는 것은 일반적으로 네트워크 연결 제품을 사용하는 것보다 비용이 적게 들고 설정 시간이 더 빠릅니다. 또한 연결의 가용성, 보안, 데이터 처리량이 모두 프로젝트의 일부로 유지해야 하는 중간 VM에 따라 달라지는 단점도 있습니다.
IAP를 통해 연결
IAP(Identity-Aware Proxy)를 사용하면 중간 VM의 내부 IP 주소를 노출하지 않고도 Cloud SQL 인스턴스에 안전하게 연결할 수 있습니다. 이 경로를 통한 액세스를 제한하기 위해 방화벽 규칙과 Identity and Access Management(IAM)를 조합하여 사용합니다. 따라서 IAP는 개발 및 프로토타입 제작과 같은 비프로덕션 용도에 적합한 솔루션입니다.
이 다이어그램에서 IAP는 VPC 외부에 있는 외부 클라이언트와 VPC에 있는 중간 VM 사이의 게이트웨이 역할을 합니다. 클라이언트가 IAP에 대한 SSH 터널을 만듭니다. Cloud SQL 인증 프록시는 VM과 Cloud SQL 인스턴스 간의 트래픽을 암호화합니다. 이러한 두 프록시를 통해 클라이언트와 인스턴스 간의 통신이 설정됩니다.
인스턴스에 대한 IAP 액세스를 구성하려면 다음 단계를 수행합니다.
외부 클라이언트에 gcloud CLI를 설치합니다.
중간 VM에서 Cloud SQL 인증 프록시를 다운로드하고 설치합니다.
중간 VM에서 Cloud SQL 인증 프록시를 시작합니다.
VM이 내부 IP 주소로 구성되어 있으므로 Cloud SQL 인증 프록시를 시작할 때
--private-ip
옵션을 제공해야 합니다.Google Cloud 프로젝트에서 IAP TCP 전달을 사용 설정합니다.
새 방화벽 규칙을 정의할 때 포트
22
(SSH)로 들어오는 인그레스 TCP 트래픽을 허용합니다. 자동 입력된default-allow-ssh
규칙이 사용 설정된 프로젝트의 기본 네트워크를 사용하는 경우 추가 규칙을 정의할 필요가 없습니다.IAP를 통한 SSH를 사용하여 외부 클라이언트와 중간 VM 사이에 포트 전달을 구성합니다.
gcloud compute ssh VM_NAME \ --tunnel-through-iap \ --zone=ZONE_NAME \ --ssh-flag="-L 5432:localhost:5432"
다음을 바꿉니다.
- VM_NAME:: VM의 이름입니다.
- ZONE_NAME:: VM과 연결된 영역의 이름입니다.
외부 클라이언트에서
psql
을 사용하여 연결을 테스트합니다.
SOCKS 프록시를 통해 연결
중간 VM에서 SOCKS 서비스를 실행하면 Cloud SQL 인증 프록시에서 제공하는 엔드 투 엔드 암호화를 통해 Cloud SQL 인스턴스에 유연하고 확장 가능한 연결을 제공할 수 있습니다.
SOCKS 프록시를 사용하여 Cloud SQL 인스턴스에 연결하는 방법에 대한 자세한 내용은 중간 프록시(SOCKS5)를 사용하여 연결하기를 참조하세요.
풀러를 통해 연결
외부 클라이언트 대신 중간 VM에 Cloud SQL 인증 프록시를 설치하고 실행해야 하는 경우 이를 풀러라고도 하는 프로토콜 인식 프록시와 연결하여 보안 연결을 활성화할 수 있습니다. PostgreSQL의 널리 사용되는 오픈소스 풀러에는 Pgpool-II 및 PgBouncer가 포함됩니다.
이 솔루션에서는 Cloud SQL 인증 프록시와 풀러를 중간 VM에서 모두 실행합니다. 그러면 클라이언트 또는 애플리케이션이 추가 서비스를 실행할 필요 없이 SSL을 통해 풀러에 직접 안전하게 연결할 수 있습니다. 풀러는 Cloud SQL 인증 프록시를 통해 PostgreSQL 쿼리를 Cloud SQL 인스턴스에 전달합니다.
모든 Cloud SQL 인스턴스에는 별도의 내부 IP 주소가 있으므로 각 프록시 서비스는 기본 인스턴스, 대기 인스턴스, 읽기 풀 중 하나의 특정 인스턴스와만 통신할 수 있습니다. 따라서 모든 인스턴스에서 적절하게 구성된 SSL 인증서를 사용하여 별도의 풀러 서비스를 실행해야 합니다.
Cloud VPN 또는 Cloud Interconnect를 통해 연결
고가용성(HA)이 필요한 프로덕션 작업의 경우 외부 서비스의 요구와 네트워크 토폴로지에 따라 Cloud VPN 또는 Cloud Interconnect와 같은 Google Cloud 네트워크 연결 제품을 사용하는 것이 좋습니다. 그런 다음 적절한 경로를 공지하도록 Cloud Router를 구성합니다.
네트워크 연결 솔루션에 대한 자세한 내용은 네트워크 연결 제품 선택을 참조하세요.
다음 단계
- 비공개 IP 자세히 알아보기
- Google 관리형 VPC의 비공개 서비스 액세스 및 온프레미스 연결에 대해 자세히 알아보기
- Private Service Connect를 사용하여 Cloud SQL 인스턴스에 연결하는 방법 자세히 알아보기