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

在 Cloud Data Fusion 中,Private Service Connect 介面可讓您在執行個體與虛擬私有雲 (VPC) 或地端部署網路中的資源之間,建立私人連線。這項設定可將設計階段作業 (例如連線驗證和預覽) 保持在私人 IP 位址上,不會將工作負載公開至網際網路。

關於 Cloud Data Fusion 中的 Private Service Connect

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

Cloud Data Fusion 可透過 Private Service Connect 介面連線至虛擬私有雲,不需使用虛擬私有雲對接。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 的輸入或輸出流量,可以實作防火牆規則。

主要優點

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

  • 更妥善控管 IP 空間。您可以控管 Cloud Data Fusion 用來連線至網路的 IP 位址。您可以選擇要從哪些子網路分配 IP 位址給 Cloud Data Fusion。Cloud Data Fusion 的所有流量,來源 IP 位址都來自您設定的子網路。

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

  • 提升安全性和隔離性。設定網路連結後,即可控管哪些服務可以存取您的網路。

  • 簡化 Cloud Data Fusion 執行個體設定。每個客戶虛擬私有雲只需建立一個網路連結。不必使用 Proxy VM,即可連線至網際網路、對等互連虛擬私有雲或地端部署資源。

基本概念

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

網路連結

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

Shared VPC

以下是 Private Service Connect 介面與 Shared VPC 的用途:

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

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

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

下圖說明這個用途:

Private Service Connect 介面與共用虛擬私有雲的用途

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

圖 2 說明:

  • 網路連結位於服務專案中。網路連結會使用主專案中屬於 Shared VPC 的子網路。

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

  • Cloud Data Fusion 執行個體會從 Shared VPC 的子網路中取得 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 具備驗證網路設定所需的權限,請要求管理員將專案的下列 IAM 角色授予 Cloud Data Fusion 服務代理 (格式為 service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com):

  • 與網路連結相關聯的虛擬私有雲: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 控管存取權」。

建立虛擬私有雲網路或 Shared VPC 網路

確認您已建立虛擬私有雲網路或Shared VPC 網路。

設定 Private Service Connect

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

建立網路連結

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

控制台

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

    前往「Network attachments」(網路連結)

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

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

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

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

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

  7. 在「Connection preference」(連線偏好設定) 中,選取「Accept connections for selected projects」(接受所選專案的連線)。

    建立 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)。這稱為無法連線或保留的範圍。您可以在虛擬私有雲中使用相同的 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. 在「Connectivity type」(連線類型) 部分,選取「Private Service Connect」。

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

  8. 點選「建立」。執行個體建立程序最多需要 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 版本,BASIC、DEVELOPER 或 ENTERPRISE。
  • 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 版本,BASIC、DEVELOPER 或 ENTERPRISE。
  • 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 之間的安全性

Cloud Data Fusion VM 具有 Private Service Connect 介面,會封鎖來自虛擬私有雲且非回應封包的任何流量。

連結用途步驟

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

啟用 Private Google Access

如要透過內部 IP 位址存取資源,Cloud Data Fusion 必須建立 Managed Service for Apache Spark 叢集,並在啟用 Private Google Access 的子網路中執行 Data pipelines。您必須為包含 Managed Service for Apache Spark 叢集的子網路啟用私人 Google 存取權。

  • 如果 Managed Service for Apache Spark 叢集啟動的區域中只有一個子網路,則叢集會在該子網路中啟動。
  • 如果區域中有多個子網路,您必須設定 Cloud Data Fusion,選取具有 Private Google Access 的子網路,以便啟動 Managed Service for Apache Spark 叢集。

如要為子網路啟用 Private Google Access,請參閱「Private Google Access 設定」。

選用:啟用 DNS 對接

在下列情況下,請啟用 DNS 對接:

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