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

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

プライベート サービス アクセスは、お客様の VPC ネットワーク基盤となる Google Cloud の VPC ネットワーク(Cloud SQL インスタンスが存在するネットワーク)との間の VPC ピアリング接続として実装されます。プライベート接続を使用すると、VPC ネットワーク内の VM インスタンスとアクセスするサービスで、内部 IP アドレスを使用して排他的に通信できるようになります。VM インスタンスは、インターネット アクセスまたは外部 IP アドレスがなくても、プライベート サービス アクセスを介してサービスにアクセスできます。

始める前に

Cloud SQL では、プライベート IP 接続に使用される各 VPC ネットワークにプライベート サービス アクセスが必要です。

プライベート サービス アクセス接続を管理するため、ユーザーには次の IAM 権限が必要です。必要な権限がない場合は、権限不足のエラーが発生することがあります。

  • compute.networks.list
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

また、共有 VPC ネットワークを使用している場合は、ユーザーをホスト プロジェクトに追加して、そのホスト プロジェクトのユーザーに同じ権限を割り当てる必要もあります。

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

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

  • 既存の IP アドレス範囲の選択、または新しい IP アドレス範囲の割り振り。

    範囲の割り振りを Google に任せることもできます。この場合、Google は自動的に接頭辞長 /20 の IP 範囲を割り振り、default-ip-range という名前を使用します。

    複数のリージョンまたは別のデータベース タイプでインスタンスを作成する場合、/20 以上の範囲をおすすめします。

  • 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. [カスタム] オプションを選択し、割り振る IP アドレス範囲を CIDR 表記で入力します。
  8. [割り当て] をクリックして、割り振る範囲を作成します。

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 に置き換えます。

    このコマンドは、長時間実行されている Cloud SQL インスタンス オペレーションを開始し、オペレーション名を戻します。

  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 ネットワークに戻す必要があります。

別の VPC ネットワークに移動するには、以下の最後の手順(インスタンスの移動)以外のすべての手順を行います。この場合、[TEMPORARY_VPC_NETWORK_NAME] は新しい VPC ネットワークです。また、古いプライベート接続を削除します。削除したプライベート接続が Google Cloud Console に表示されなくなるまでに数日かかることがあります。

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