使用客戶自行管理的加密金鑰 (CMEK)

本頁面說明如何在 Cloud Data Fusion 中使用 Cloud Key Management Service (Cloud KMS) 加密金鑰。

根據預設,Cloud Data Fusion 會加密靜態客戶內容。Cloud Data Fusion 會為您處理加密作業,您不必採取其他動作。這項做法稱為「Google 預設加密」

如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),搭配整合 CMEK 的服務 (包括 Cloud Data Fusion)。使用 Cloud KMS 金鑰可控管保護等級、位置、輪換時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還能追蹤金鑰用量、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控制及管理用來保護資料的對稱金鑰加密金鑰 (KEK),而不是由 Google 擁有及管理這些金鑰。

使用 CMEK 設定資源後,存取 Cloud Data Fusion 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱客戶管理的加密金鑰 (CMEK)

Cloud Data Fusion 支援追蹤 Instance 資源的 Cloud KMS 金鑰用量。

透過 CMEK,您可以控管寫入租戶專案中 Google 內部資源的資料,以及 Cloud Data Fusion 管道寫入的資料,包括:

  • 管道記錄和中繼資料
  • Dataproc 叢集的中繼資料
  • 各種 Cloud Storage、BigQuery、Pub/Sub 和 Spanner 資料接收器、動作和來源

Cloud Data Fusion 資源

如需支援 CMEK 的 Cloud Data Fusion 外掛程式清單,請參閱支援的外掛程式

Cloud Data Fusion 支援 Dataproc 叢集的 CMEK。Cloud Data Fusion 會建立暫時的 Dataproc 叢集供管道使用,並在管道完成時刪除該叢集。CMEK 會保護寫入下列項目的叢集中繼資料:

  • 連接至叢集 VM 的永久磁碟 (PD)
  • 寫入自動建立或使用者建立的 Dataproc 暫存值區的作業驅動程式輸出內容和其他中繼資料

設定 CMEK

建立 Cloud KMS 金鑰

在 Google Cloud 包含 Cloud Data Fusion 執行個體的專案中,或在獨立的使用者專案中建立 Cloud KMS 金鑰。Cloud KMS 金鑰環位置必須與您建立執行個體的區域相符。Cloud Data Fusion 一律會與特定區域建立關聯,因此執行個體層級不允許使用多區域或全域區域金鑰。

取得金鑰的資源名稱

REST API

使用下列指令取得您建立的金鑰的資源名稱:

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

更改下列內容:

  • PROJECT_ID:代管 Cloud Data Fusion 執行個體的客戶專案
  • REGION:靠近您所在位置的 Google Cloud 區域,例如 us-east1
  • KEY_RING_NAME:將加密金鑰分組的金鑰環名稱
  • KEY_NAMECloud KMS 金鑰名稱

控制台

  1. 前往「金鑰管理」頁面。

    前往「金鑰管理」

  2. 按一下金鑰旁邊的「更多」圖示

  3. 選取「複製資源名稱」,將資源名稱複製到剪貼簿。

更新專案的服務帳戶,以使用金鑰

如要設定專案的服務帳戶以使用金鑰,請按照下列步驟操作:

  1. 必要:將 Cloud KMS CryptoKey Encrypter/Decrypter 角色 (roles/cloudkms.cryptoKeyEncrypterDecrypter) 授予 Cloud Data Fusion 服務代理人 (請參閱「將角色授予特定資源的服務帳戶」)。這個帳戶的格式如下:

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Cloud Data Fusion 服務代理程式,可讓 Cloud Data Fusion 使用 CMEK 加密儲存在租戶專案中的任何客戶資料。

  2. 必要:將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Compute Engine 服務代理人 (請參閱「將 Cloud KMS 金鑰指派給 Cloud Storage 服務帳戶」)。這個帳戶預設會獲派 Compute Engine 服務代理程式角色,格式如下:

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Compute Engine 服務代理人後,Cloud Data Fusion 就能使用 CMEK,加密管道中執行的 Dataproc 叢集所寫入的永久磁碟 (PD) 中繼資料。

  3. 必要:將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Cloud Storage 服務代理人 (請參閱「將 Cloud KMS 金鑰指派給 Cloud Storage 服務代理人」)。這個服務代理的格式如下:

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    將這個角色授予 Cloud Storage 服務代理程式後,Cloud Data Fusion 就能使用 CMEK 加密 Cloud Storage bucket,儲存及快取管道資訊和寫入 Dataproc 叢集暫存 bucket 的資料,以及管道使用的專案中任何其他 Cloud Storage bucket。

  4. 必要:將 Cloud KMS CryptoKey 加密者/解密者角色授予 Google Cloud Dataproc 服務代理人。這個服務代理的格式如下:

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. 選用:如果管道使用 BigQuery 資源,請將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 BigQuery 服務帳戶 (請參閱「授予加密和解密權限」)。這個帳戶的格式如下:

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  6. 選用:如果管道使用 Pub/Sub 資源,請將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Pub/Sub 服務帳戶 (請參閱「使用客戶自行管理的加密金鑰」)。這個帳戶的格式如下:

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  7. 選用:如果管道使用 Spanner 資源,請將 Cloud KMS CryptoKey Encrypter/Decrypter 角色授予 Spanner 服務帳戶。這個帳戶的格式如下:

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

