如果貴組織使用共用虛擬私有雲,您可以在服務專案或主機專案中設定 Serverless VPC Access 連接器。本指南說明如何在服務專案中設定連接器。
如果您需要在主專案中設定連接器,請參閱「在主專案中設定連接器」。如要瞭解各個方法的優點,請參閱「連線至共用虛擬私有雲網路」一文。
整體來說,您必須採取下列步驟:
- 新增防火牆規則,允許必要的 IP 範圍
- 授予權限
- 建立子網路
- 在「設定無伺服器虛擬私有雲存取」頁面中,完成下列各節中的步驟:
事前準備
無伺服器虛擬私人雲端存取不相容於網址擷取服務。開始前,請停止使用 URLFetchService
。
新增防火牆規則來允許 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 函式和 App Engine 標準環境底層的 Google 基礎架構使用。我們保證這些 IP 的所有要求都來自 Google 基礎架構,確保每個 Cloud Run、Cloud Run 函式和 App Engine 服務/函式/應用程式只與所連結的 VPC 連接器通訊。
如要設定簡單的規則,請套用規則,允許已連線至共用虛擬私有雲網路的任何服務專案中的無伺服器服務,向網路中的任何資源傳送要求。
如要套用這些規則,請按照下列步驟操作:
執行下列三個指令,設定規則,允許無伺服器環境中的要求存取網路中的所有 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 網路上建立傳入規則,允許來自連接器的要求:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
這項規則會讓 VPC 連接器存取網路中的所有資源。如要限制無伺服器環境可透過無伺服器虛擬私有雲存取存取的資源,請為這些防火牆規則指定目標。
為特定連接器建立防火牆規則
按照「新增防火牆規則以允許 IP 範圍」一文中的程序操作,防火牆規則就會套用至所有連接器,包括目前和日後建立的連接器。如果您不想這樣做,而是想為特定連接器建立規則,可以將規則的範圍設為只套用至這些連接器。
如要將規則的範圍限制為特定連接器,您可以使用下列任一機制:
- 網路標記。每個連接器都有兩個網路標記:
vpc-connector
和vpc-connector-REGION-CONNECTOR_NAME
。使用後者格式,將防火牆規則的範圍限制在特定連接器。 - IP 範圍。請僅將此參數用於輸出規則,因為它不適用於輸入規則。您可以使用連接器子網路的 IP 範圍,將防火牆規則的範圍限制在單一 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
服務帳戶不存在,請在服務專案中開啟 Serverless VPC Access API,然後再試一次:gcloud services enable vpcaccess.googleapis.com
如果您不想授予這些服務帳戶存取整個共用 VPC 網路的權限,而只想授予存取特定子網路的權限,可以改為只將這些角色授予特定子網路上的服務帳戶。
建立子網路
使用共用虛擬私有雲時,共用虛擬私有雲管理員必須為每個連接器建立子網路。請按照新增子網路中的說明,將 /28
子網路新增至共用 VPC 網路。這個子網路必須與要使用連接器的無伺服器服務位於相同區域。
後續步驟
- 在「設定無伺服器虛擬私有雲存取」頁面中,完成下列各節中的步驟: