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

プライベート サービス アクセスは、VPC ネットワークと Google またはサードパーティが所有するネットワークとのプライベート接続です。Google またはサードパーティ(サービスを提供しているエンティティ)は、サービス プロデューサーとも呼ばれます。プライベート接続を使用すると、VPC ネットワーク内の VM インスタンスとアクセスするサービスで、内部(RFC 1918)IP アドレスを使用して排他的に通信できるようになります。VM インスタンスは、インターネット アクセスまたは外部 IP アドレスがなくても、プライベート サービス アクセスを介してサービスにアクセスできます。

プライベート サービス アクセスおよびその他のプライベート アクセス オプションの詳細については、サービスのプライベート アクセス オプションをご覧ください。

全体像として、プライベート サービス アクセスを使用するには、VPC ネットワークで IP アドレス範囲(CIDR ブロック)を割り当ててから、サービス プロデューサへのプライベート接続を作成する必要があります。

始める前に

プライベート接続を確立するには、前提条件となる次の手順を行います。

  • サービスがプライベート サービスにアクセスできることを確認します。
  • GCP プロジェクトを作成するか、既存のプロジェクトを選択します。GCP プロジェクトの作成方法については、プロジェクトの作成と管理をご覧ください。
  • プロジェクトで Service Networking API を有効にします。API はプライベート接続を作成するために必要です。
  • サービス プロデューサーのネットワークへの接続に使用する既存の VPC ネットワークが必要です。VM インスタンスは、この VPC ネットワークを使用してプライベート接続経由でサービスに接続する必要があります。
  • このガイドの gcloud コマンドラインの例を実行する場合は、Cloud SDK をインストールします。

権限

プロジェクト オーナー、編集者、そしてネットワーク管理者の役割を持つ IAM メンバーが、割り当て IP アドレス範囲を作成し、プライベート接続を管理できます。

役割の詳細については、VPC IAM 役割のドキュメントをご覧ください。

共有 VPC のシナリオ

共有 VPC を使用している場合は、割り当てられた IP 範囲とプライベート接続をホスト プロジェクトに作成します。通常、ホスト プロジェクトのネットワーク管理者がこれらの作業を行う必要があります。ホスト プロジェクトの設定後、サービス プロジェクト内の VM インスタンスはプライベート接続を使用できます。

割り当てと制限

プライベート接続は VPC ピアリング接続として実装されているため、VPC ネットワーク ピアリングに適用されるのと同じ割り当てと制限が、プライベート サービス アクセスにも適用されます。

割り当て IP アドレス範囲の作成

プライベート接続を作成する前に、サービス プロデューサーの VPC ネットワークで使用される IP アドレス範囲を割り当てる必要があります。これにより、VPC ネットワークとサービス プロデューサーのネットワークとの間に IP アドレスの衝突がなくなります。各サービス プロデューサーに対して割り当て範囲を作成します。

VPC ネットワークに範囲を割り当てると、その範囲はサブネット(プライマリとセカンダリの範囲)とカスタム静的ルートの宛先には適用されません。

IP アドレス範囲のサイズ

プライベート サービス アクセス(クリックして拡大)

サービス プロデューサーが自分の接続側にサブネットを作成すると、そのサブネットの IP アドレス範囲に割り当てからの空き範囲が選択されます。

各サービス プロデューサーには最小サイズの IP アドレス範囲が必要です。Google では、最小サイズは単一の /24 ブロック(256 アドレス)ですが、推奨サイズは /16 ブロック(65,536 アドレス)です。選択するサイズは、使用するサービスやリージョンの数などの要因によって異なります。冗長性のシナリオやレイテンシ低減のために、複数のリージョンで単一のサービスを使用することがあります。

たとえば、3 つの異なるリージョンで 2 つのサービスを使用する場合、サービス プロデューサーは 6 つのサブネットを作成し、それぞれに /24 ブロックを持たせる必要があります。サービスまたはリージョンを追加で使用する予定の場合は、すぐに /20 の割り当てを使い果たす可能性があります。連続した /16 ブロックがない場合は、小さい割り当てから始めて、後でさらに IP アドレスが必要になったときに新しい割り当てを追加できます。

