用途:控管其他專案中 Managed Service for Apache Spark 叢集的存取權

本頁面說明在另一個 Google Cloud 專案中部署及執行使用 Managed Service for Apache Spark 叢集的管道時,如何管理存取控管。

情境

根據預設,在Google Cloud 專案中啟動 Cloud Data Fusion 執行個體時,系統會使用同一專案中的 Managed Service for Apache Spark 叢集部署及執行管道。不過,貴機構可能要求您使用其他專案中的叢集。如要使用這項功能,您必須管理專案之間的存取權。下頁說明如何變更基準 (預設) 設定,以及套用適當的存取權控管。

事前準備

如要瞭解這個用途的解決方案,您需要下列背景資訊:

假設和範圍

這個用途有下列需求:

  • 私有 Cloud Data Fusion 執行個體。 基於安全考量,機構可能會要求您使用這類執行個體。
  • BigQuery 來源和接收器。
  • 使用 IAM 控管存取權,而非角色式存取控管 (RBAC)。

解決方案

這項解決方案會比較基準和特定用途的架構與設定。

架構

下圖比較了在同一個專案 (基準) 中使用叢集,以及透過租戶專案 VPC 在不同專案中使用叢集時,建立 Cloud Data Fusion 執行個體和執行管道的專案架構。

基準架構

下圖顯示專案的基準架構:

Cloud Data Fusion 中的租戶、客戶和 Dataproc 專案架構。

如要進行基準設定,請建立 Cloud Data Fusion 私人執行個體,並執行管道,無須進行額外自訂:

  • 使用其中一個內建運算設定檔
  • 來源和接收器與執行個體位於相同專案
  • 未將其他角色授予任何服務帳戶

如要進一步瞭解租戶和客戶專案,請參閱「網路」。

應用實例架構

下圖顯示在其他專案中使用叢集時的專案架構:

Cloud Data Fusion 中的租戶、客戶和 Dataproc 專案架構。

設定

以下各節會比較基準設定與特定用途的設定,以便透過預設的租戶專案 VPC,在不同專案中使用 Managed Service for Apache Spark 叢集。

在下列用途說明中,「客戶專案」是 Cloud Data Fusion 執行個體執行的位置,「Managed Service for Apache Spark 專案」則是啟動 Managed Service for Apache Spark 叢集的位置。

租戶專案虛擬私有雲和執行個體

基準 用途
在上述基準架構圖中,租戶專案包含下列元件:
  • 系統自動建立的預設虛擬私有雲。
  • Cloud Data Fusion 執行個體的實際部署作業。
這個用途不需要額外設定。

客戶專案

基準 用途
您會在 Google Cloud 專案中部署及執行管道。 根據預設,執行管道時,Managed Service for Apache Spark 叢集會在這個專案中啟動。 在本使用案例中,您會管理兩個專案。在本頁面中,「客戶專案」是指 Cloud Data Fusion 執行個體執行的位置。
Managed Service for Apache Spark 專案是指啟動 Managed Service for Apache Spark 叢集的專案。

客戶虛擬私有雲

基準 用途

從客戶的角度來看,客戶 VPC 是 Cloud Data Fusion 邏輯上所在的位置。


重點:
您可以在專案的虛擬私有雲網路頁面中,找到客戶虛擬私有雲詳細資料。

前往虛擬私有雲網路

這個用途不需要額外設定。

Cloud Data Fusion 子網路

基準 用途

從客戶的角度來看,這個子網路是 Cloud Data Fusion 的邏輯位置。


重點:
這個子網路的區域與租戶專案中 Cloud Data Fusion 執行個體的位置相同。
這個用途不需要額外設定。

Managed Service for Apache Spark 子網路

基準 用途

執行管道時,啟動 Managed Service for Apache Spark 叢集的子網路。


重點摘要:
  • 在這個基準設定中,Managed Service for Apache Spark 與 Cloud Data Fusion 執行個體位於相同子網路。
  • Cloud Data Fusion 會在與執行個體和 Cloud Data Fusion 子網路相同的區域中,找出子網路。如果這個區域只有一個子網路,則子網路相同。
  • Managed Service for Apache Spark 子網路必須具備 Private Google Access。

這是新的子網路,當您執行管道時,系統會啟動 Managed Service for Apache Spark 叢集。


重點摘要:
  • 為這個新子網路將 Private Google Access 設為「啟用」。
  • Managed Service for Apache Spark 子網路不必與 Cloud Data Fusion 執行個體位於相同位置。

