將 CMEK 與 Dataproc Serverless 搭配使用

根據預設,Dataproc Serverless 會加密靜態儲存的客戶內容。Dataproc Serverless 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密」

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

使用 CMEK 設定資源後,存取 Dataproc Serverless 資源的體驗就會類似於使用 Google 的預設加密功能。如要進一步瞭解加密選項,請參閱「客戶管理的加密金鑰 (CMEK)」。

使用 CMEK

請按照本節的步驟,使用 CMEK 加密 Dataproc Serverless 寫入永久磁碟和 Dataproc 暫存值區的資料。

  1. 使用 Cloud Key Management Service (Cloud KMS) 建立金鑰。

  2. 複製資源名稱。

    複製資源名稱。
    資源名稱的構造如下:
    projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
    

  3. 讓 Compute Engine、Dataproc 和 Cloud Storage Service Agent 服務帳戶使用您的金鑰:

    1. 請參閱「使用 Cloud KMS 金鑰保護資源> 必要角色」一文,將 Cloud KMS CryptoKey 加密者/解密者 角色指派給 Compute Engine 服務代理人服務帳戶。如果此服務帳戶未列在 Google Cloud 控制台的 IAM 頁面中,請按一下「Include Google-provided role grants」(包含 Google 提供的角色授權) 將其列出。
    2. Cloud KMS CryptoKey Encrypter/Decrypter 角色指派給 Dataproc 服務代理人服務帳戶。您可以使用 Google Cloud CLI 指派角色:

       gcloud projects add-iam-policy-binding KMS_PROJECT_ID \
       --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \
       --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      更改下列內容:

      KMS_PROJECT_ID:執行 Cloud KMS 的 Google Cloud 專案 ID。這項專案也可以是執行 Dataproc 資源的專案。

      PROJECT_NUMBER:執行 Dataproc 資源的 Google Cloud 專案編號 (而非專案 ID)。

    3. 在執行 Dataproc Serverless 資源的專案中啟用 Cloud KMS API。

    4. 如果未將 Dataproc 服務代理人角色附加至 Dataproc 服務代理人服務帳戶,請將 serviceusage.services.use 權限新增至附加至 Dataproc 服務代理人服務帳戶的自訂角色。如果 Dataproc 服務代理人角色已附加至 Dataproc 服務代理人服務帳戶,您可以略過這個步驟。

    5. 按照這篇文章中的步驟,在儲存桶中新增金鑰。

  4. 提交批次工作負載時:

    1. 在批次 kmsKey 參數中指定鍵。
    2. 在批次 stagingBucket 參數中指定 Cloud Storage 值區名稱。
  5. 建立互動工作階段或工作階段範本時:

    1. 在工作階段 kmsKey 參數中指定您的金鑰。
    2. 在工作階段 stagingBucket 參數中指定 Cloud Storage 值區名稱。