サービス プロデューサーのサブネットについて

プライベート接続を確立し、プライベート IP アドレスを持つリソースを作成すると、サービスはそのリソースをプロビジョニングするためのサブネットを作成します。サービスは割り当て範囲から使用可能な IP アドレス範囲を選択します。サービス プロデューサーのサブネット IP アドレス範囲を選択または変更することはできません。プライベート接続または割り当てられた IP アドレス範囲を削除しても、サブネット内のすべてのリソースを削除するまでサブネットは残ります。

追加のリソースをプロビジョニングすると、サービスは以前に作成した既存のリージョン サブネットにそれらをプロビジョニングします。サブネットがいっぱいの場合、サービスはそのリージョンに新しいサブネットを作成します。

考慮事項

IP アドレス範囲を割り当てる前に、次の制約を考慮してください。

  • 既存の割り当て範囲、サブネット、カスタム静的ルートと重複しない範囲を選択します。2 つの範囲を重複させることはできません。
  • 自動モードの VPC ネットワークを使用している場合、10.128.0.0/9 と一致または重複する割り当て範囲は作成できません。この範囲は、自動的に作成されたサブネット用です。
  • 現在および将来のニーズを十分に満たせる CIDR ブロックを選択します。範囲のサイズが十分でないことが後で判明した場合は、可能であれば範囲を拡張してください。単一のサービス プロデューサーに複数の割り当てを設定することはできますが、Google で制限が適用されるのは、割り当て可能な IP アドレス範囲の数であって、各範囲のサイズ(ネットマスク)ではありません。
  • 複数のサービス プロデューサーに同じ割り当て範囲を再利用しないでください。再利用は可能ですが、IP アドレスが重複する可能性があります。各サービス プロデューサーが把握できるのは自分のネットワークのみであり、他のサービス プロデューサーが使用している IP アドレスを知ることはできません。
  • CIDR ブロックは、割り当てを作成するときに割り当て範囲に 1 つだけ設定できます。IP アドレス範囲を拡張しなければならない場合でも、割り当てにブロックを追加することはできません。代わりに、新しい範囲と既存の範囲を含む大きなブロックを使用することで、別の割り当てを作成したり、既存の範囲を再作成したりできます。
  • Google による自動作成ではなく(Cloud SQL などで)自分で割り当てを作成する場合も、これと同じ命名規則を使用すれば、他のユーザーまたは Google サービスに、Google 用の割り当てがすでに存在することを伝えられます。Google サービスがお客様に代わって範囲を割り当てる場合は、割り当てに名前を付けるために google-managed-services-[your network name] 形式を使用します。この割り当てが存在する場合、Google サービスは別の割り当てを作成するのではなく既存の割り当てを使用します。

手順

次に示す手順では、割り当てられた IP アドレス範囲を作成する方法について説明します。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. サービス プロデューサーに接続する VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスに割り当てられた IP 範囲] タブを選択します。
  5. [割り当て IP 範囲] をクリックします。
  6. 割り当て範囲の [名前] と [説明] を入力します。
  7. 割り当ての [IP 範囲] を指定します。

    • IP アドレス範囲を指定するには、[カスタム] を選択してから、CIDR ブロック(192.168.0.0/16 など)を入力します。
    • 接頭辞長を指定して利用可能な範囲を Google に選択させるには、[自動] を選択して接頭辞長(16 など)を入力します。
  8. [割り当て] をクリックして、割り当て範囲を作成します。

gcloud

VPC ネットワークに割り当て範囲を作成します。

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

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

    gcloud compute addresses create [RESERVED_RANGE_NAME] \
        --global \
        --purpose=VPC_PEERING \
        --prefix-length=16 \
        --description=[DESCRIPTION] \
        --network=[VPC_NETWORK]
    

次のプレースホルダを適切な値に置き換えます。

  • [RESERVED_RANGE_NAME] は割り当て範囲の名前です(my-allocated-range など)。
  • [DESCRIPTION] は範囲の説明です(allocated for my-service など)。
  • [VPC_NETWORK] は VPC ネットワークの名前です(my-vpc-network など)。

