비공개 IP 구성

이 페이지에서는 Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성하는 방법을 설명합니다.

비공개 IP의 작동 방식과 환경, 관리 요구사항은 비공개 IP를 참조하세요.

시작하기 전에

API 및 IAM 요구사항

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

  • 비공개 서비스 액세스 연결을 관리하려면 사용자에게 다음 IAM 권한이 있어야 합니다. 필요한 권한이 없으면 권한 부족 오류가 발생할 수 있습니다.
    • compute.networks.list
    • compute.addresses.create
    • compute.addresses.list
    • servicenetworking.services.addPeering

    또한 공유 VPC 네트워크를 사용하는 경우 사용자를 호스트 프로젝트에 추가하고 호스트 프로젝트에서 사용자에게 동일한 권한을 할당해야 합니다.

비공개 서비스 액세스

프로젝트에서 새 VPC 네트워크를 만들 때는 비공개 서비스 액세스를 구성하여 IP 주소 범위를 할당하고 비공개 서비스 연결을 만들어야 합니다. 그러면 VPC 네트워크의 리소스를 Cloud SQL 인스턴스에 연결할 수 있습니다. Console은 이 구성을 설정하는 데 도움이 되는 마법사를 제공합니다.

비공개 IP를 사용하도록 인스턴스 구성

인스턴스를 만들 때 또는 기존 인스턴스에 비공개 IP를 사용하도록 Cloud SQL 인스턴스를 구성할 수 있습니다.

새 인스턴스에 비공개 IP 구성

Cloud SQL 인스턴스를 만들 때 이 인스턴스에서 비공개 IP를 사용하도록 구성하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 구성 옵션 표시를 펼칩니다.
  4. 연결을 펼칩니다.
  5. 비공개 IP를 선택합니다.

    드롭다운 목록에 프로젝트에서 사용할 수 있는 VPC 네트워크가 표시됩니다. 프로젝트가 공유 VPC의 서비스 프로젝트이면 호스트 프로젝트의 VPC 네트워크도 표시됩니다.

  6. 사용할 VPC 네트워크를 선택합니다.
  7. 비공개 서비스 연결을 설정해야 한다는 메시지가 표시되면 다음을 수행합니다.

    1. 연결 설정을 클릭합니다.
    2. IP 범위 할당 섹션에서 다음 옵션 중 하나를 선택합니다.
      • 하나 이상의 기존 IP 범위를 선택하거나 드롭다운에서 새 범위를 만듭니다. 드롭다운에 이전에 할당된 범위(있는 경우)가 포함되거나 새 IP 범위 할당을 선택하고 새 범위와 이름을 입력할 수 있습니다.
      • 네트워크에 자동으로 할당된 IP 범위를 사용합니다.
    3. 계속을 클릭합니다.
    4. 연결 만들기를 클릭합니다.
    5. Private service connection for network VPN_NAME has been successfully created 메시지가 표시되는지 확인합니다.
  8. 필요한 경우 연결에 사용할 인스턴스에 할당된 IP 범위를 지정할 수 있습니다.
    1. 할당된 IP 범위 옵션 표시를 펼칩니다.
    2. 드롭다운 메뉴에서 IP 범위를 선택합니다.
  9. 인스턴스 구성을 완료합니다.
  10. 인스턴스 만들기를 클릭합니다.

gcloud

프로젝트가 비공개 서비스 액세스를 위해 구성되었는지 확인합니다.

--network 매개변수를 사용하여 선택한 VPC 네트워크의 이름을 지정하고 --no-assign-ip 플래그를 사용하여 공개 IP를 중지해 Cloud SQL 인스턴스를 만듭니다.

--network 매개변수 값의 형식은 projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME입니다. PROJECT_ID는 VPC 네트워크의 프로젝트 ID입니다. VPC 네트워크가 공유 VPC이면 공유 VPC 호스트 프로젝트 ID여야 합니다.

필요한 경우 --allocated-ip-range-name 매개변수를 사용하여 비공개 주소 범위 이름을 지정합니다. 이 플래그를 지정하면 할당된 범위 이름이 설정되고 기본 인스턴스에 비공개 주소 범위가 생성됩니다. 예를 들면 google-managed-services-default입니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63(영문 기준)자 이내여야 합니다. (gcloud alpha sql instances create).

VPC 네트워크가 공유 VPC이면 다음 gcloud 명령어에서 PROJECT_ID는 공유 VPC 서비스 프로젝트의 ID여야 합니다.

