サーバーレス VPC アクセスの構成

このページでは、サーバーレス VPC アクセスを使用して、サーバーレス環境を VPC ネットワークに直接接続し、Compute Engine VM インスタンス、Memorystore インスタンス、内部 IP アドレスを持つその他のリソースへのアクセスを可能にする方法について説明します。

始める前に

共有 VPC を使用する場合は、サーバーレス環境のドキュメントをご覧ください。

サーバーレス VPC アクセス コネクタを作成する

公共のインターネットを使用せずに VPC ネットワークにリクエストを送信して対応するレスポンスを受信するには、サーバーレス VPC アクセス コネクタを使用する必要があります。

コネクタを作成するには、Google Cloud Console、gcloud コマンドライン ツール、または Terraform を使用します。

Console

  1. プロジェクトで Serverless VPC Access API が有効になっていることを確認します。

    API を有効にする

  2. サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  3. [コネクタを作成] をクリックします。

  4. [名前] フィールドに、コネクタの名前を入力します。これは Compute Engine の命名規則に従う必要があります。

  5. [リージョン] フィールドで、コネクタのリージョンを選択します。これは、サーバーレス サービスのリージョンと一致する必要があります。

    サービスが us-central または europe-west リージョンにある場合は、us-central1 または europe-west1 を使用します。

  6. [ネットワーク] フィールドで、コネクタを接続する VPC ネットワークを選択します。

  7. [サブネットワーク] プルダウン メニューをクリックします。

    • 独自のサブネット(共有 VPC に必要)を使用する場合は、コネクタに使用する /28 サブネットを選択します。
    • 共有 VPC を使用していない場合、サブネットを明示的に作成するのではなく、コネクタでサブネットを作成するようにしたい場合は、[カスタム IP 範囲] をプルダウンから選択してから [IP 範囲] フィールドに、予約されていない CIDR /28 内部 IP 範囲の最初のアドレスを入力します。この IP 範囲は、VPC ネットワーク内の既存の IP アドレス予約と重複してはいけません。たとえば、10.8.0.0/28)はほとんどの新しいプロジェクトで機能します。

  8. (省略可)コネクタを詳細に制御するためのスケーリング オプションを設定するには、[スケーリング設定を表示] をクリックしてスケーリング フォームを表示します。

    1. コネクタの最小数と最大数を設定するか、デフォルト値(最小 2 分、最大 10 分)を使用します。コネクタは、トラフィックの使用量に応じて指定された最大値にスケールアウトしますが、トラフィックが減少してもスケールインしません。210 の範囲の値を使用する必要があります。
    2. [インスタンスのタイプ] プルダウン メニューで、コネクタに使用するマシンタイプを選択するか、デフォルトの e2-micro を使用します。インスタンス タイプを選択すると、右側にコスト サイドバーが表示され、帯域幅とコストの見積もりが表示されます。
  9. [作成] をクリックします。

  10. コネクタの使用準備が整うと、コネクタ名の横に緑色のチェックマークが表示されます。

