建立及管理 Private Service Connect 介面

本頁面說明供應者網路管理員如何建立及管理 Private Service Connect 介面。Private Service Connect 介面可讓服務供應商虛擬私有雲 (VPC) 網路啟動與消費者虛擬私有雲網路的連線。

事前準備

角色

如要取得建立 Private Service Connect 介面所需的權限,請要求管理員為您授予專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

Compute Instance Admin (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 會將網路連結指定的子網路內部 IP 位址指派給 Private Service Connect 介面。

如果您建立的 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 位址。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 點選「建立執行個體」

  3. 輸入名稱

  4. 選取與要連線網路附件所在地區相符的「Region」(地區)

  5. 選取「區域」

  6. 點選「進階選項」

  7. 點選「網路」

  8. 在「Network interfaces」(網路介面) 專區中,按一下第一個網路介面 (即主要網路介面),然後執行下列操作:

    1. 為主要網路介面選取「Network」(網路)
    2. 為主要網路介面選取「子網路」。這個子網路必須與 Private Service Connect 介面的網路連結位於相同區域。
  9. 按一下「新增網路介面」

  10. 在「Interface type」(介面類型) 部分,選取「Private Service Connect」

  11. 輸入網路附件網址

  12. 選取IP 堆疊類型。如要建立雙重堆疊 Private Service Connect 介面,網路附件的子網路必須為雙重堆疊。

  13. 選用:如要新增別名 IP 範圍,請在「前置字串長度」方塊中輸入前置字串長度,例如 /30。如要新增多個別名 IP 範圍,請按一下「Add IP range」,然後為每個要新增的額外別名 IP 範圍輸入前置字串長度。

  14. 按一下 [完成]

  15. 按一下 [建立]。

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'

ALIAS_IP_RANGE 替換為 CIDR 標記法中的一或多個前置字元長度。您可以在分號分隔的清單中加入多個前置字串長度,例如 /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 名稱。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下含有 Private Service Connect 介面的 VM 名稱。

  3. 在「Network interfaces」部分,找出 Private Service Connect 介面名稱並記下,例如 nic1

gcloud

  1. 使用 compute instances describe 指令

    gcloud compute instances describe VM_NAME
      --zone=ZONE
    

    更改下列內容:

    • VM_NAME:具有 Private Service Connect 介面的 VM 名稱。
    • ZONE:VM 的可用區。
  2. 在指令的輸出內容中,找出 Private Service Connect 介面的名稱並記下,例如 Google Cloud nic1

找出 Private Service Connect 介面的訪客作業系統名稱

如要設定路由,您必須知道 Private Service Connect 介面的訪客作業系統名稱,這與 Google Cloud中的介面名稱不同。

如要在 Debian VM 上找出介面名稱,請執行下列操作。如果是使用其他作業系統的 VM,請參閱該作業系統的公開說明文件。

  1. 連線至 Private Service Connect 介面的 VM
  2. 執行下列指令:

    ip address
    

    在網路介面清單中,找出與 Private Service Connect 介面 IP 位址相關聯的介面名稱,並記下這項資訊,例如 ens5

找出 Private Service Connect 介面的閘道 IP

如要設定路由,您必須知道 Private Service Connect 介面的預設閘道的 IP 位址。

  1. 連線至 Private Service Connect 介面的 VM

  2. 從介面的 VM 傳送下列 GET 要求至相關聯的中繼資料伺服器

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
    

    INTERFACE_NUMBER 替換為 Private Service Connect 介面Google Cloud 名稱的數字部分。舉例來說,如果介面名稱為 nic1,請使用 1 的值。

新增消費者子網路的路徑

您必須為連線至 Private Service Connect 介面的每個用戶端子網路,新增至 Private Service Connect 介面的預設閘道。這麼做可確保用戶網路的流量會從 Private Service Connect 介面傳出。

以下步驟說明如何暫時更新使用 Debian 作業系統的 VM 的路由表。如要永久更新資料表,或在其他作業系統上更新路徑,請參閱作業系統的公開說明文件。

  1. 連線至 Private Service Connect 介面的 VM

  2. 請對連線至 Private Service Connect 介面的每個消費者子網路執行下列指令:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
    

    更改下列內容:

使用 Private Service Connect 介面建立執行個體範本

您可以建立包含 Private Service Connect 介面的執行個體範本

主控台

  1. 前往「Instance templates」(執行個體範本) 頁面。

    前往「Instance templates」(執行個體範本) 頁面

  2. 點選「建立執行個體範本」

  3. 在「Name」(名稱) 中輸入執行個體範本的名稱。

  4. 點選「進階選項」

  5. 點選「網路」

  6. 在「Network interfaces」(網路介面) 區段中,按一下 展開箭頭。

  7. 為執行個體範本的主要網路介面選取「網路」和「子網路」

  8. 按一下 [完成]

  9. 按一下「新增網路介面」

  10. 按一下「Private Service Connect」

  11. 為 Private Service Connect 介面選取「Network」(網路) 和「Subnetwork」(子網路)

  12. 按一下 [完成]

  13. 按一下 [建立]。

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:執行個體範本的名稱。
  • MACHINE_TYPE:使用此例項範本建立的 VM 的預先定義自訂機器類型,例如 f1-micro
  • 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
  • MACHINE_TYPE:使用這個執行個體範本建立的 VM 的預先定義自訂機器類型,例如 f1-micro
  • SUBNET_REGION:執行個體範本子網路的區域。
  • SUBNET:執行個體範本的子網路。使用這個執行個體範本建立 VM 時,VM 的主要網路介面會指派這個子網路的內部 IP 位址。
  • ATTACHMENT_PROJECT_ID:網路附件專案的 ID。
  • ATTACHMENT_REGION:網路附件的區域。
  • NETWORK_ATTACHMENT:網路附件的名稱。使用這個執行個體範本建立 VM 時,Private Service Connect 介面會要求連線至這個網路連結。

如要進一步瞭解如何建立執行個體範本,請參閱「建立執行個體範本」。

使用 Private Service Connect 介面搭配 VPC Service Controls

您可以搭配 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 的路由表。如要永久新增路徑,或更新其他作業系統的路徑,請參閱作業系統的公開說明文件。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下含有 Private Service Connect 介面的 VM 名稱。

  3. 執行下列指令:

    sudo ip route replace default via GATEWAY_IP dev OS_INTERFACE_NAME
    

    更改下列內容:

說明 Private Service Connect 介面

您可以描述 VM,查看其 Private Service Connect 介面的詳細資料。介面的 IP 位址、別名 IP 範圍、網路連結和消費者子網路會列於 VM 說明的網路介面部分。

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往 VM 執行個體

  2. 按一下含有 Private Service Connect 介面的 VM。

  3. 在「Network interfaces」部分,查看 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 執行個體。詳情請參閱「刪除執行個體」。

後續步驟