來源和接收器

基準 用途

擷取資料的來源和載入資料的接收端,例如 BigQuery 來源和接收端。


重點:
  • 擷取及載入資料的工作必須在與資料集相同的位置處理,否則會發生錯誤。
本頁的存取控管設定適用於 BigQuery 來源和接收器。

Cloud Storage

基準 用途

客戶專案中的儲存空間 bucket,可協助在 Cloud Data Fusion 和 Managed Service for Apache Spark 之間轉移檔案。


重點摘要:
  • 您可以在暫時性叢集的「Compute Profile」設定中,透過 Cloud Data Fusion 網頁介面指定這個值區。
  • 如果是批次和即時管道,或是複製工作: 如果未在運算設定檔中指定 bucket, Cloud Data Fusion 會在與執行個體相同的專案中建立 bucket,以供此用途使用。
  • 即使是靜態 Managed Service for Apache Spark 叢集,在這個基準設定中,bucket 也是由 Cloud Data Fusion 建立,且與 Managed Service for Apache Spark 暫存和臨時 bucket 不同。
  • Cloud Data Fusion API 服務代理程式具有內建權限,可在包含 Cloud Data Fusion 執行個體的專案中建立這個值區。
這個用途不需要額外設定。

來源和接收器使用的臨時 bucket

基準 用途

外掛程式為來源和接收器建立的暫存值區,例如 BigQuery 接收器外掛程式啟動的載入工作。


重點摘要:
  • 設定來源和接收器外掛程式屬性時,可以定義這些值區。
  • 如未定義 bucket,系統會在 Managed Service for Apache Spark 執行的專案中建立 bucket。
  • 如果資料集是多地區,系統會在相同範圍內建立值區。
  • 如果您在外掛程式設定中定義值區,值區的地區必須與資料集的地區相符。
  • 如果您未在外掛程式設定中定義 bucket,系統會在管道完成時刪除為您建立的 bucket。
在本例中,您可以在任何專案中建立 bucket。

外掛程式的資料來源或接收器值區

基準 用途
客戶 bucket,您可以在外掛程式 (例如 Cloud Storage 外掛程式和 FTP to Cloud Storage 外掛程式) 的設定中指定。 這個用途不需要額外設定。

IAM:Cloud Data Fusion API 服務代理

基準 用途

啟用 Cloud Data Fusion API 時,系統會自動將 Cloud Data Fusion API 服務代理角色 (roles/datafusion.serviceAgent) 授予 Cloud Data Fusion 服務帳戶 (主要服務代理人)。


重點摘要:
  • 這個角色包含與執行個體位於同一專案中的服務權限,例如 BigQuery 和 Managed Service for Apache Spark。如要查看所有支援的服務,請參閱角色詳細資料。
  • Cloud Data Fusion 服務帳戶會執行下列動作:
    • 資料平面 (管道設計和執行) 與其他服務的通訊 (例如在設計階段與 Cloud Storage、BigQuery 和 Datastream 通訊)。
    • 佈建 Managed Service for Apache Spark 叢集。
  • 如果您是從 Oracle 來源複製資料,這個服務帳戶也必須在工作所在的專案中,具備 Datastream 管理員和 Storage 管理員角色。本頁面未說明複製用途。

針對這個用途,請將 Cloud Data Fusion API 服務代理角色授予 Managed Service for Apache Spark 專案中的服務帳戶。然後在該專案中授予下列角色:

  • Compute 網路使用者角色
  • Dataproc 編輯者角色

IAM:Managed Service for Apache Spark 服務帳戶

基準 用途

用於在 Managed Service for Apache Spark 叢集中以工作形式執行管道的服務帳戶。根據預設,這是 Compute Engine 服務帳戶。


選用:在基準設定中,您可以將預設服務帳戶變更為同一專案中的其他服務帳戶。將下列 IAM 角色授予新的服務帳戶:

  • Cloud Data Fusion Runner 角色。這個角色可讓 Managed Service for Apache Spark 與 Cloud Data Fusion API 通訊。
  • Dataproc Worker 角色。這個角色可讓工作在 Managed Service for Apache Spark 叢集上執行。
重點摘要:
  • 必須將 Managed Service for Apache Spark 服務帳戶的「服務帳戶使用者」角色授予新服務的 API 代理服務帳戶,服務 API 代理才能使用該帳戶啟動 Managed Service for Apache Spark 叢集。