gcloud

  1. gcloud コンポーネントを最新バージョンに更新します。

    gcloud components update
    
  2. プロジェクトで Serverless VPC Access API が有効になっていることを確認します。

    gcloud services enable vpcaccess.googleapis.com
    
  3. 独自のサブネット(共有 VPC に必要)を使用する場合は、次のコマンドを使用してコネクタを作成します。

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances MIN \
    --max-instances MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type MACHINE_TYPE
    

    次のように置き換えます。

    • CONNECTOR_NAME: コネクタの名前。これは Compute Engine の命名規則に従う必要があります。
    • REGION: コネクタのリージョン。これは、サーバーレス サービスのリージョンと一致する必要があります。サービスが us-central または europe-west リージョンにある場合は、us-central1 または europe-west1 を使用します。
    • SUBNET: 他のリソースによって使用されていない独自の /28 専用サブネット。サブネットの名前を指定します。
    • HOST_PROJECT_ID: ホスト プロジェクトの ID。共有 VPC を使用する場合にのみ指定します。
    • MIN: コネクタに使用するインスタンスの最小数。210 の整数を使用してください。デフォルトは 2 です。
    • MAX: コネクタに使用するインスタンスの最大数。210 の整数を使用してください。デフォルトは 10 です。トラフィックで必要な場合、コネクタは [MAX] インスタンスにスケールアウトしますが、再スケーリングは行われません。
    • MACHINE_TYPE: f1-microe2-micro、または e2-standard-4

      マシンタイプ 推定スループット範囲(Mbps) 料金
      コネクタ インスタンスとネットワーク下り(外向き)のコスト
      f1-micro 100~500 f1-micro の料金
      e2-micro 200~1,000 e2-micro の料金
      e2-standard-4 3,200~16,000 e2 標準料金

    たとえば、MACHINE_TYPEf1-micro に設定した場合、コネクタの推定スループットは 100 Mbps(デフォルトが MIN の場合)または 500 Mbps(デフォルトが MAX の場合)になります。

    より詳しい情報とオプションの引数については、gcloud のリファレンスをご覧ください。

  4. 共有 VPC を使用していない場合、そしてサブネットを使用せずにカスタム IP 範囲を指定する場合は、次のコマンドでコネクタを作成します。

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    次のように置き換えます。

    • CONNECTOR_NAME: コネクタの名前。これは Compute Engine の命名規則に従う必要があります。
    • VPC_NETWORK: コネクタを接続する VPC ネットワーク
    • REGION: コネクタのリージョン。これは、サーバーレス サービスのリージョンと一致する必要があります。サービスが us-central または europe-west リージョンにある場合は、us-central1 または europe-west1 を使用します。
    • IP_RANGE: 予約されていない内部 IP ネットワーク。未割り振りスペースの /28 が必要です。指定された値は、CIDR 表記(10.8.0.0/28)です。この IP 範囲は、VPC ネットワーク内の既存の IP アドレス予約と重複してはいけません。たとえば、10.8.0.0/28 はほとんどの新しいプロジェクトで機能します。

    スループット制御などの詳細とオプションの引数については、gcloud のリファレンスをご覧ください。

  5. 使用する前に、コネクタが READY 状態になっていることを確認します。

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    次のように置き換えます。

    • CONNECTOR_NAME: コネクタの名前。これは、前のステップで指定した名前です。
    • REGION: コネクタのリージョン。これは、前の手順で指定したリージョンです。

    出力には、state: READY という行が含まれます。

Terraform

Terraform リソースを使用して、vpcaccess.googleapis.com API を有効にできます。

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Terraform モジュールを使用して VPC ネットワークとサブネットを作成し、コネクタを作成できます。

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

コネクタを使用するようにサーバーレス環境を構成する

サーバーレス VPC アクセス コネクタを作成したら、サーバーレス環境の手順に沿って、コネクタを使用するようにサーバーレス環境を構成します。

コネクタを使用するように Cloud Run を構成する

新しいサービスを作成する場合、または新しいリビジョンをデプロイする場合に、Cloud Console、gcloud コマンドライン ツール、または YAML ファイルで、コネクタを使用するようにサービスを構成できます。

Console

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[次へ] > [詳細設定] の順にクリックしてサービス構成ページに移動します。

  4. [接続] タブをクリックします。

    画像

  5. [VPC コネクタ] フィールドで、使用するコネクタを選択するか、[なし] を選択してサービスを VPC ネットワークから切断します。

  6. [作成] または [デプロイ] をクリックします。

gcloud

デプロイ中にコネクタを指定するには、--vpc-connector フラグを使用します。

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • SERVICE は、実際のサービス名に置き換えます。
  • IMAGE_URL を置き換えます。
  • CONNECTOR_NAME は、コネクタの名前に置き換えます。

既存のサービスのコネクタを接続、更新、削除するには、必要に応じて次のいずれかのフラグを指定して gcloud run services update コマンドを使用します。

たとえば、コネクタを接続または更新するには:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • SERVICE は、実際のサービス名に置き換えます。
  • CONNECTOR_NAME は、コネクタの名前に置き換えます。

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. 最上位の spec 属性の下の annotations 属性にある run.googleapis.com/vpc-access-connector 属性を追加または更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • SERVICE は、実際の Cloud Run サービスの名前に置き換えます。
    • CONNECTOR_NAME は、コネクタの名前に置き換えます。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml

コネクタを使用するように Cloud Functions を構成する

Google Cloud Console または gcloud コマンドライン ツールからコネクタを使用するように関数を構成できます。

