비공개 IP

이 페이지에서는 Cloud SQL에서 비공개 IP를 사용하는 방법을 설명합니다. Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성하는 방법에 대한 단계별 안내는 비공개 IP 구성을 참조하세요.

개요

Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성할 때는 비공개 서비스 액세스를 사용하면 됩니다. 비공개 서비스 액세스는 VPC 네트워크와 Cloud SQL 인스턴스가 상주하는 기본 Google 서비스 VPC 네트워크 사이에서 VPC 피어링 연결로 구현됩니다. 여러 IP 범위를 할당할 수 있더라도 비공개 IP에 사용되는 IP 범위는 항상 Google에서 지정합니다. 비공개 서비스 액세스를 사용하는 IP 트래픽은 공개 인터넷에 노출되지 않습니다. 따라서 공격 벡터가 제한적입니다. 또한 비공개 IP의 네트워크 지연 시간이 공개 IP의 네트워크 지연 시간보다 짧을 수 있습니다.

비공개 서비스 액세스를 사용하면 다음에 연결할 수 있습니다.

  • VPC 네트워크 액세스로 Cloud SQL 리소스에 연결할 수 있습니다.

  • VPN 터널 또는 VPC 네트워크에 대한 Cloud Interconnect를 통해 외부 소스의 Cloud SQL 리소스에 연결할 수 있습니다.

모든 리전에서 비공개 IP를 통해 연결할 수 있습니다. 또한 프로젝트 간 공유 VPC를 통해 연결할 수 있습니다.

다음 다이어그램은 비공개 IP로 구성된 Cloud SQL 인스턴스(DB1 및 DB2)와 동일한 GCP 프로젝트에 있는 Compute Engine 인스턴스(VM1)를 보여줍니다. Cloud SQL 인스턴스의 IP 주소는 비공개 서비스 액세스에 의해 할당된 범위 내에 있으며, 비공개 서비스 연결을 통해 VPC 네트워크에 피어링됩니다.

비공개 IP 구성의 다이어그램 개요. 위에 텍스트로 설명됨

비공개 IP 요구사항

비공개 IP를 사용하려면 네트워크 및 애플리케이션 환경이 다음 요구사항을 충족해야 합니다. 또한 비공개 IP를 처음 설정할 경우에는 추가 IAM 권한이 필요합니다.

네트워크 요구사항

새 VPC 네트워크를 만들 때 네트워크에 대해 할당된 IP 주소 범위를 정의하고 비공개 서비스 연결을 만들어야 합니다. 주소 범위는 Cloud SQL 인스턴스의 IP 주소를 포함하며 프로젝트의 VPC 네트워크의 다른 범위와 겹칠 수 없습니다.

할당된 IP 주소 범위를 정의하면 VPC 네트워크의 커스텀 경로 대상과 서브넷 IP 범위가 비공개 서비스 액세스 연결에서 사용하는 주소 범위와 겹치지 않습니다. 할당된 IP 범위를 직접 만들거나(CIDR 블록을 제어하려는 경우) Google Cloud에서 자동으로 만들도록 할 수 있습니다.

Cloud SQL은 리전 및 데이터베이스 유형의 각 조합에 대해 비공개 서비스 액세스 IP 범위에서 /24 서브넷을 할당합니다. 예를 들어 MySQL 인스턴스를 두 리전에 배치하려면 할당된 IP 주소 범위에 /24 크기의 사용 가능한 서브넷이 2개 이상 필요하며, 두 리전에 MySQL 및 PostgreSQL을 배포하려면 /24 크기의 서브넷 4개가 필요합니다. SQL Server 인스턴스는 한 리전의 MySQL 인스턴스와 동일한 서브넷을 공유할 수 있습니다.