建立使用 CMEK 的 Cloud Data Fusion 執行個體

Cloud Data Fusion 6.5.0 以上版本的所有版本都支援 CMEK。

REST API

  1. 如要使用客戶管理的加密金鑰建立執行個體,請設定下列環境變數:

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    更改下列內容:

    • PROJECT_ID:代管 Cloud Data Fusion 執行個體的客戶專案
    • REGION: Google Cloud 靠近您所在位置的區域,例如 us-east1
    • INSTANCE_ID:Cloud Data Fusion 執行個體的名稱
    • KEY_NAME:CMEK 金鑰的完整資源名稱
  2. 執行下列指令,建立 Cloud Data Fusion 執行個體:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'
    

控制台

  1. 前往 Cloud Data Fusion 頁面。

  2. 按一下「執行個體」,然後按一下「建立執行個體」

    前往「Instances」(執行個體) 頁面

  3. 在「Advanced options」(進階選項) 中,選取「Use a customer-managed encryption key (CMEK)」(使用客戶管理的加密金鑰 (CMEK))

  4. 在「Select a customer-managed key」(選取客戶管理的金鑰) 欄位中,選取金鑰的資源名稱

    選取加密金鑰名稱

  5. 輸入所有執行個體詳細資料後,按一下「建立」。執行個體準備就緒後,會顯示在「Instances」(執行個體) 頁面中。

檢查執行個體是否已啟用 CMEK

控制台

查看執行個體詳細資料:

  1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。

  2. 按一下「Instances」(執行個體) ,然後點選執行個體名稱,前往「Instance details」(執行個體詳細資料) 頁面。

    前往「Instances」(執行個體)

如果已啟用 CMEK,「加密金鑰」欄位會顯示「可用」

如果停用 CMEK,「加密金鑰」欄位會顯示「不適用」

搭配使用 CMEK 與支援的外掛程式

設定加密金鑰名稱時,請使用下列格式:

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

加密金鑰名稱

下表說明支援 CMEK 的 Cloud Data Fusion 外掛程式中,金鑰的行為。

支援的外掛程式 按鍵行為
Cloud Data Fusion 接收器
Cloud Storage 加密外掛程式建立的所有值區中寫入的資料。如果 bucket 已存在,系統會忽略這個值。
Cloud Storage 多檔案 加密外掛程式建立的任何值區中寫入的資料。
BigQuery 加密外掛程式建立的任何 bucket、資料集或資料表。
BigQuery 多資料表 加密外掛程式建立的任何 bucket、資料集或資料表。
Pub/Sub 將外掛程式建立的所有主題資料加密。如果主題已存在,系統會忽略這個值。
Spanner 外掛程式建立的任何資料庫都會加密。如果資料庫已存在,系統會忽略這個值。
Cloud Data Fusion 動作
Cloud Storage 建立
Cloud Storage 複製
Cloud Storage 移動
Cloud Storage 的「Done」檔案標記
加密外掛程式建立的所有值區中寫入的資料。如果 bucket 已存在,系統會忽略這個值。
BigQuery 執行 加密外掛程式建立的資料集或資料表,以儲存查詢結果。只有在 BigQuery 資料表中儲存查詢結果時,才適用這項功能。
Cloud Data Fusion 來源
BigQuery 來源 加密外掛程式建立的所有值區中寫入的資料。如果 bucket 已存在,系統會忽略這個值。
Cloud Data Fusion SQL 引擎
BigQuery 下推引擎 加密外掛程式建立的任何值區、資料集或資料表所寫入的資料。