gcloud beta sql instances create INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip \
--allocated-ip-range-name=RANGE_NAME

REST v1

비공개 IP 주소로 새 인스턴스를 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID
  • vpc-name: 인스턴스에 사용할 VPC 네트워크의 이름
  • allocated-ip-range: 선택사항. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63자(영문 기준) 이내여야 합니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances

JSON 요청 본문:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/project-id/global/networks/vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

REST v1beta4

비공개 IP 주소로 새 인스턴스를 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID
  • vpc-name: 인스턴스에 사용할 VPC 네트워크의 이름
  • allocated-ip-range: 선택사항. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63자(영문 기준) 이내여야 합니다.

HTTP 메서드 및 URL:

POST https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances

JSON 요청 본문:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "projects/project-id/global/networks/vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

기존 인스턴스에 비공개 IP 구성

기존 Cloud SQL 인스턴스에서 비공개 IP를 사용하도록 구성하면 해당 인스턴스가 다시 시작되므로 다운타임이 발생합니다.

비공개 IP를 사용하도록 기존 인스턴스를 구성하려면 다음 안내를 따르세요.

Console

  1. Google Cloud Console에서 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스로 이동

  2. 인스턴스 이름을 클릭하여 개요 페이지를 엽니다.
  3. SQL 탐색 메뉴에서 연결을 선택합니다.
  4. 비공개 IP 체크박스를 선택합니다.

    드롭다운 목록에 프로젝트에서 사용할 수 있는 네트워크가 표시됩니다.

  5. 사용할 VPC 네트워크를 선택합니다.
  6. 비공개 서비스 연결 필요가 표시되는 경우:

    1. 연결 설정을 클릭합니다.
    2. IP 범위 할당 섹션에서 다음 옵션 중 하나를 선택합니다.
      • 하나 이상의 기존 IP 범위를 선택하거나 드롭다운에서 새 범위를 만듭니다. 드롭다운에 이전에 할당된 범위(있는 경우)가 포함되거나 새 IP 범위 할당을 선택하고 새 범위와 이름을 입력할 수 있습니다.
      • 네트워크에 자동으로 할당된 IP 범위를 사용합니다.
    3. 계속을 클릭합니다.
    4. 연결 만들기를 클릭합니다.
    5. VPC_NETWORK_NAME 네트워크의 비공개 서비스 연결이 생성되었습니다. 상태가 표시되는지 확인합니다.
  7. 저장을 클릭합니다.

gcloud

프로젝트가 비공개 서비스 액세스를 위해 구성되었는지 확인합니다.

--network 매개변수를 사용하여 선택한 VPC 네트워크의 이름을 지정해 Cloud SQL 인스턴스를 업데이트합니다.

gcloud beta sql instances patch INSTANCE_ID \
--project=PROJECT_ID \
--network=projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME \
--no-assign-ip

REST v1

비공개 IP 주소로 새 인스턴스를 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID
  • vpc-name: 인스턴스에 사용할 VPC 네트워크의 이름
  • allocated-ip-range: 선택사항. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63자(영문 기준) 이내여야 합니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/sql/v1/projects/project-id/instances/instance-id

JSON 요청 본문:

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

REST v1beta4

비공개 IP 주소로 새 인스턴스를 만듭니다.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • project-id: 프로젝트 ID
  • instance-id: 인스턴스 ID
  • vpc-name: 인스턴스에 사용할 VPC 네트워크의 이름
  • allocated-ip-range: 선택사항. 지정하면 IP 범위가 할당되는 범위 이름이 설정됩니다. 범위 이름은 RFC-1035를 준수해야 하며 1~63자(영문 기준) 이내여야 합니다.

HTTP 메서드 및 URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 요청 본문:

{
  "settings":
  {
    "ipConfiguration": {
      "ipv4Enabled": false,
      "privateNetwork": "vpc-name",
      "allocatedIpRange": "allocated-ip-range"
    }
  }
}

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

다음과 유사한 JSON 응답이 표시됩니다.

비공개 IP를 사용하여 인스턴스에 연결

비공개 서비스 액세스를 사용하여 동일한 VPC 네트워크의 Compute Engine 또는 Google Kubernetes Engine 인스턴스(여기서는 내부 소스로 정의)에서 또는 해당 네트워크의 외부(외부 소스)에서 Cloud SQL 인스턴스에 연결합니다.

