用途:控管其他專案中 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)。

解決方案

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

架構

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

基準架構

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

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

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

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

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

應用實例架構

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

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

設定

以下各節會比較基準設定與使用案例專屬設定,以便透過預設的租戶專案 VPC,在不同專案中使用 Apache Spark 叢集的代管服務。

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

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

基準 用途
在上方的基準架構圖中,租戶專案包含下列元件:
  • 系統自動建立的預設 VPC。
  • 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 邏輯上所在的位置。


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

前往「VPC networks」(虛擬私有雲網路)

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

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 設為「啟用」
  • Apache Spark 代管服務子網路不需與 Cloud Data Fusion 執行個體位於相同位置。

來源和接收器

基準 用途

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


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

Cloud Storage

基準 用途

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


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

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

基準 用途

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


重點摘要:
  • 設定來源和接收器外掛程式屬性時,您可以定義這些值區。
  • 如未定義 bucket,系統會在 Managed Service for Apache Spark 執行的專案中建立 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 服務帳戶

基準 用途

用於在 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,請前往專案的「APIs & services」(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 服務帳戶
針對這個用途,請在包含 Managed Service for Apache Spark 專案的專案中啟用下列 API:
  • Compute Engine API
  • Dataproc API (這項專案可能已啟用)。啟用 Dataproc API 時,系統會自動啟用 Dataproc Control API。
  • 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)

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

後續步驟