비공개 IP 주소를 사용하는 Cloud SQL 인스턴스에 대한 연결은 RFC 1918 주소 범위에서 자동으로 승인됩니다. 이에 따라 모든 비공개 클라이언트가 프록시를 통하지 않고 데이터베이스에 액세스할 수 있습니다. RFC 1918 이외의 주소 범위는 승인된 네트워크로 구성되어야 합니다.

Cloud SQL은 기본적으로 VPC에서 RFC 1918 이외의 서브넷 경로를 학습하지 않습니다. RFC 1918 이외의 경로를 내보내려면 네트워크 피어링을 Cloud SQL로 업데이트해야 합니다.

애플리케이션 환경 요구사항

  • GKE에서 연결하는 경우 VPC 기반 클러스터에서 GKE 1.8 이상을 실행해야 합니다.

API 및 IAM 요구사항

  • 프로젝트에 Service Networking API를 사용 설정해야 합니다.

    공유 VPC 네트워크를 사용할 경우 호스트 프로젝트에도 이 API를 사용 설정해야 합니다.

  • 비공개 서비스 액세스를 사용 설정하려면 compute.networkAdmin IAM 역할이 필요합니다.

    공유 VPC 네트워크를 사용하는 경우 호스트 프로젝트의 사용자에게 compute.networkAdmin 역할도 할당해야 합니다.

    네트워크에 비공개 서비스 액세스가 설정되면 인스턴스에서 비공개 IP를 사용하도록 구성할 때 compute.networkAdmin IAM 역할이 더 이상 필요하지 않습니다.

보안

비공개 서비스 액세스를 통한 트래픽에는 특정 수준의 암호화가 제공됩니다. 자세한 내용은 Google Cloud의 가상 네트워크 암호화 및 인증을 참조하세요.

비공개 IP를 사용하여 연결하도록 Cloud SQL 프록시를 구성할 수 있습니다. 이 프록시는 IAM 사용자 인증 정보를 사용한 인증과 순환식 SSL/TLS 인증서를 사용한 엔드 투 엔드 암호화를 제공합니다.

보안 요구사항에 따라 개발자가 관리하는 자체 관리형 SSL/TLS 인증서가 필요한 경우 SSL/TLS 구성의 안내를 참조하세요.

비공개 IP 주소를 사용하여 각 인스턴스에 하나의 VPC 네트워크를 만들면 '기본' VPC 네트워크에 모든 인스턴스를 넣는 것보다 네트워크 격리가 향상됩니다.

네트워크에 대한 비공개 서비스 액세스 설정 개요

특정 VPC 네트워크에서 비공개 IP 연결을 처음 구성할 경우에는 일회성 절차를 수행하여 Cloud SQL의 비공개 서비스 액세스를 설정해야 합니다.

비공개 서비스 액세스를 설정한 후에는 비공개 IP를 사용하도록 구성된 Cloud SQL 인스턴스를 만들거나 기존 Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성할 수 있습니다. 단계별 안내는 비공개 IP 구성을 참조하세요.

비공개 IP 주제 빠른 참조

비공개 IP를 사용하여 Cloud SQL 인스턴스를 관리할 때는 다음 주제가 중요할 수 있습니다.