次の例では、my-network VPC ネットワーク内の VM インスタンスがプライベート サービス アクセスを使用して、それをサポートする Google サービスにアクセスできるように Google にプライベート接続を作成します。

gcloud compute addresses create google-managed-services-my-network \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=my-network \
    --project=my-project

プライベート接続の作成

割り当て範囲を作成したら、サービス プロデューサーへのプライベート接続を作成できます。プライベート接続は、VPC ネットワークとサービス プロデューサーのネットワークとの VPC ネットワーク ピアリング接続を確立します。

プライベート接続は、VPC ネットワークとサービス プロデューサーとの 1 対 1 の関係です。単一のサービス プロデューサーで複数のサービスを提供する場合でも、プロデューサーのすべてのサービスに対して必要なプライベート接続は 1 つのみです。

複数のサービス プロデューサーに接続する場合は、各サービス プロデューサーに固有の割り当てを使用します。この方法は、各サービス プロデューサーのネットワーク設定(ルートやファイアウォール ルールなど)を管理するのに役立ちます。

Console

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

gcloud

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

    gcloud services vpc-peerings connect \
        --service=servicenetworking.googleapis.com \
        --ranges=[RESERVED_RANGE_NAME] \
        --network=[VPC_NETWORK] \
        --project=[PROJECT_ID]
    
    • [RESERVED_RANGE_NAME] は 1 つ以上の割り当て範囲の名前です。
    • [VPC_NETWORK] は VPC ネットワークの名前です。
    • [PROJECT_ID] は VPC ネットワークを含むプロジェクトの ID です。

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

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

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

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

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

プライベート接続の一覧表示

プライベート接続を作成した後、その存在をリストで確認できます。リストには、各接続に関連付けられている割り当て範囲のリストも表示されます。たとえば、接続に割り当てた範囲を覚えていない場合は、リストを参照して確認できます。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 接続が含まれている VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスへのプライベート接続] タブを選択して、すべてのネットワークのプライベート接続を表示します。

gcloud

VPC ネットワーク内のプライベート接続を一覧表示します。

gcloud services vpc-peerings list \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

[VPC_NETWORK][PROJECT_ID] を、VPC ネットワークの名前とそのプロジェクト ID で置き換えます。

プライベート接続の変更

既存のプライベート接続では、トラフィックを中断することなく、割り当てられた IP アドレス範囲を追加または削除できます。たとえば規模を変更するときに、既存の範囲が不足しそうな場合は、割り当て範囲を追加できます。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 接続が含まれている VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスへのプライベート接続] タブを選択して、すべてのネットワークのプライベート接続を表示します。
  5. リスト内の接続名をクリックします。
  6. [割り当て] プルダウン メニューで、割り当てる範囲を選択します。Google Cloud Platform Console を使用して範囲を削除することはできません。範囲を削除する場合は、gcloud の手順をご覧ください。
  7. [OK] をクリックします。

gcloud

既存のプライベート接続に割り当てられた IP アドレス範囲を追加または削除します。

gcloud services vpc-peerings update \
    --service=servicenetworking.googleapis.com \
    --ranges=[RESERVED_RANGE_NAME] \
    --network=[VPC_NETWORK] \
    --project=[PROJECT_ID]

[RESERVED_RANGE_NAME] は、プライベート接続に割り当てる 1 つ以上の割り当て範囲の名前に置き換えます。[VPC_NETWORK][PROJECT_ID] は、VPC ネットワークの名前とネットワークのプロジェクト ID に置き換えます。指定したリストは新しい範囲のセットです。含まれていない範囲が存在する場合は削除されます。

プライベート接続の削除

プライベート接続を削除するには、対応する VPC ピアリング接続を削除する必要があります。VPC ネットワークはサービス プロデューサーの VPC ネットワークから切断されます。また両方のネットワークの既存のリソースは削除されませんが、プライベート サービスへはアクセスできなくなります。再度プライベート接続を作成すれば、接続を再確立できます。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 削除する接続が含まれている VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスへのプライベート接続] タブを選択します。
  5. 削除するプライベート接続を選択します。
  6. 削除するには、[削除] をクリックします。
  7. もう一度 [削除] をクリックして、削除を承認します。

