建立使用 Private Service Connect 的私人執行個體

本頁面說明如何在 Cloud Data Fusion 中設定 Private Service Connect。

Cloud Data Fusion 中的 Private Service Connect 簡介

Cloud Data Fusion 執行個體可能需要連線至位於地端、 Google Cloud或其他雲端服務供應商的資源。使用內部 IP 位址搭配 Cloud Data Fusion 時,系統會透過Google Cloud 專案中的虛擬私有雲 (VPC) 網路,建立與外部資源的連線。透過網路傳輸的流量不會經過公開網際網路。透過虛擬私有雲對等互連功能授予 Cloud Data Fusion 虛擬私有雲網路的存取權時,會受到限制,使用大型網路時會更加明顯。

透過 Private Service Connect 介面,Cloud Data Fusion 可連線至您的虛擬私有雲,不必使用虛擬私有雲對等互連。Private Service Connect 介面Private Service Connect 的一種,可讓 Cloud Data Fusion 啟動與用戶虛擬私有雲網路的私人安全連線。這不僅提供彈性和易於存取 (如虛擬私有雲對等互連),還提供 Private Service Connect 提供的明確授權和用戶端控制項。

下圖顯示 Private Service Connect 介面在 Cloud Data Fusion 中的部署方式:

部署 Private Service Connect 介面。

圖 1. 部署 Private Service Connect 介面

圖 1 說明:

  • 執行 Cloud Data Fusion 的虛擬機器 (VM) 位於 Google 擁有的用戶專案中。如要存取客戶虛擬私有雲中的資源,Cloud Data Fusion VM 會使用客戶子網路中,由 Private Service Connect 網路介面指派的 IP 位址。這個子網路會新增至 Cloud Data Fusion 使用的網路連結。

  • 來自 Private Service Connect 介面的 IP 封包,會以類似於來自相同子網路中 VM 的封包方式處理。這項設定可讓 Cloud Data Fusion 直接存取客戶虛擬私有雲或對等互連虛擬私有雲中的資源,無須使用 Proxy。

  • 在客戶虛擬私有雲中啟用 Cloud NAT 後,即可存取網際網路資源,而內部部署資源則可透過互連存取。

  • 如要管理 Private Service Connect 的輸入或輸出,可以實作防火牆規則。

主要優點

搭配 Private Service Connect 使用 Cloud Data Fusion 的主要優點如下:

  • 更完善的 IP 空間控制功能。您可以控管 Cloud Data Fusion 用於連線至網路的 IP 位址。您可以選擇要將哪些子網路的 IP 位址分配給 Cloud Data Fusion。Cloud Data Fusion 的所有流量都會使用您設定的子網路中的來源 IP 位址。

    Private Service Connect 可免除從客戶虛擬私有雲保留 IP 位址的需求。VPC 對等互連需要每個 Cloud Data Fusion 執行個體使用 /22 CIDR 區塊 (1024 個 IP 位址)。

  • 提升安全性和隔離效果。設定網路附件後,您就能控管哪些服務可以存取網路。

  • 簡化 Cloud Data Fusion 執行個體設定。每個客戶虛擬私有雲只能建立一次網路附件。不需要使用 Proxy VM 連線至網際網路、對等互連 VPC 或地端的資源。

基本概念

本節說明 Cloud Data Fusion 中 Private Service Connect 的相關概念。

網路連結

網路連結是一種區域性資源,可以授權 Cloud Data Fusion 私下使用及建立網路連線,存取虛擬私有雲內的資源。詳情請參閱「關於網路連結」。

共用虛擬私有雲

以下是搭配共用虛擬私有雲使用 Private Service Connect 介面的用途:

  • 網路或基礎架構團隊擁有主專案中的子網路。應用程式團隊可透過這些子網路使用服務專案。

  • 應用程式團隊擁有服務專案中的網路連結。網路附件會定義哪些 Cloud Data Fusion 租戶專案可以連線至與網路附件連結的子網路。

您可以在服務專案中建立網路連結。網路附件中使用的子網路只能位於主專案中。