Console

  1. Cloud Console で Cloud Functions の概要ページに移動します。

    Cloud Functions に移動

  2. [関数を作成] をクリックします。または、既存の関数をクリックしてその詳細ページに移動し、[編集] をクリックします。

  3. [ランタイム、ビルド、接続の設定] をクリックして詳細設定を表示します。

  4. [接続] タブの [下り(外向き)設定] で、[VPC コネクタ] フィールドにコネクタの名前を入力します。

gcloud

gcloud functions deploy コマンドを使用して関数をデプロイし、--vpc-connector フラグを指定します。

gcloud functions deploy FUNCTION_NAME \
--vpc-connector CONNECTOR_NAME \
FLAGS...

ここで

  • FUNCTION_NAME は、関数の名前です。
  • CONNECTOR_NAME は、コネクタの名前です。
  • FLAGS... は、関数のデプロイ時に渡す他のフラグです。

コネクタ経由で転送されるリクエストを制御する方法については、下り(外向き)設定をご覧ください。

コネクタを使用するように App Engine を構成する

Python 2

  1. App Engine の URL 取得サービスの使用を中止します。

    デフォルトでは、すべてのリクエストは URL 取得サービスを通じて転送されます。これにより、VPC ネットワークへのリクエストは失敗します。このデフォルトを無効にするには、URL 取得を無効にしてすべての送信リクエストの処理をできないようにするをご覧ください。

    必要に応じて、個々のリクエストに urlfetch ライブラリを直接使用することもできますが、この方法はおすすめしません。

  2. サーバーレス VPC アクセス フィールドを app.yaml ファイルに追加します。

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    以下を置き換えます。

    • PROJECT_ID を Cloud プロジェクト ID に置き換えます
    • REGION を、コネクタが存在するリージョンに置き換えます
    • CONNECTOR_NAME を、コネクタの名前に置き換えます
  3. サービスをデプロイします。

    gcloud app deploy

    サービスをデプロイすると、内部 IP アドレスへのリクエストを送信して VPC ネットワーク内のリソースにアクセスできるようになります。

Java 8

  1. サーバーレス VPC アクセス要素をサービスの appengine-web.xml ファイルに追加します。

    <vpc-access-connector>
    <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
    </vpc-access-connector>
    

    以下を置き換えます。

    • PROJECT_ID を Cloud プロジェクト ID に置き換えます
    • REGION を、コネクタが存在するリージョンに置き換えます
    • CONNECTOR_NAME を、コネクタの名前に置き換えます
  2. サービスをデプロイします。

    gcloud app deploy WEB-INF/appengine-web.xml

    サービスをデプロイすると、内部 IP アドレスへのリクエストを送信して VPC ネットワーク内のリソースにアクセスできるようになります。

その他のすべてのランタイム

  1. サーバーレス VPC アクセス フィールドを app.yaml ファイルに追加します。

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    以下を置き換えます。

    • PROJECT_ID を Cloud プロジェクト ID に置き換えます
    • REGION を、コネクタが存在するリージョンに置き換えます
    • CONNECTOR_NAME を、コネクタの名前に置き換えます
  2. サービスをデプロイします。

    gcloud app deploy

    サービスをデプロイすると、内部 IP アドレスへのリクエストを送信して VPC ネットワーク内のリソースにアクセスできるようになります。

VPC リソースへのアクセスを制限する

ファイアウォール ルールを使用して、コネクタによる VPC ネットワークへのアクセスを制限できます。

共有 VPC ネットワークに接続する場合、ファイアウォール ルールは自動的に作成されません。ホスト プロジェクトのネットワーク管理者ロールを持つユーザーが、ホスト プロジェクトの構成時にファイアウォール ルールを設定します。

スタンドアロン VPC ネットワークに接続すると、優先度 1000 の暗黙的なファイアウォール ルールが VPC ネットワークに自動的に作成されます。これにより、コネクタのサブネットまたはカスタム IP 範囲から VPC ネットワーク内のすべての宛先への上り(内向き)が許可されます。暗黙的なファイアウォール ルールは Google Cloud Console に表示はされませんが。関連するコネクタが存在する限り Google Cloud Console に存在します。コネクタが VPC ネットワーク内のすべての宛先に到達できないようにするには、コネクタのアクセスを制限します。

宛先リソースに上り(内向き)ルールを作成するか、VPC コネクタで下り(外向き)ルールを作成することで、コネクタのアクセスを制限できます。

上り(内向き)ルールを使用してアクセスを制限する

ネットワーク タグまたは CIDR 範囲を選択して、VPC ネットワークへの受信トラフィックを制御します。