這個使用案例範例假設您使用 Managed Service for Apache Spark 專案的預設 Compute Engine 服務帳戶 (PROJECT_NUMBER-compute@developer.gserviceaccount.com)。


在 Managed Service for Apache Spark 專案中,將下列角色授予預設的 Compute Engine 服務帳戶。

  • Dataproc Worker 角色
  • 「儲存空間管理員」角色 (或至少是 `storage.buckets.create` 權限),讓 Managed Service for Apache Spark 為 BigQuery 建立臨時 bucket。
  • BigQuery 工作使用者角色。這個角色可讓 Managed Service for Apache Spark 建立載入工作。工作預設會在 Managed Service for Apache Spark 專案中建立。
  • BigQuery 資料集編輯者角色。這個角色可讓 Managed Service for Apache Spark 在載入資料時建立資料集。

在 Managed Service for Apache Spark 專案的預設 Compute Engine 服務帳戶中,將服務帳戶使用者角色授予 Cloud Data Fusion 服務帳戶。這項動作必須在 Managed Service for Apache Spark 專案中執行。

將 Managed Service for Apache Spark 專案的預設 Compute Engine 服務帳戶新增至 Cloud Data Fusion 專案。同時授予下列角色:

  • 「Storage 物件檢視者」角色,可從 Cloud Data Fusion Consumer bucket 擷取管道工作相關構件。
  • Cloud Data Fusion Runner 角色,因此 Managed Service for Apache Spark 叢集可以在執行時與 Cloud Data Fusion 通訊。

API

基準 用途
啟用 Cloud Data Fusion API 時,系統也會啟用下列 API。如要進一步瞭解這些 API,請前往專案的「API 和服務」頁面。

前往「API 與服務」頁面

  • Cloud Autoscaling API
  • Dataproc API
  • Cloud Dataproc Control API
  • Cloud DNS API
  • Cloud OS Login API
  • Pub/Sub API
  • Compute Engine API
  • Container Filesystem API
  • Container Registry API
  • Service Account Credentials API
  • Identity and Access Management API
  • Kubernetes Engine API

啟用 Cloud Data Fusion API 時,系統會自動將下列服務帳戶新增至專案:

  • Google API 服務代理
  • Compute Engine 服務代理人
  • Kubernetes Engine 服務代理
  • Google Container Registry 服務代理
  • Google Cloud Dataproc 服務代理
  • Cloud KMS 服務代理人
  • Cloud Pub/Sub 服務帳戶
在這個用途中,如果專案尚未啟用下列 API,請在包含 Managed Service for Apache Spark 專案的專案中啟用這些 API:
  • Compute Engine API
  • Dataproc API
  • Cloud Resource Manager API

加密金鑰

基準 用途

在基準設定中,加密金鑰可以是 Google 代管或 CMEK


重點摘要:

如果您使用 CMEK,基準設定必須符合下列條件:

  • 金鑰必須是區域金鑰,且與 Cloud Data Fusion 執行個體位於相同區域。
  • 在建立金鑰的專案中,於金鑰層級 (而非 Google Cloud 控制台的 IAM 頁面),將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予下列服務帳戶:
    • Cloud Data Fusion API 服務帳戶
    • Managed Service for Apache Spark 服務帳戶,預設為 Compute Engine 服務代理程式 (service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com)
    • Google Cloud Dataproc 服務代理 (service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com)
    • Cloud Storage 服務代理 (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

視管道中使用的服務 (例如 BigQuery 或 Cloud Storage) 而定,服務帳戶也必須獲得 Cloud KMS CryptoKey Encrypter/Decrypter 角色:

  • BigQuery 服務帳戶 (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Pub/Sub 服務帳戶 (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Spanner 服務帳戶 (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

如果您未使用 CMEK,則無須針對這個用途進行額外變更。

如果您使用 CMEK,則必須在建立金鑰的專案中,將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予下列服務帳戶:

  • Cloud Storage 服務代理 (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

視管道中使用的服務而定 (例如 BigQuery 或 Cloud Storage),其他服務帳戶也必須在金鑰層級獲得 Cloud KMS CryptoKey 加密者/解密者角色。例如:

  • BigQuery 服務帳戶 (bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com)
  • Pub/Sub 服務帳戶 (service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com)
  • Spanner 服務帳戶 (service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com)

完成這些特定用途的設定後,資料管道就能開始在其他專案的叢集上執行。

後續步驟