組織で共有 VPC を使用している場合は、サーバーレス VPC アクセス コネクタをサービス プロジェクトまたはホスト プロジェクトのいずれかで設定できます。このガイドでは、サービス プロジェクトでコネクタを設定する方法について説明します。
ホスト プロジェクトでコネクタを設定する必要がある場合は、ホスト プロジェクトでコネクタを構成するをご覧ください。各方法の利点については、共有 VPC ネットワークへの接続をご覧ください。
大まかには、次の手順を行う必要があります。
- 必要な IP 範囲を許可するファイアウォール ルールを追加する
- 権限を付与する
- サブネットを作成する
- サーバーレス VPC アクセスの構成ページの次のセクションの手順を完了します。
始める前に
サーバーレス VPC アクセスは、URL 取得サービスに対応していません。開始する前に、ソケットを使用して urlfetch
パッケージの使用を明示的に終了し、URL 取得のデフォルトを無効にします。
IP 範囲を許可するファイアウォール ルールを追加する
この手順を行うには、ホスト プロジェクトで次のいずれかのロールが必要です。
- Compute Engine セキュリティ管理者のロール
compute.firewalls.create
権限が有効な Identity and Access Management(IAM)のカスタムロール
次の IP 範囲からのリクエストを許可してコネクタに到達し、コネクタからも到達できるように、ファイアウォール ルールを作成する必要があります。
- NAT 範囲
107.178.230.64/26
35.199.224.0/19
- ヘルスチェック範囲
130.211.0.0/22
35.191.0.0/16
108.170.220.0/23
これらの範囲は、Cloud Run、Cloud Run functions、App Engine スタンダード環境の基盤となる Google インフラストラクチャで使用されます。これらの IP からのすべてのリクエストは Google インフラストラクチャから送信されるため、Cloud Run、Cloud Run functions、App Engine のサービス / 関数 / アプリはそれぞれ接続先の VPC コネクタとのみ通信します。
単純な構成の場合、共有 VPC ネットワークに接続されているすべてのサービス プロジェクトが、サーバーレス サービスがネットワーク内の任意のリソースにリクエストを送信できるように、ルールを適用します。
これらのルールを適用するには:
次の 3 つのコマンドを実行して、サーバーレス環境からのリクエストがネットワーク内のすべての VPC コネクタに到達できるようにするルールを設定します。
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges 107.178.230.64/26,35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges 107.178.230.64/26,35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
VPC_NETWORK
は、コネクタを接続する VPC ネットワークです。VPC ネットワーク上で、コネクタからのリクエストを許可する上り(内向き)ルールを作成します。
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
このルールにより、VPC コネクタに対して、ネットワーク内のすべてのリソースへのアクセスが許可されます。サーバーレス VPC アクセスを使用してサーバーレス環境でアクセスできるリソースを制限するには、これらのファイアウォール ルールのターゲットを指定します。
特定のコネクタに対するファイアウォール ルールを作成する
IP 範囲を許可するファイアウォール ルールを追加するの手順に沿って、既存のコネクタと、今後作成されるコネクタの両方すべてに適用されるファイアウォール ルールを作成します。これが必要でなく、特定のコネクタだけに対するルールを作成する場合は、それらのコネクタにのみ適用されるようにルールの範囲を設定できます。
ルールの対象範囲を特定のコネクタに限定するには、次のいずれかの仕組みを使用できます。
- ネットワーク タグ。各コネクタには、
vpc-connector
とvpc-connector-REGION-CONNECTOR_NAME
の 2 つのネットワーク タグがあります。後者のフォーマットを使用して、ファイアウォール ルールの範囲を特定のコネクタに制限します。 - IP 範囲。このルールは Ingress で機能しないため、下り(外向き)ルールにのみ使用します。コネクタ サブネットの IP 範囲を使用して、ファイアウォール ルールの範囲を単一の VPC コネクタに制限できます。
サービス プロジェクトのサービス アカウントに権限を付与する
共有 VPC 管理者は、VPC コネクタを使用する各サービス プロジェクトについて、ホスト プロジェクトでの Compute ネットワーク ユーザー ロール(compute.networkUser
)をサービス プロジェクト cloudservices
と vpcaccess
サービス アカウントに付与する必要があります。
ロールを付与するには:
次のコマンドを使用します。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --role "roles/compute.networkUser" \ --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --role "roles/compute.networkUser" \ --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
@gcp-sa-vpcaccess
サービス アカウントが存在しない場合は、サービス プロジェクトでサーバーレス VPC アクセス API を有効にしてから、もう一度お試しください。gcloud services enable vpcaccess.googleapis.com
これらのサービス アカウントに共有 VPC ネットワーク全体へのアクセスを許可せず、特定のサブネットにのみアクセス権を付与する場合は、代わりにこれらのロールを特定のサブネット上のサービス アカウントのみに付与することもできます。
サブネットを作成する
共有 VPC を使用する場合、共有 VPC 管理者はコネクタごとにサブネットを作成する必要があります。サブネットの追加の説明に沿って、共有 VPC ネットワークに /28
サブネットを追加します。このサブネットは、コネクタを使用するサーバーレス サービスと同じリージョンに存在する必要があります。
次のステップ
- サーバーレス VPC アクセスの構成ページの次のセクションの手順を完了します。