ネットワーク タグ

次の手順は、コネクタのネットワーク タグに基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. VPC ネットワーク間のコネクタのトラフィックを拒否します。

    コネクタのネットワーク タグからの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。

      • ユニバーサル ネットワーク タグ: vpc-connector
      • 一意のネットワーク タグ: vpc-connector-REGION-CONNECTOR_NAME

        以下のように置き換えます。

        • REGION: 制限するコネクタのリージョン
        • CONNECTOR_NAME: 制限するコネクタの名前

      コネクタ ネットワーク タグの詳細については、ネットワーク タグをご覧ください。

    • VPC_NETWORK: VPC ネットワークの名前

    • PRIORITY: 1~999 の整数(両端の値を含む)。例: 990

  3. コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。

    allow フラグと target-tags フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources
    • PROTOCOLS: VPC コネクタから許可するプロトコル。tcpudpicmpespahsctp、または任意の IP プロトコル番号を 1 つ以上指定できます。大文字と小文字は区別されます。ポートベースのプロトコル(tcpudpsctp)の場合、ルールを適用するポートまたはポート範囲のリストを指定できます。詳細については、allow フラグのドキュメントをご覧ください。
    • VPC_CONNECTOR_NETWORK_TAG: すべてのコネクタ(今後作成されるコネクタを含む)のアクセス権を制限する場合はユニバーサル コネクタ ネットワーク タグ。または、特定のコネクタのアクセス権を制限する場合は一意のネットワーク タグ。これは、前のステップで指定したネットワーク タグと一致する必要があります。

      • ユニバーサル ネットワーク タグ: vpc-connector
      • 一意のネットワーク タグ: vpc-connector-REGION-CONNECTOR_NAME

        以下のように置き換えます。

        • REGION: 制限するコネクタのリージョン
        • CONNECTOR_NAME: 制限するコネクタの名前

      コネクタ ネットワーク タグの詳細については、ネットワーク タグをご覧ください。

    • VPC_NETWORK: VPC ネットワークの名前

    • RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。

    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

CIDR 範囲

