建立及管理 Private Service Connect 介面
本頁面說明生產者網路管理員如何建立及管理 Private Service Connect 介面。服務供應商虛擬私有雲網路可透過 Private Service Connect 介面,啟動與用戶虛擬私有雲網路的連線。
事前準備
- 您必須在專案中啟用 Compute Engine API。
- 找出要連線的網路連結網址。
- 如果網路連結設定為手動接受連線,請確認網路管理員已將您的專案新增至網路連結的接受清單。
角色
如要取得建立 Private Service Connect 介面所需的權限,請要求管理員授予您專案的下列 IAM 角色:
-
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) -
Compute 網路管理員 (
roles/compute.networkAdmin
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
Compute 執行個體管理員 (v1) 角色包含 compute.instances.pscInterfaceCreate
權限,這是建立 Private Service Connect 介面時的必要權限。
建立及設定 Private Service Connect 介面
如要建立及設定具有 Private Service Connect 介面的虛擬機器 (VM) 執行個體,請完成下列步驟。
建立具有 Private Service Connect 介面的 VM
建立 Private Service Connect 介面時,您會建立至少有兩個網路介面的 VM。第一個介面會連線至生產者子網路。第二個介面是 Private Service Connect 介面,用於要求連線至用戶網路中的網路連結。
如果連線獲得接受, Google Cloud 會從網路連結指定的子網路,為 Private Service Connect 介面指派內部 IP 位址。
如果您建立的 Private Service Connect 介面參照的網路連結已設定為手動接受連線,且介面的專案不在網路連結的接受清單中,系統就會無法建立 Private Service Connect 介面的 VM。在這種情況下,請與消費者機構合作,將您的專案新增至接受清單,然後建立 Private Service Connect 介面。
建立 Private Service Connect 介面時,您可以選擇為其指派一或多個內部別名 IP 範圍。如果您打算指派別名 IP 範圍,請與消費者機構聯絡,決定適當的 IP 位址範圍。
如要指派別名 IP 範圍,請以 CIDR 標記法指定範圍的前置字串長度。將一或多個別名 IP 範圍指派給 Private Service Connect 介面時,Google Cloud 會從與網路連結相關聯的子網路主要 IP 位址範圍,分配別名 IP 範圍。Private Service Connect 介面的主要 IP 位址是從任何別名 IP 範圍外部分配。如果網路附件的子網路中沒有足夠的 IP 位址可分配主要 IP 位址和別名 IP 範圍,系統就會無法建立 Private Service Connect 介面的 VM。您可以說明介面的 VM,找出指派的特定 IP 位址。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
輸入名稱。
選取與要連線的網路附件區域相符的區域。
選取「區域」。
點選「進階選項」。
點選「網路」。
在「Network interfaces」(網路介面) 專區中,按一下第一個網路介面 (即主要網路介面),然後執行下列操作:
- 選取主要網路介面的「Network」(網路)。
- 選取主要網路介面的「子網路」。這個子網路必須與 Private Service Connect 介面的網路連結位於相同區域。
按一下「新增網路介面」。
在「介面類型」部分,選取「Private Service Connect」。
輸入「網路連結網址」。
選取 IP 堆疊類型。如要建立雙重堆疊 Private Service Connect 介面,網路附件的子網路必須是雙重堆疊。
選用:如要新增別名 IP 範圍,請在「前置字串長度」方塊中輸入前置字串長度,例如
/30
。如要新增多個別名 IP 範圍,請按一下「新增 IP 範圍」,然後輸入要新增的每個別名 IP 範圍的前置字元長度。按一下 [完成]。
點選「建立」。
gcloud
如要建立僅支援 IPv4 的 Private Service Connect 介面 VM,請使用 instances create
指令。
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --image-project=IMAGE_PROJECT \ --image=IMAGE \ --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \ --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME'
更改下列內容:
INSTANCE_NAME
:新執行個體的名稱ZONE
:新執行個體的可用區MACHINE_TYPE
:執行個體的機器類型,可以是預先定義或自訂。IMAGE_PROJECT
:圖片的專案。舉例來說,如果您將debian-10-buster-v20230809
指定為圖片,請將debian-cloud
指定為圖片專案。您可以使用gcloud compute images list
指令,查看可用映像檔、映像檔專案和映像檔系列清單。IMAGE
:公開映像檔的特定版本,例如debian-10-buster-v20230809
。PRODUCER_NETWORK
:執行個體的網路。PRODUCER_SUBNET
:VM 主要網路介面的子網路。這個子網路必須與 Private Service Connect 介面的網路連結位於相同區域。CONSUMER_PROJECT_ID
:您要連結的消費者 ID。ATTACHMENT_NAME
:要連線的網路附件名稱。
如要為 Private Service Connect 介面同時指派 IPv4 和 IPv6 位址,請指定 stack-type='IPV4_IPv6'
。介面參照的網路附件必須與雙重堆疊子網路建立關聯。
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --image-project=IMAGE_PROJECT \ --image=IMAGE \ --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \ --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,stack-type='IPV4_IPV6''
如要為 Private Service Connect 介面指派一或多個別名 IP 範圍,請指定要指派的每個別名 IP 範圍的前置字元長度:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --image-project=IMAGE_PROJECT \ --image=IMAGE \ --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \ --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,aliases=ALIAS_IP_RANGE'
以 CIDR 標記法取代一或多個前置字元長度 ALIAS_IP_RANGE
。您可以在以半形分號分隔的清單中加入多個前置字串長度,例如 /24;/28
。
API
如要建立具有僅限 IPv4 的 Private Service Connect 介面的 VM,請將 POST
要求傳送至 instances.insert
方法。
POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "networkInterfaces": [ { "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK", "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET" }, { "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME" } ] }
更改下列內容:
PRODUCER_PROJECT_ID
:生產者專案的 ID。INSTANCE_ZONE
:新執行個體的可用區。MACHINE_TYPE_ZONE
:機器類型的可用區。MACHINE_TYPE
:新 VM 的機器類型,可以是預先定義或自訂。VM_NAME
:新 VM 的名稱。IMAGE_PROJECT
:包含圖片的專案。舉例來說,如果將debian-10-buster-v20200309
指定為圖片,請將debian-cloud
指定為圖片專案。IMAGE
:特定版本的公開映像檔,例如debian-10-buster-v20200309
。PRODUCER_PROJECT_ID
:介面專案的專案 ID。PRODUCER_NETWORK
:生產者虛擬私有雲網路的名稱。SUBNET_REGION
:主要網路介面子網路的區域。這個子網路必須與 Private Service Connect 介面的網路連結位於相同區域。SUBNET
:主要網路介面的子網路名稱。CONSUMER_PROJECT_ID
:消費者專案的 ID。ATTACHMENT_REGION
:網路連結的區域。ATTACHMENT_NAME
:網路附件的名稱。
如要為 Private Service Connect 介面同時指派 IPv4 和 IPv6 位址,請指定 "stack-type": "IPV4_IPv6"
。介面參照的網路附件必須與雙重堆疊子網路建立關聯。
POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "networkInterfaces": [ { "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK", "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET" }, { "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME", "stackType": "IPV4_IPV6" } ] }
如要為 Private Service Connect 介面指派一或多個別名 IP 範圍,請指定要指派的每個別名 IP 範圍的前置字元長度。
POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "disks": [ { "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot": true } ], "networkInterfaces": [ { "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK", "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET" }, { "aliasIpRanges": [ { "ipCidrRange": "ALIAS_IP_RANGE" } ], "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME" } ] }
將 ALIAS_IP_RANGE
替換為 CIDR 標記法中的前置字串長度,例如 /28
。您可以在下列表單的 aliasIpRanges
清單中指定多個別名 IP 範圍:
"aliasIpRanges": [ { "ipCidrRange": "/28" }, { "ipCidrRange": "/30" } ]
如要進一步瞭解如何建立 VM 執行個體,請參閱「建立及啟動 VM 執行個體」。
允許 SSH 連線
請確認防火牆規則已設定為允許連入的 SSH 連線連至 Private Service Connect 介面的 VM。
找出 Private Service Connect 介面的名稱 Google Cloud
如要設定路由,您必須知道 Private Service Connect 介面的 Google Cloud 名稱。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:
按一下具有 Private Service Connect 介面的 VM 名稱。
在「網路介面」部分,找出並記下 Private Service Connect 介面的名稱,例如
nic1
。
gcloud
使用
compute instances describe
指令。gcloud compute instances describe VM_NAME --zone=ZONE
更改下列內容:
VM_NAME
:具有 Private Service Connect 介面的 VM 名稱。ZONE
:VM 的可用區。
在指令輸出內容中,找出並記下 Private Service Connect 介面的 Google Cloud 名稱,例如
nic1
。
找出 Private Service Connect 介面的客體 OS 名稱
如要設定路由,您必須知道 Private Service Connect 介面的客體 OS 名稱,這與 Google Cloud中的介面名稱不同。
如要在 Debian VM 上找出介面名稱,請執行下列步驟。如要瞭解其他作業系統的 VM,請參閱作業系統的公開說明文件。
- 連線至 Private Service Connect 介面的 VM。
執行下列指令:
ip address
在網路介面清單中,找出並記下與 Private Service Connect 介面 IP 位址相關聯的介面名稱,例如
ens5
。
找出 Private Service Connect 介面的閘道 IP
如要設定路由,您必須知道 Private Service Connect 介面預設閘道的 IP 位址。
從介面的 VM 將下列
GET
要求傳送至相關聯的中繼資料伺服器:curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
將
INTERFACE_NUMBER
替換為Google Cloud 私人服務連線介面名稱的數字部分。舉例來說,如果介面名稱為nic1
,請使用1
值。
新增消費者子網路的路徑
您必須為連線至 Private Service Connect 介面的每個消費者子網路,在 Private Service Connect 介面的預設閘道中新增路由。這可確保要前往消費者網路的流量會從 Private Service Connect 介面輸出。
以下步驟說明如何暫時更新使用 Debian 作業系統的 VM 路由表。如要永久更新表格,或在其他作業系統上更新路徑,請參閱作業系統的公開說明文件。
請針對連線至 Private Service Connect 介面的每個消費者子網路,執行下列指令:
sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
更改下列內容:
CONSUMER_SUBNET_RANGE
:消費者子網路的 IP 位址範圍。GATEWAY_IP
:介面子網路的預設閘道 IP 位址。OS_INTERFACE_NAME
: Private Service Connect 介面的客體 OS 名稱,例如ens5
。
建立含有 Private Service Connect 介面的執行個體範本
您可以建立包含 Private Service Connect 介面的執行個體範本。
主控台
前往「Instance templates」(執行個體範本) 頁面。
點選「建立執行個體範本」。
在「Name」(名稱) 中輸入執行個體範本的名稱。
點選「進階選項」。
點選「網路」。
在「Network interfaces」(網路介面) 區段中,按一下
展開箭頭。為執行個體範本的主要網路介面選取「網路」和「子網路」。
按一下 [完成]。
按一下「新增網路介面」。
按一下「Private Service Connect」。
為 Private Service Connect 介面選取「網路」和「子網路」。
按一下 [完成]。
點選「建立」。
gcloud
使用 instance-templates create
指令。
gcloud compute instance-templates create NAME \ --machine-type=MACHINE_TYPE \ --network-interface=subnet=SUBNET \ --region=REGION \ --image-project=IMAGE_PROJECT \ --image=IMAGE \ --network-interface=network-attachment=projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME
更改下列內容:
NAME
:執行個體範本的名稱。- :使用這個執行個體範本建立的 VM 預先定義或自訂機器類型,例如
f1-micro
。MACHINE_TYPE
SUBNET
:執行個體範本的子網路。使用這個執行個體範本建立 VM 時,系統會從這個子網路為 VM 的主要網路介面指派內部 IP 位址。REGION
:執行個體範本子網路的區域。IMAGE_PROJECT
:圖片的專案。舉例來說,如果您將debian-10-buster-v20230809
指定為圖片,請將debian-cloud
指定為圖片專案。您可以使用gcloud compute images list
指令,查看可用映像檔、映像檔專案和映像檔系列清單。IMAGE
:公開映像檔的特定版本,例如debian-10-buster-v20230809
。ATTACHMENT_PROJECT_ID
:網路附件專案的 ID。ATTACHMENT_REGION
:網路附件的區域。ATTACHMENT_NAME
:網路附件的名稱。使用這個執行個體範本建立 VM 時,Private Service Connect 介面會要求連線至這個網路連結。您可以指定其他設定,例如映像檔名稱和開機磁碟大小。詳情請參閱「建立新的執行個體範本」。
API
對 instanceTemplates.insert
方法發出 POST
要求。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET" }, { "networkAttachment": "projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/NETWORK_ATTACHMENT" } ] } }
更改下列內容:
PROJECT_ID
:要在其中建立執行個體範本的專案 ID。NAME
:執行個體範本的名稱。IMAGE_PROJECT
:圖片的專案。舉例來說,如果您將debian-10-buster-v20230809
指定為圖片,請將debian-cloud
指定為圖片專案。您可以使用gcloud compute images list
指令,查看可用映像檔和映像檔專案的清單。IMAGE
:公開映像檔的特定版本,例如debian-10-buster-v20230809
。- :使用這個執行個體範本建立的 VM 所用預先定義或自訂機器類型,例如
f1-micro
。MACHINE_TYPE
SUBNET_REGION
:執行個體範本子網路的區域。SUBNET
:執行個體範本的子網路。使用這個執行個體範本建立 VM 時,系統會從這個子網路為 VM 的主要網路介面指派內部 IP 位址。ATTACHMENT_PROJECT_ID
:網路附件專案的 ID。ATTACHMENT_REGION
:網路附件的區域。NETWORK_ATTACHMENT
:網路附件的名稱。使用這個執行個體範本建立 VM 時,Private Service Connect 介面會要求連線至這個網路連結。
如要進一步瞭解如何建立執行個體範本,請參閱建立執行個體範本。
搭配 VPC Service Controls 使用 Private Service Connect 介面
您可以搭配 VPC Service Controls 使用 Private Service Connect 介面。這樣一來,生產者虛擬私有雲網路就能透過消費者虛擬私有雲網路存取 Google API 和服務,而消費者機構則可享有 VPC Service Controls 的安全防護。
如要搭配 VPC Service Controls 使用 Private Service Connect 介面,必須更新 Private Service Connect 介面 VM 的路由表。將預設路徑換成可透過 Private Service Connect 介面將流量傳送至 Private Service Connect 介面預設閘道的路徑。
下列步驟會暫時更新使用 Debian 的 VM 的路由表。如要永久新增路徑,或更新其他作業系統的路徑,請參閱作業系統的公開說明文件。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面:
按一下具有 Private Service Connect 介面的 VM 名稱。
執行下列指令:
sudo ip route replace default via GATEWAY_IP dev OS_INTERFACE_NAME
更改下列內容:
GATEWAY_IP
:介面子網路的預設閘道 IP 位址。OS_INTERFACE_NAME
: Private Service Connect 介面的客體 OS 名稱,例如ens5
。
說明 Private Service Connect 介面
您可以描述 VM,查看其 Private Service Connect 介面的詳細資料。介面的 IP 位址、別名 IP 範圍、網路附件和消費者子網路會列在 VM 說明的網路介面部分。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下具有 Private Service Connect 介面的 VM。
在「網路介面」部分,查看 Private Service Connect 介面的詳細資料。
gcloud
gcloud compute instances describe VM_NAME --zone=ZONE
更改下列內容:
VM_NAME
:介面 VM 的名稱。ZONE
:VM 的可用區。
API
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
更改下列內容:
PROJECT_ID
:VM 的專案 ID。ZONE
:VM 所在的可用區。VM_NAME
:VM 名稱。
刪除具有 Private Service Connect 介面的 VM
如要刪除 Private Service Connect 介面,必須刪除所連結的 VM 執行個體。詳情請參閱刪除執行個體。