下圖說明這個應用情境:

搭配共用虛擬私有雲的 Private Service Connect 介面使用案例

圖 2:搭配共用虛擬私有雲使用 Private Service Connect 介面的用途

圖 2 說明:

  • 服務專案中存在網路連結。網路附件會使用屬於主專案共用虛擬私有雲的子網路。

  • Cloud Data Fusion 執行個體位於服務專案中,並使用服務專案中的網路連結建立私人連線。

  • 系統會從共用虛擬私有雲的子網路,為 Cloud Data Fusion 執行個體指派 IP 位址。

事前準備

  • Private Service Connect 僅適用於 Cloud Data Fusion 6.10.0 以上版本。

  • 只有在建立新的 Cloud Data Fusion 執行個體時,才能啟用 Private Service Connect。您無法遷移現有執行個體,改用 Private Service Connect。

定價

透過 Private Service Connect 傳輸的資料會產生費用。詳情請參閱「Private Service Connect 價格」。

必要角色和權限

如要取得建立 Cloud Data Fusion 執行個體和網路連結所需的權限,請要求管理員在專案中授予您下列 Identity and Access Management (IAM) 角色:

為確保 Cloud Data Fusion 擁有驗證網路設定的必要權限,請要求管理員在專案中,授予「Cloud Data Fusion 服務代理人」(格式為 service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com) 下列 IAM 角色:

  • 如要查看與網路附件相關聯的虛擬私有雲:Compute 網路檢視者 (roles/compute.networkViewer)

  • 如要讓 Cloud Data Fusion 將租戶專案新增至網路連結的生產者接受清單:

    • compute.networkAttachments.get
    • compute.networkAttachments.update
    • compute.networkAttachments.list

    具備這些權限且限制最多的角色是 Compute 網路管理員 (roles/compute.networkAdmin) 角色。這些權限屬於「Cloud Data Fusion API 服務代理人」(roles/datafusion.serviceAgent) 角色,系統會自動將這個角色授予 Cloud Data Fusion 服務代理人。因此,除非您明確移除服務代理程式角色授權,否則無須採取任何行動。

如要進一步瞭解如何授予角色,請參閱「管理存取權」。

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

如要進一步瞭解 Cloud Data Fusion 中的存取權控管選項,請參閱「使用 IAM 控管存取權」。

建立虛擬私有雲或共用虛擬私有雲網路

確認您已建立虛擬私有雲網路共用虛擬私有雲網路

設定 Private Service Connect

如要在 Cloud Data Fusion 中設定 Private Service Connect,您必須先建立網路連結,然後建立使用 Private Service Connect 的 Cloud Data Fusion 執行個體。

建立網路連結

網路連結會提供一組子網路。如要建立網路附件,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Network attachments」(網路附件) 頁面:

    前往「網路附件」

  2. 按一下「Create network attachment」(建立網路連結)

  3. 在「Name」(名稱) 欄位中,輸入網路連結的名稱。

  4. 從「Network」(網路) 清單中,選取虛擬私有雲或 Shared VPC 網路。

  5. 從「Region」(區域) 清單中選取 Google Cloud 區域。這個區域必須與 Cloud Data Fusion 執行個體相同。

  6. 在「Subnetwork」(子網路) 清單中,選取子網路範圍。

  7. 在「連線偏好設定」中,選取「接受所選專案的連線」

    建立 Cloud Data Fusion 執行個體時,Cloud Data Fusion 會自動將 Cloud Data Fusion 租戶專案新增至「Accepted projects」(接受的專案) 清單。

  8. 請勿新增「已接受專案」或「遭拒的專案」

  9. 按一下「Create network attachment」(建立網路連結)

    建立網路連結

