設定 Shared VPC 服務專案中的連接器

如果貴組織使用 Shared VPC,您可以在服務專案或主專案中設定無伺服器 VPC 存取連接器。本指南說明如何在服務專案中設定連接器。

如需設定主專案中的連接器,請參閱「設定主專案中的連接器」。如要瞭解各種方法的優點,請參閱「連線至 Shared VPC 網路」。

必要的步驟大致如下:

  1. 新增防火牆規則,允許必要的 IP 範圍
  2. 授予權限
  3. 建立子網路
  4. 在「Configuring Serverless VPC Access」(無伺服器 VPC 存取設定) 頁面完成下列各節所述步驟:

新增防火牆規則以允許 IP 範圍

為執行這些步驟,必須具備主專案的下列角色之一:

您必須建立防火牆規則,允許下列 IP 範圍的要求連線至連接器,並允許連接器連線至這些 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 基礎架構,確保函式只會與所連線的 VPC 連接器通訊。

如要簡化設定,可套用規則,針對任何連線至 Shared VPC 網路的服務專案,允許其中的無伺服器服務向網路中的資源傳送要求。

套用上述規則的方法如下:

  1. 執行下列三項指令以設定規則,允許無伺服器環境的要求連線至網路中的所有 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 是連接器所要連接的虛擬私有雲網路。

  2. 建立虛擬私有雲網路的輸入規則,允許來自連接器的要求:

    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-connectorvpc-connector-REGION-CONNECTOR_NAME,採用後者的格式,即可將防火牆規則的範圍限制於特定連接器。
  • IP 範圍。此方法僅適用於輸出規則,不適用於輸入規則。您可以使用連接器子網路的 IP 範圍,將防火牆規則的範圍限制於單一 VPC 連接器。

為服務專案中的服務帳戶授予權限

對於要使用 VPC 連接器的每個服務專案,Shared VPC 管理員必須將主專案中「Compute 網路使用者」角色 (compute.networkUser) 授予服務專案 cloudservicesvpcaccess 服務帳戶。

授予此角色的方法如下:

  1. 請使用下列指令:

    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"
  2. 如果@gcp-sa-vpcaccess服務帳戶不存在,請在服務專案中開啟無伺服器 VPC 存取 API,然後再試一次:

    gcloud services enable vpcaccess.googleapis.com

如果不想讓這些服務帳戶存取整個 Shared VPC 網路,而只是要授予特定子網路的存取權限,您可以只針對特定子網路,為服務帳戶授予相關角色

建立子網路

使用 Shared VPC 時,Shared VPC 管理員必須建立每個連接器的子網路。請按照「新增子網路」說明文件,將 /28 子網路新增至 Shared VPC 網路。這個子網路的所在區域,必須與使用連接器的無伺服器服務相同。

後續步驟