gcloud

プライベート接続の VPC ネットワーク ピアリング接続を削除します。

gcloud compute networks peerings delete [CONNECTION_NAME] \
    --network [VPC_NETWORK]

[CONNECTION_NAME][VPC_NETWORK] をそれぞれ、プライベート接続の名前と VPC ネットワークで置き換えます。

割り当ての削除

割り当てられた IP アドレス範囲を削除する前に、それを使用しているプライベート接続がないことを確認してください。既存のプライベート接続を削除または変更すると、割り当て範囲の関連付けを解除できます。これを行わないと、既存の接続がアクティブのままになり、VPC がサービス プロデューサーのネットワークと重複する IP アドレスを使用できてしまいます。また、選択する IP アドレス範囲が割り当てられていないため、サービスは新しいサブネットを作成できません。

Console

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. 削除する割り当てが含まれている VPC ネットワークを選択します。
  3. [プライベート サービス接続] タブを選択します。
  4. [プライベート サービス接続] タブで、[サービスに割り当てられた IP 範囲] タブを選択します。
  5. 削除する割り当てを選択します。
  6. [リリース] をクリックすると、割り当てられていた IP アドレス範囲が、ネットワークの利用可能な内部 IP アドレスのプールに返されます。

    割り当て IP アドレス範囲がまだ既存の接続に割り当てられている場合は、割り当てをリリースする前に追加の確認を入力する必要があります。

  7. もう一度 [リリース] をクリックして、削除を承認します。

gcloud

割り当ての名前を指定して割り当てを削除します。

gcloud compute addresses delete [NAME] \
    --global

トラブルシューティング

私の割り当てはどれくらい使われていますか?

サービス プロデューサーとのプライベート接続を作成するときは、使用する IP アドレスの範囲を割り当てます。サービス プロデューサーから複数のサービスを使用する場合、各サービスは割り当て範囲から IP アドレスのチャンクを予約します。どのサービスがどの IP アドレスを使用しているかを確認できます。たとえば、どのサービスが大きな IP ブロックを使用しているかを知ることができ、IP アドレスが枯渇するのを防止できます。

特定の IP アドレス範囲を使用しているサービスを表示するには:

  1. プライベート接続を一覧表示します。
  2. 関連するサービス プロデューサーに接続するピアリング接続名を探します。
  3. VPC ネットワークのルートを一覧表示します。
  4. ネクストホップがピアリング接続名と一致しているルートを探します。ルートの宛先範囲は、各サービスが使用している IP アドレスを示します。

IP アドレス範囲の枯渇

特定のプライベート接続では、割り当てた IP アドレス空間が枯渇した場合に、既存の割り当てを拡張するか、新しい割り当てを追加できます。拡張した割り当ては、既存の範囲を含む連続した IP アドレス範囲でなければなりません。割り当てのサイズに制限はありませんが、作成できる割り当ての数には制限があるため、割り当てを拡張することをおすすめします。

既存の割り当てを拡張するには:

  1. プライベート接続を一覧表示し、拡張する必要がある割り当て範囲の名前を記録します。
  2. 既存の割り当て範囲を削除します。
  3. 削除した範囲と同じ名前を使用して、新しい割り当て範囲を作成します。削除した IP アドレス範囲を含む IP アドレス範囲を指定します。これにより、以前の割り当て範囲を使用している既存のピアリング済みリソースは、VPC ネットワーク内のリソースと競合することなく、同じ IP アドレスを引き続き使用できます。たとえば、以前の割り当て範囲が 192.168.0.0/20 だった場合は、新しい割り当て範囲を 192.168.0.0/16 として作成します。

既存のプライベート接続に割り当て範囲を追加するには:

  1. 新しい割り当て範囲を作成します。この範囲は、既存の割り当て範囲と連続している必要はありません。
  2. 割り当て範囲を既存のプライベート接続に追加します。
このページは役立ちましたか?評価をお願いいたします。