내부 소스에서 연결

Compute Engine 리소스에서 실행되는 Cloud SQL 인증 프록시와 같이 Cloud SQL 인스턴스와 동일한 Google Cloud 프로젝트의 소스에서 연결하려면 리소스가 Cloud SQL 인스턴스와 동일한 VPC 네트워크에 있어야 합니다.

App Engine 표준 환경, Cloud Run, Cloud Functions과 같은 서버리스 소스에서 연결하려면 애플리케이션 또는 함수가 Cloud SQL 인증 프록시 없이 서버리스 VPC 액세스를 통해 인스턴스에 직접 연결합니다.

외부 소스에서 연결

외부 네트워크가 Cloud SQL 인스턴스가 연결된 VPC 네트워크에 연결되어 있으면 외부 네트워크(온프레미스 네트워크 또는 VPC 네트워크)의 클라이언트에서 연결할 수 있습니다. 외부 네트워크의 연결을 허용하려면 다음을 수행합니다.

  1. Cloud VPN 터널 또는 Dedicated Interconnect 또는 Partner Interconnect를 위한 VLAN 연결을 사용하여 VPC 네트워크가 외부 네트워크에 연결되어 있는지 확인합니다.
  2. Cloud VPN 터널 및 Cloud Interconnect 연결(VLAN)을 관리하는 Cloud Router의 BGP 세션이 온프레미스 네트워크에서 특정 프리픽스(대상)를 수신했는지 확인합니다.

    네트워크에 자체 로컬 기본 경로가 있으므로 기본 경로(대상 0.0.0.0/0)를 Cloud SQL VPC 네트워크로 가져올 수 없습니다. 대상의 로컬 경로는 Cloud SQL 피어링이 VPC 네트워크에서 커스텀 경로를 가져오도록 구성되어 있더라도 항상 사용됩니다.

  3. 비공개 서비스 연결에서 생성한 피어링 연결을 식별합니다. 서비스에 따라 비공개 서비스 연결에서 다음 피어링 연결 중 하나 이상을 만들 수 있지만 반드시 모든 피어링 연결을 구성할 필요는 없습니다.
    • cloudsql-mysql-googleapis-com
    • cloudsql-postgres-googleapis-com
    • servicenetworking-googleapis-com
  4. 피어링 연결 모두를 업데이트하여 커스텀 경로 내보내기를 사용 설정합니다.
  5. 비공개 서비스 연결에 사용되는 할당 범위를 식별합니다.
  6. Cloud VPN 터널 또는 Cloud Interconnect 연결(VLAN)의 BGP 세션을 관리하는 Cloud Router에 할당된 범위에 대한 Cloud Router 커스텀 경로 공지를 만듭니다.

Cloud Shell에서 연결

Cloud Shell은 현재 비공개 IP 주소만 있는 Cloud SQL 인스턴스에 대한 연결을 지원하지 않습니다.

RFC 1918 이외의 주소에서 연결

RFC 1918은 내부적으로(즉, 조직 내에서) 사용되기 위해 할당되는 IP 주소를 지정하며 인터넷에서 라우팅하지 않습니다. 구체적으로 다음과 같습니다.

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

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

RFC 1918 이외의 주소 범위(RFC 1918 주소 범위에 속하지 않는 주소)는 승인된 네트워크로 구성되어야 합니다.

RFC 1918 이외의 주소에서 연결하려면 RFC 1918 이외의 주소 범위에서 오는 트래픽을 허용하도록 인스턴스별 IP 승인을 설정해야 합니다.

예를 들어 다음과 같은 gcloud 명령어를 사용합니다.

gcloud sql instances patch INSTANCE_NAME \
--authorized-networks=192.88.99.0/24,11.0.0.0/24

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

gcloud compute networks peerings update PEERING_CONNECTION \
--network=NETWORK \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID
  • PEERING_CONNECTION은 VPC 네트워크와 서비스 제작자 네트워크 사이에 있는 비공개 서비스 연결에서 생성된 피어링 연결의 이름입니다.
  • NETWORK는 VPC 네트워크의 이름입니다.
  • PROJECT_ID는 VPC 네트워크 프로젝트의 ID입니다. 공유 VPC를 사용하는 경우 호스트 프로젝트 ID를 사용합니다.

문제 해결하기

알려진 연결 문제는 문제 해결을, 자가 진단에 대한 도움은 연결 문제 디버깅을 참조하세요.

다음 단계