주제 토론
공유 VPC 네트워크 공유 VPC 네트워크에서 비공개 IP 주소로 Cloud SQL 인스턴스를 만들 수 있습니다. 하지만 공유 VPC 네트워크의 비공개 IP 주소를 기존 Cloud SQL 인스턴스에 할당할 수는 없습니다.
리전 리전 간 비공개 IP를 통해 연결할 수 있습니다.
기존 네트워크 기존 네트워크에서 Cloud SQL 인스턴스의 비공개 IP에 연결할 수 없습니다. 기존 네트워크는 VPC 네트워크 피어링 또는 비공개 서비스 액세스를 지원하지 않습니다.
비공개 IP 삭제 Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성한 후에는 이 인스턴스에서 비공개 IP 기능을 삭제할 수 없습니다.
공개 IP와 비공개 IP 공개 IP와 비공개 IP를 모두 사용하여 동일한 Cloud SQL 인스턴스에 연결할 수 없습니다. 한 연결 방법은 다른 연결 방법에 영향을 주지 않습니다.
기존 Cloud SQL 인스턴스 인스턴스를 만들 때 인스턴스에서 비공개 IP를 사용하도록 구성할 수 있습니다. 또한 기존 인스턴스에서 비공개 IP를 사용하도록 구성할 수 있습니다. 기존 인스턴스에서 비공개 IP를 사용하도록 구성하거나 인스턴스가 연결된 네트워크를 변경하면 인스턴스가 다시 시작되어 다운타임이 몇 분 동안 발생합니다.
고정 IP 주소 Cloud SQL 인스턴스의 비공개 IP 주소는 고정되어 있으며 변경되지 않습니다.
복제본 복제본은 기본 인스턴스로부터 비공개 IP 상태를 상속받습니다. 복제본에서 직접 비공개 IP를 구성할 수 없습니다.
Cloud Run Cloud Run에서는 비공개 IP를 사용할 수 없습니다.
Cloud SQL 프록시 비공개 IP를 사용하여 Cloud SQL 인스턴스에 연결하려면 프록시가 인스턴스와 동일한 VPC 네트워크에 액세스할 수 있는 리소스에 있어야 합니다. 인스턴스에 두 IP 유형이 모두 사용 설정되어 있으면 기본적으로 프록시에 공개 IP가 사용됩니다. 비공개 IP가 사용되도록 하려면 -ip_address_types=PRIVATE 플래그를 프록시에 전달해야 합니다. 자세히 알아보기
VPC 네트워크 피어링 비공개 서비스 액세스를 사용하는 연결에는 VPC 네트워크 피어링이 필요합니다. 하지만 VPC 네트워크 피어링은 Google Cloud 내부 피어링이므로 개발자가 이를 명시적으로 만들지 않습니다. 비공개 서비스 액세스 연결을 만든 후에는 Cloud Console의 VPC 네트워크 피어링 페이지에서 기본 VPC 네트워크 피어링을 확인할 수 있으나 비공개 연결을 삭제하려는 경우가 아니라면 이를 삭제하지 마세요.

VPC 네트워크 피어링 자세히 알아보기

VPC 서비스 제어 VPC 서비스 제어는 데이터 무단 반출 위험을 줄일 수 있습니다. VPC 서비스 제어를 사용하면 Cloud SQL 인스턴스 주위에 경계를 만듭니다. VPC 서비스 제어는 경계 내부의 리소스에 대한 외부 액세스를 제한합니다. 경계 내의 클라이언트와 리소스만 서로 상호작용할 수 있습니다. 자세한 내용은 VPC 서비스 제어 개요를 참조하세요. VPC 서비스 제어 사용 시 Cloud SQL 제한사항도 참조하세요. Cloud SQL에서 VPC 서비스 제어를 사용하려면 VPC 서비스 제어 구성을 참조하세요.
임시 피어링 직접 피어링된 네트워크만 통신할 수 있습니다. 전환 피어링은 지원되지 않습니다. 즉, VPC 네트워크 N1이 N2 및 N3과 피어링되었지만 N2와 N3이 직접 연결되지 않은 경우 VPC 네트워크 N2는 VPC 네트워크 피어링을 통해 VPC 네트워크 N3과 통신할 수 없습니다.

다른 Google Cloud 프로젝트의 Cloud SQL 인스턴스는 공유 VPC 네트워크를 사용하여 서로 연결할 수 있습니다.

Cloud SQL 인스턴스 이동 Cloud SQL 인스턴스는 자신이 있는 프로젝트에서 소유한 네트워크 사이에서만 이동할 수 있습니다. 또한 Cloud SQL 인스턴스는 프로젝트 사이에서 이동할 수 없을 뿐더러 여러 프로젝트에서 호스팅된 네트워크 사이에서도 이동할 수 없습니다.

다음 단계