次の手順は、コネクタの CIDR 範囲に基づいて、VPC ネットワークへのアクセスを制限する上り(内向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. VPC ネットワーク間のコネクタのトラフィックを拒否します。

    コネクタの CIDR 範囲からの上り(内向き)を拒否するには、VPC ネットワークで優先度 1000 未満の上り(内向き)ファイアウォール ルールを作成します。これによって、デフォルトでサーバーレス VPC アクセスが VPC ネットワークに作成する暗黙的なファイアウォール ルールがオーバーライドされます。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector
    • VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
    • VPC_NETWORK: VPC ネットワークの名前
    • PRIORITY: 1~999 の整数。例: 990
  3. コネクタ トラフィックを受信する必要があるリソースに対するコネクタのトラフィックを許可します。

    allow フラグと target-tags フラグを使用して、VPC コネクタでアクセスする VPC ネットワーク内のリソースに対して上り(内向き)ファイアウォール ルールを作成します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources
    • PROTOCOLS: VPC コネクタから許可するプロトコル。tcpudpicmpespahsctp、または任意の IP プロトコル番号を 1 つ以上指定できます。大文字と小文字は区別されます。ポートベースのプロトコル(tcpudpsctp)の場合、ルールを適用するポートまたはポート範囲のリストを指定できます。詳細については、allow フラグのドキュメントをご覧ください。
    • VPC_CONNECTOR_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
    • VPC_NETWORK: VPC ネットワークの名前
    • RESOURCE_TAG: VPC コネクタがアクセスする VPC リソースのネットワーク タグ。
    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必要なフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

下り(外向き)ルールを使用してアクセスを制限する

次の手順は、コネクタのアクセスを制限する下り(外向き)ルールを作成する方法を示しています。

  1. ファイアウォール ルールを挿入するために必要な権限を付与されていることを確認してください。次のいずれかの Identity and Access Management(IAM)ロールを付与されている必要があります。

  2. コネクタからの下り(外向き)トラフィックを拒否します。

    サーバーレス VPC アクセス コネクタに下り(外向き)ファイアウォール ルールを作成し、送信トラフィックの送信を防ぎます。

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。
    • VPC_NETWORK: VPC ネットワークの名前
    • PRIORITY: 1~999 の整数。例: 990
  3. コネクタがアクセスするように設定した CIDR 範囲内に宛先が存在する場合に、下り(外向き)トラフィックを許可します。

    allow フラグと destination-ranges フラグを使用して、特定の宛先範囲でコネクタからの下り(外向き)トラフィックを許可するファイアウォール ルールを作成します。宛先範囲には、コネクタにアクセスを許可する VPC ネットワーク内のリソースの CIDR 範囲を設定します。このルールの優先度は、前の手順で作成したルールの優先度よりも低い値に設定します。

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    次のように置き換えます。

    • RULE_NAME: 新しいファイアウォール ルールの名前。例: allow-vpc-connector-for-select-resources
    • PROTOCOLS: VPC コネクタから許可するプロトコル。tcpudpicmpespahsctp、または任意の IP プロトコル番号を 1 つ以上指定できます。大文字と小文字は区別されます。ポートベースのプロトコル(tcpudpsctp)の場合、ルールを適用するポートまたはポート範囲のリストを指定できます。詳細については、allow フラグのドキュメントをご覧ください。
    • RESOURCE_CIDR_RANGE: アクセスを制限するコネクタの CIDR 範囲
    • VPC_NETWORK: VPC ネットワークの名前
    • VPC_CONNECTOR_NETWORK_TAG: 既存のすべての VPC コネクタと今後作成される VPC コネクタにルールを適用する場合は、ユニバーサル VPC コネクタのネットワーク タグを使用します。または、特定のコネクタを制御する場合は、一意の VPC コネクタのネットワーク タグを使用します。前のステップで一意のネットワーク タグを使用した場合は、一意のネットワーク タグを使用します。
    • PRIORITY: 前のステップで設定した優先度よりも小さい整数。たとえば、前のステップで作成したルールの優先度を 990 に設定した場合は、980 を試してください。

ファイアウォール ルールの作成に必須のフラグとオプション フラグの詳細については、gcloud compute firewall-rules create のドキュメントをご覧ください。

トラブルシューティング

サービス アカウント権限

Cloud プロジェクトでオペレーションを実行するために、サーバーレス VPC アクセスはサーバーレス VPC アクセス サービス エージェントのサービス アカウントを使用します。このサービス アカウントのメールアドレスは、次の形式になります。

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

このサービス アカウントには、デフォルトでサーバーレス VPC アクセス サービス エージェントのロール(roles/vpcaccess.serviceAgent)が設定されています。このアカウントの権限を変更すると、サーバーレス VPC アクセスのオペレーションが失敗する可能性があります。

エラー

コネクタの作成でエラーが発生した場合は、次の方法をお試しください。

  • VPC ネットワーク内で予約されている既存の IP アドレスと重複しない RFC 1918 の内部 IP 範囲を指定します。
  • プロジェクトから ID serverless-vpc-access-images で Compute Engine VM イメージを使用できるように、プロジェクトに権限を付与します。これに合わせて組織ポリシーを更新する方法については、イメージ アクセスの制限の設定をご覧ください。
  • VM が IP 転送を有効にできるように組織のポリシー constraints/compute.vmCanIpForward を設定します。

コネクタを指定しても、VPC ネットワーク内のリソースにアクセスできない場合は、次のようにします。

  • コネクタの IP 範囲からの上り(内向き)を拒否する、優先度が 1,000 よりも小さいファイアウォール ルールが、VPC ネットワーク上にないことを確認します。

コネクタの削除

コネクタを削除する前に、まだ接続しているサービスがないことを確認してください。

共有 VPC ホスト プロジェクトでコネクタを設定した共有 VPC ユーザー(非推奨)の場合は、gcloud compute networks vpc-access connectors describe コマンドを使用して、特定のコネクタを使用するサービスが存在するプロジェクトを一覧表示できます。

コネクタを削除するには、Cloud Console または gcloud コマンドライン ツールを使用します。

Console

  1. Cloud Console で、サーバーレス VPC アクセスの概要ページに移動します。

    サーバーレス VPC アクセスに移動

  2. 削除するコネクタを選択します。

  3. [削除] をクリックします。

gcloud

コネクタを削除するには、次の gcloud コマンドを使用します。

gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION

次のように置き換えます。

  • CONNECTOR_NAME は、削除するコネクタの名前に置き換えます。
  • REGION を、コネクタが配置されているリージョンに置き換えます

次のステップ