gcloud

  1. 建立一或多個子網路。例如:

    gcloud compute networks subnets create subnet-1 --network=network-0 --range=10.10.1.0/24 --region=REGION
    

    網路附件會在後續步驟中使用這些子網路。

  2. 在與 Cloud Data Fusion 執行個體相同的區域中建立網路連結資源,並將 connection-preference 屬性設為 ACCEPT_MANUAL

    gcloud compute network-attachments create NAME
    --region=REGION
    --connection-preference=ACCEPT_MANUAL
    --subnets=SUBNET
    

    更改下列內容:

    • NAME:網路附件的名稱。
    • REGION: Google Cloud 區域名稱。 這個地區必須與 Cloud Data Fusion 執行個體相同。
    • SUBNET:子網路的名稱。

    這項指令會輸出網路附件網址,格式如下:

    projects/PROJECT/locations/REGION/network-attachments/NETWORK_ATTACHMENT_ID

    請記下這個網址,Cloud Data Fusion 需要這個網址才能連線。

REST API

  1. 建立子網路

  2. 建立網路連結:

    alias authtoken="gcloud auth print-access-token"
    NETWORK_ATTACHMENT_NAME=NETWORK_ATTACHMENT_NAME
    REGION=REGION
    SUBNET=SUBNET
    PROJECT_ID=PROJECT_ID
    
    read -r -d '' BODY << EOM
    {
      "name": "$NETWORK_ATTACHMENT_NAME",
      "description": "Network attachment for private Cloud Data Fusion",
      "connectionPreference": "ACCEPT_MANUAL",
      "subnetworks": [
        "projects/$PROJECT_ID/regions/$REGION/subnetworks/$SUBNET"
      ]
    }
    EOM
    
    curl -H "Authorization: Bearer $(authtoken)" \
    -H "Content-Type: application/json" \
    -X POST   -d "$BODY" "https://compute.googleapis.com/compute/v1/projects/$PROJECT_ID/regions/$REGION/networkAttachments"
    

    更改下列內容:

    • NETWORK_ATTACHMENT_NAME:網路附件的名稱。
    • REGION: Google Cloud 區域的名稱。 這個地區必須與 Cloud Data Fusion 執行個體相同。
    • SUBNET:子網路的名稱。
    • PROJECT_ID:專案 ID。

建立 Cloud Data Fusion 執行個體

Cloud Data Fusion 會使用 /25 CIDR 區塊 (128 個 IP) 做為租戶專案中的資源。這稱為無法存取或保留的範圍。您可以在 VPC 中使用相同的 IP 位址,但 Cloud Data Fusion VM 無法使用這個範圍與資源連線。

在大多數情況下,這並非問題,因為無法連線的 CIDR 區塊預設位於非 RFC 1918 範圍 (240.0.0.0/8)。如要控管無法連線的範圍,請參閱進階設定

如要建立已啟用 Private Service Connect 的 Cloud Data Fusion 執行個體,請按照下列步驟操作:

控制台

  1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 的「Instances」(執行個體) 頁面,然後按一下「Create instance」(建立執行個體)

    建立執行個體

  2. 在「Instance name」(執行個體名稱) 欄位中,輸入新執行個體的名稱。

  3. 在「Description」(說明) 欄位中輸入執行個體的說明。

  4. 從「Region」(區域) 清單中,選取要建立執行個體的 Google Cloud 區域。

  5. 從「Version」(版本) 清單中,選取 6.10 以上版本。

  6. 選取一個「Edition」(版本)。如要進一步瞭解不同版本的定價,請參閱 Cloud Data Fusion 定價總覽

  7. 展開「Advance options」(進階選項) 並執行下列操作:

    1. 選取「Enable private IP」(啟用私人 IP)

    2. 選取「Private Service Connect」做為「Connectivity type」(連線類型)

    3. 在「Network attachment」(網路連結) 區段中,選取您在「建立網路連結」中建立的網路連結。

  8. 點按「Create」(建立)。執行個體建立程序最多需要 30 分鐘才能完成。

    建立使用 Private Service Connect 的 Cloud Data Fusion 執行個體

REST API

