プライベート サービス アクセスの構成

このページでは、VPC ネットワークでプライベート サービス アクセスを構成する方法について説明します。

Google Cloud とサードパーティ(これらはサービス プロデューサーとも呼ばれます)は、VPC ネットワークでホストされている内部 IP アドレスでサービスを提供できます。プライベート サービス アクセスを使用すると、これらの内部 IP アドレスにアクセスできます。これは、VPC ネットワーク内の VM インスタンスに、外部 IP アドレスではなく内部 IP アドレスを使用させる場合に便利です。Cloud SQL は、プライベート IP に内部 IP アドレスを使用します。

準備

Cloud SQL インスタンスにプライベート IP を使用する場合は、Cloud SQL インスタンスに接続している、または接続する必要のあるすべての Google Cloud プロジェクトに対して、プライベート サービス アクセスを一度のみ構成する必要があります。

Google Cloud プロジェクトに Cloud SQL インスタンスがある場合は、自分で構成することも、Cloud SQL でプライベート IP を使用するようにすることもできます。

以下のすべての条件に該当する場合、Cloud SQL はプライベート サービス アクセスを構成します。

  • Google Cloud プロジェクトでプライベート サービス アクセスがまだ構成されていない。
  • Google Cloud プロジェクトの Cloud SQL インスタンスに対して初めてプライベート IP を有効にする。
  • インスタンスの Connections ページでプライベート IP を有効にするときに、default に関連付けられたネットワーキングと Use an automatically allocated IP range オプションの両方を選択する。

default VPC ネットワークを選択してから Private service connection リンクを選択し、[VPC ネットワーク ページ] で結果を確認できます。

それ以外の場合は、以下のセクションの説明に従って、プライベート サービス アクセスを手動で構成する必要があります。

Cloud SQL のプライベート サービス アクセスを構成する

default または独自の VPC ネットワークで、プライベート サービス アクセスを構成できます。これは、次の場合に推奨されます。

  • 割り振られる IP アドレス範囲のサイズを制御する場合。たとえば、大量の Cloud SQL インスタンスの作成が予想される場合、そのすべてを保持できる IP 範囲を事前に割り振ることがあります。インスタンスを複数のリージョンまたは異なるデータベース タイプで作成する場合は、/20 以上の範囲をおすすめします。

  • コマンドラインから(gcloud を使用して)プライベート サービス アクセスをセットアップする場合。

  • 共有 VPC を使用していて、組織にホスト プロジェクトのネットワーク管理者(IAM ロール / compute.networkAdmin)がいる場合。ネットワーク管理者は、ホスト プロジェクトで次の手順を行って、プライベート サービス アクセスを構成できます。サービス プロジェクトで権限を委任されたユーザーは、前の手順に従って Cloud SQL インスタンスを起動できます。

プライベート サービス アクセスの構成プロセスは、2 つの部分で構成されています。

  • IP アドレス範囲を割り振る。
  • VPC ネットワークからサービス プロデューサー ネットワークへのプライベート接続を作成する。

IP アドレス範囲を割り振る

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 使用する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [サービスに割り当てられた IP 範囲] を選択します。
  5. [割り当てられている IP 範囲] をクリックします。
  6. 割り振られた範囲の [名前] には google-managed-services-VPC_NETWORK_NAME を指定します。VPC_NETWORK_NAME は、接続する VPC ネットワークの名前です(google-managed-services-default など)。[説明] は任意です。

  7. [割り当て] をクリックして、割り振り範囲を作成します。

gcloud

次のいずれかを行います。

  • アドレス範囲と接頭辞長(サブネット マスク)を指定するには、addresses フラグと prefix-length フラグを使用します。たとえば、CIDR ブロック 192.168.0.0/16 を割り振るには、アドレスに 192.168.0.0 を指定し、接頭辞長に 16 を指定します。

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --addresses=192.168.0.0 \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    
  • 接頭辞長(サブネット マスク)だけを指定するには、prefix-length フラグを使用します。アドレス範囲を省略すると、VPC ネットワークで使用されていないアドレス範囲が自動的に選択されます。次の例では、16 ビットの接頭辞長を使用して、未使用の IP アドレス範囲を選択しています。

    gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --network=[VPC_NETWORK_NAME]
    

[VPC_NETWORK_NAME] は、使用する VPC ネットワークの名前(my-vpc-network など)に置き換えます。

次の例では、VPC ネットワーク my-vpc-network のリソースがプライベート IP を使用して Cloud SQL インスタンスに接続できるようにする IP 範囲を割り振っています。

gcloud compute addresses create google-managed-services-my-vpc-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --network=my-vpc-network \
    --project=my-project

プライベート接続の作成

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 使用する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [サービスへのプライベート接続] タブを選択します。
  5. ネットワークとサービス プロデューサーとの間にプライベート接続を作成するには、[接続の作成] をクリックします。
  6. [割り当て] で、他のサービス プロデューサーによって使用されていない 1 つ以上の既存の割り当て範囲を選択します。
  7. [接続] をクリックして接続を作成します。

gcloud

  1. プライベート接続を作成します。

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=google-managed-services-[VPC_NETWORK_NAME] \
        --network=[VPC_NETWORK_NAME] \
        --project=[PROJECT_ID]
    

    [VPC_NETWORK_NAME] は VPC ネットワークの名前に置き換え、[PROJECT_ID] は VPC ネットワークを含むプロジェクトの ID に置き換えます。

    このコマンドは、長時間実行オペレーションを開始し、オペレーション名を戻します。

  2. オペレーションが成功したかどうかを確認します。

    gcloud services vpc-peerings operations describe \
        --name=[OPERATION_NAME]
    

    [OPERATION_NAME] を、前の手順から返されたオペレーション名に置き換えます。

プライベート接続を作成するときに、複数の割り当て範囲を指定できます。たとえば、範囲が不足している場合は、割り振り範囲を追加で指定できます。サービスは指定されたすべての範囲内の IP アドレスを、指定された順序で使用します。

プライベート サービス アクセス構成の変更

プライベート サービス接続の割り振りアドレス範囲は、既存の Cloud SQL インスタンスを変更せずに変更できます。既存の Cloud SQL インスタンスのプライベート IP アドレスを変更するには、こちらの手順に従ってください。

割り振られたアドレス範囲を変更するには:

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 使用する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [サービスに割り当てられた IP 範囲] を選択します。
  5. 削除する範囲の名前を選択します。
  6. [リリース] をクリックします。
  7. [割り当てられている IP 範囲] をクリックします。
  8. 同じ名前と新しい範囲で新しい範囲を作成します

    プライベート接続はすでにそのアドレス名を使用して確立されているため、同じ名前を使用することが重要です。

既存の Cloud SQL インスタンスのプライベート IP アドレスの変更

既存の Cloud SQL インスタンスのプライベート IP アドレスを変更するには、変更する Cloud SQL インスタンスを一時 VPC ネットワークに移動し、プライベート サービス アクセス構成を変更してから、元の VPC ネットワークに戻す必要があります。

Console

  1. Google Cloud Console で [VPC ネットワーク] ページに移動します。
  2. 一時的な VPC ネットワークを作成します。
  3. Cloud SQL インスタンスを一時的な VPC ネットワークに移動します。
    gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[TEMPORARY_VPC_NETWORK_NAME] --no-assign-ip
  4. プライベート サービス アクセス構成を変更する
  5. Cloud SQL インスタンスを元の VPC ネットワークに戻します。
    gcloud --project=[PROJECT_ID] beta sql instances patch [INSTANCE_ID]
    --network=[ORIGINAL_VPC_NETWORK_NAME] --no-assign-ip