G-gen の堂原です。当記事では、Ingress 設定が「内部」となっている Cloud Run サービスに対し、異なる Google Cloud プロジェクトから VPC ネットワークを経由してプライベートアクセスする方法について解説します。
- はじめに
- アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する
- アクセス先 Cloud Run が共有 VPC へ Egress 接続する
- VPC Service Controls を利用する
- 内部ロードバランサを経由する

はじめに
Cloud Run サービスの Ingress 設定
Cloud Run サービスの Ingress(上り)設定は、サービスにアクセス(リクエスト)できるネットワークトラフィックを制御します。
この設定を「内部」にすると、インターネットからの直接的なアクセスをブロックし、同じ Google Cloud プロジェクト内の VPC ネットワークや、特定の Google Cloud サービス(Cloud Scheduler や Cloud Tasks など)からのアクセスのみに制限できます。
詳しくは以下のブログで紹介しています。
異なるプロジェクトからのアクセス
Ingress 設定が「内部」になっている Cloud Run サービスにおいては、同一の Google Cloud プロジェクト(以後、「プロジェクト」)の VPC ネットワークからであればアクセス可能ですが、異なるプロジェクトからアクセスするには、追加の構成が必要です。
このプロジェクト間プライベートアクセスの実現方法として、次のようなパターンがあります。
- アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する
- アクセス先 Cloud Run が共有 VPC へ Egress 接続する
- VPC Service Controls を利用する
- 内部ロードバランサを経由する
なお当記事では、「アクセス先プロジェクト」はアクセス先の Cloud Run サービスが属するプロジェクトを、「アクセス元プロジェクト」はアクセス元のリソース(Compute Engine VM など)が属するプロジェクトを指します。
当記事では、各パターンについて紹介します。
アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する
構成
共有 VPC 経由で Cloud Run サービスへリクエストする場合で、アクセス先プロジェクトが 共有 VPC のホストプロジェクトである場合は、Cloud Run サービスからみて「内部」アクセスと判定されます。
構成の概要は以下のとおりです。
- アクセス先プロジェクトで共有 VPC を有効化し、ホストプロジェクトとする
- アクセス元プロジェクトをサービスプロジェクトとして、サブネットを共有する

上記の構成により、アクセス元プロジェクトに共有されたサブネット上の Compute Engine VM 等から、Cloud Run サービスの URL に HTTP リクエストをすることが可能です。アクセス元リソースが Cloud Run サービスや Cloud Run ジョブの場合、自プロジェクトの共有されたサブネットに Egress 接続することで、アクセスすることができます。
留意点
本構成においては以下のような点に気をつける必要があります。
- アクセス先プロジェクトが共有 VPC ホストプロジェクトではない場合は、後述の Egress 接続設定が必要
- アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要
アクセス先 Cloud Run が共有 VPC へ Egress 接続する
構成
アクセス先の Cloud Run サービスが、Direct VPC Egress またはサーバーレス VPC アクセスを用いて共有 VPC に Egress 接続設定をしている場合、その共有 VPC は Cloud Run サービスからみて「内部」と判定されます。
構成の概要は以下のとおりです。
- 任意のプロジェクト(アクセス元でもアクセス先でもない、第三のプロジェクトでも可)をホストプロジェクトとして共有 VPC を設定する
- アクセス元プロジェクトとアクセス先プロジェクトの両方をサービスプロジェクトとして、ホストプロジェクトにアタッチし、サブネットを共有する
- アクセス先の Cloud Run サービスで、共有されたサブネットへの Egress 接続(Direct VPC Egress またはサーバーレス VPC アクセス)を構成する

上記の構成で、アクセス元プロジェクト上で、共有されたサブネットから Cloud Run サービスの URL に HTTP リクエストをすることが可能となります。
留意点
本構成においては以下のような点に気をつける必要があります。
- アクセス元プロジェクトをホストプロジェクトとすることも可能
- アクセス先 Cloud Run サービスの Egress 接続の「トラフィックルーティング」設定は、「プライベート IP へのリクエストのみを VPC にルーティングする」でも本構成は成立する
- アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要
VPC Service Controls を利用する
構成
アクセス先プロジェクトの Cloud Run Admin API を保護する VPC Service Controls 境界に含まれている VPC ネットワークは、Cloud Run サービスからみて「内部」と判定されます。
構成の概要は以下のとおりです。
- VPC Service Controls の境界を作成する
- 境界に、アクセス先プロジェクトと、アクセス元プロジェクトの VPC ネットワークを含める(アクセス元プロジェクトを含める必要はない)
- 境界で保護するサービスに Cloud Run Admin API(
run.googleapis.com)を含める - アクセス元プロジェクトのリソースは、境界内の VPC ネットワークを経由して Cloud Run サービスにアクセスする

上記の構成で、VPC Service Controls に含まれている VPC ネットワーク上のサブネットから Cloud Run サービスの URL に HTTP リクエストをすることが可能となります。
留意点
本構成においては以下のような点に気をつける必要があります。
- 本構成において、VPC ネットワークは共有 VPC である必要はない
- VPC Service Controls の設定について
- 「保護するリソース」にアクセス元プロジェクトを含める必要はない
- 「VPC のアクセス可能なサービス」において、「CLoud Run Admin API」を許可する必要がある
- アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要
内部ロードバランサを経由する
Cloud Load Balancing の一種である内部アプリケーションロードバランサのバックエンドとして Cloud Run サービスを登録し、アクセス元リソースからそのロードバランサにアクセスするという構成です。
詳しくは以下の記事で紹介しています。
堂原 竜希(記事一覧)
クラウドソリューション部クラウドエクスプローラ課。2023年4月より、G-genにジョイン。
Google Cloud Partner Top Engineer 2023, 2024, 2025に選出 (2024年はRookie of the year、2025年はFellowにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。
Follow @ryu_dohara