執行下列指令:

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "privateServiceConnectConfig": {
      "networkAttachment": "$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST   -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

更改下列內容:

  • EDITION:Cloud Data Fusion 版本 - BASICDEVELOPERENTERPRISE
  • PROJECT_ID:專案 ID。
  • REGION: Google Cloud 區域的名稱。 這個地區必須與 Cloud Data Fusion 執行個體相同。
  • INSTANCE_ID:執行個體的 ID。
  • NETWORK_ATTACHMENT_ID:網路附件的 ID。

進階設定

如要啟用子網路共用功能,您可以為多個 Cloud Data Fusion 執行個體提供相同的網路連結。反之,如要為特定 Cloud Data Fusion 執行個體專用子網路,則必須提供 Cloud Data Fusion 執行個體使用的特定網路連結。

建議做法:如要對所有 Cloud Data Fusion 執行個體套用一致的防火牆政策,請使用相同的網路連結。

如要控管 Cloud Data Fusion 無法連線的 /25 CIDR 區塊,請在建立執行個體時指定 unreachableCidrBlock 屬性。例如:

alias authtoken="gcloud auth print-access-token"

EDITION=EDITION
PROJECT_ID=PROJECT_ID
REGION=REGION
CDF_ID=INSTANCE_ID
NETWORK_ATTACHMENT_ID=NETWORK_ATTACHMENT_ID
UNREACHABLE_RANGE=UNREACHABLE_RANGE

read -r -d '' BODY << EOM
{
  "description": "PSC enabled instance",
  "version": "6.10",
  "type": "$EDITION",
  "privateInstance": "true",
  "networkConfig": {
    "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
    "privateServiceConnectConfig": {
      "unreachableCidrBlock": "$UNREACHABLE_RANGE",
      "networkAttachment": "projects/$PROJECT_ID/regions/$REGION/networkAttachments/$NETWORK_ATTACHMENT_ID"
    }
  }
}
EOM

curl -H "Authorization: Bearer $(authtoken)" \
-H "Content-Type: application/json" \
-X POST -d "$BODY" "https://datafusion.googleapis.com/v1/projects/$PROJECT_ID/locations/$REGION/instances/?instanceId=$CDF_ID"

更改下列內容:

  • EDITION:Cloud Data Fusion 版本 - BASICDEVELOPERENTERPRISE
  • PROJECT_ID:專案 ID。
  • REGION: Google Cloud 區域的名稱。 這個地區必須與 Cloud Data Fusion 執行個體相同。
  • INSTANCE_ID:執行個體的 ID。
  • NETWORK_ATTACHMENT_ID:網路附件的 ID。
  • UNREACHABLE_RANGE:無法連線的範圍,例如 10.0.0.0/25

安全性

本節說明 Cloud Data Fusion 與消費者之間的安全性。

Cloud Data Fusion 到消費者安全

Private Service Connect 介面支援輸出防火牆規則,可控管 Cloud Data Fusion 在虛擬私有雲中可存取的項目。詳情請參閱「限制生產者到消費者的進入流量」。

消費者到 Cloud Data Fusion 的安全性

使用 Private Service Connect 介面的 Cloud Data Fusion VM 會封鎖來自 VPC 的所有流量,但回應封包除外。

連結用途的步驟

以下各節說明私人執行個體的連線相關用途。

啟用 Private Google Access

如要透過內部 IP 位址存取資源,Cloud Data Fusion 必須在具有私人 Google 存取權的子網路中,建立 Dataproc 叢集並執行資料管道。您必須為包含 Dataproc 叢集的子網路啟用私人 Google 存取權。

  • 如果 Dataproc 叢集啟動的區域只有一個子網路,叢集就會在該子網路中啟動。
  • 如果某個區域有多個子網路,您必須設定 Cloud Data Fusion,選取具有 Private Google Access 的子網路,才能啟動 Dataproc 叢集。

如要為子網路啟用私人 Google 存取權,請參閱私人 Google 存取權設定

選用:啟用 DNS 對等互連

在下列情況中啟用 DNS 對等互連

  • Cloud Data Fusion 透過主機名稱 (而非 IP 位址) 連線至系統時
  • 如果目標系統部署在負載平衡器後方,例如某些 SAP 部署作業