將 CMEK 與 Dataproc 叢集中繼資料搭配使用

預先建立的運算設定檔會使用在建立執行個體時提供的 CMEK 金鑰,加密永續磁碟 (PD) 和暫存值區,以及在管道中執行的 Dataproc 叢集所寫入的中繼資料。如要修改為使用其他金鑰,請採取下列任一做法:

  • 建議做法:建立新的 Dataproc 計算設定檔 (僅限 Enterprise 版)。
  • 編輯現有的 Dataproc 計算設定檔 (開發人員版、基本版或企業版)。

控制台

  1. 開啟 Cloud Data Fusion 執行個體:

    1. 在 Google Cloud 控制台中,前往 Cloud Data Fusion 頁面。

    2. 如要在 Cloud Data Fusion Studio 中開啟執行個體,請依序按一下「Instances」和「View instance」

      前往「Instances」(執行個體)

  2. 依序點選「系統管理員」>「設定」

  3. 按一下「系統運算設定檔」下拉式選單。

  4. 按一下「建立新設定檔」,然後選取「Dataproc」

  5. 輸入「設定檔標籤」、「設定檔名稱」和「說明」

  6. 根據預設,每當 Cloud Data Fusion 建立暫時性叢集時,Dataproc 就會建立暫存和臨時值區。Cloud Data Fusion 支援在運算設定檔中,將 Dataproc 暫存值區做為引數傳遞。如要加密暫存值區,請建立啟用 CMEK 的值區,並在運算設定檔中將其做為引數傳遞至 Dataproc。

  7. 根據預設,Cloud Data Fusion 會自動建立 Cloud Storage 值區,用於暫存 Dataproc 使用的依附元件。如要使用專案中現有的 Cloud Storage bucket,請按照下列步驟操作:

    1. 在「一般設定」專區的「Cloud Storage Bucket」(Cloud Storage Bucket) 欄位中,輸入現有的 Cloud Storage bucket。

    2. 將 Cloud KMS 金鑰新增至 Cloud Storage 值區

  8. 取得 Cloud KMS 金鑰的資源 ID。在「一般設定」專區的「加密金鑰名稱」欄位中,輸入資源 ID。

  9. 點選「建立」

  10. 如果「設定」分頁的「系統運算設定檔」部分列出多個設定檔,請將指標懸停在設定檔名稱欄位上,然後按一下顯示的星號,將新的 Dataproc 設定檔設為預設設定檔。

    選取預設設定檔。

搭配使用 CMEK 與其他資源

在建立 Cloud Data Fusion 執行個體時,系統偏好設定會使用您提供的 CMEK 金鑰。用於加密管道接收器 (例如 Cloud Storage、BigQuery、Pub/Sub 或 Spanner 接收器) 寫入新建立資源的資料。

這個金鑰只會套用至新建立的資源。如果資源在管道執行前就已存在,您應手動將 CMEK 金鑰套用至這些現有資源。

如要變更 CMEK 金鑰,請執行下列其中一項操作:

  • 使用執行階段引數。
  • 設定 Cloud Data Fusion 系統偏好設定。
授予 Cloud KMS CryptoKey Encrypter/Decrypter 角色。

執行階段引數

  1. 在 Cloud Data Fusion Pipeline Studio 頁面中,按一下「Run」(執行) 按鈕右側的下拉式箭頭。
  2. 在「Name」(名稱) 欄位中輸入 gcp.cmek.key.name
  3. 在「Value」(值) 欄位中,輸入金鑰的資源 ID
    選取 Data Fusion 版本。
  4. 按一下 [儲存]

    您在這裡設定的執行階段引數只會套用至目前管道的執行作業。

偏好設定

  1. 在 Cloud Data Fusion UI 中,按一下「SYSTEM ADMIN」(系統管理員)
  2. 按一下 [設定] 標籤。
  3. 按一下「系統偏好設定」下拉式選單。
  4. 按一下「編輯系統偏好設定」
  5. 在「Key」(金鑰) 欄位中輸入 gcp.cmek.key.name
  6. 在「Value」(值) 欄位中,輸入金鑰的資源 ID
    選取 Data Fusion 版本。
  7. 按一下「儲存並關閉」