根據預設,Managed Service for Apache Spark 會加密靜態客戶內容。Managed Service for Apache Spark 會為您處理加密作業,您不必採取其他動作。這個選項稱為「Google 預設加密機制」。
如要控管加密金鑰,您可以在 Cloud KMS 中使用客戶自行管理的加密金鑰 (CMEK),並搭配整合 CMEK 的服務,包括 Managed Service for Apache Spark。使用 Cloud KMS 金鑰,即可控管保護等級、位置、輪替時間表、使用權限和存取權,以及加密範圍。 使用 Cloud KMS 還能追蹤金鑰用量、查看稽核記錄,以及控管金鑰生命週期。 您可以在 Cloud KMS 中控管及管理用於保護資料的對稱金鑰加密金鑰 (KEK),而非由 Google 擁有及管理。
使用 CMEK 設定資源後,存取 Managed Service for Apache Spark 資源的體驗與使用 Google 預設加密機制類似。如要進一步瞭解加密選項,請參閱「客戶自行管理的加密金鑰 (CMEK)」。
使用 CMEK
請按照本節中的步驟,使用 CMEK 加密 Managed Service for Apache Spark 寫入永久磁碟和 Managed Service for Apache Spark 暫存 bucket 的資料。
您可以使用 Cloud Key Management Service 建立及管理金鑰環和金鑰,或使用 Cloud KMS Autokey 簡化金鑰環和金鑰的自動建立作業。
使用 Cloud KMS Autokey
- 在專案所在的資料夾啟用 Autokey。
- 建立金鑰控制代碼。建立金鑰控制代碼時,請指定
dataproc.googleapis.com/Batch或dataproc.googleapis.com/Session做為--resource-type。Autokey 會產生金鑰,並指派給金鑰控制代碼。 - 請按照下方「手動建立及使用金鑰」一節的步驟 4 和 5,將權限授予服務帳戶,並設定批次或工作階段工作負載。提交工作負載時,請在
kmsKey欄位中指定金鑰控制代碼資源名稱,而非金鑰資源名稱。
手動建立及使用金鑰
請按照下列步驟手動建立 Cloud KMS 金鑰,並與 Managed Service for Apache Spark 搭配使用。
複製資源名稱。
資源名稱的建構方式如下:
projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
啟用 Compute Engine、Managed Service for Apache Spark 和 Cloud Storage 服務代理服務帳戶,以便使用金鑰:
- 請參閱「使用 Cloud KMS 金鑰保護資源> 必要角色」,將 Cloud KMS CryptoKey 加密者/解密者角色指派給 Compute Engine 服務代理服務帳戶。如果 Google Cloud 控制台的「IAM」頁面未列出這個服務帳戶,請按一下「Include Google-provided role grants」(包含 Google 提供的角色授權),即可列出該帳戶。
將 Cloud KMS CryptoKey 加密者/解密者角色指派給 Managed Service for Apache Spark 服務代理服務帳戶。您可以使用 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。這個專案也可以是執行 Managed Service for Apache Spark 資源的專案。PROJECT_NUMBER:執行 Managed Service for Apache Spark 資源的 Google Cloud 專案編號 (非專案 ID)。在執行 Managed Service for Apache Spark 資源的專案中,啟用 Cloud KMS API。
如果 Managed Service for Apache Spark 服務代理角色未附加至 Managed Service for Apache Spark 服務代理服務帳戶,請將
serviceusage.services.use權限新增至附加至 Managed Service for Apache Spark 服務代理服務帳戶的自訂角色。如果 Managed Service for Apache Spark 服務代理角色已附加至 Managed Service for Apache Spark 服務代理服務帳戶,則可略過這個步驟。按照步驟在 bucket 中新增金鑰。
提交批次工作負載時:
- 在批次
kmsKey參數中指定金鑰。 - 在批次
stagingBucket參數中指定 Cloud Storage bucket 的名稱。
- 在批次
建立互動式工作階段或執行階段設定檔 (工作階段範本) 時,請設定加密金鑰和暫存 bucket:
指定金鑰。在Google Cloud 控制台的「Create a runtime profile」(建立執行階段設定檔) 頁面中,編輯「Additional configuration」(其他設定) 下方的「Network and security」(網路和安全性),選取「Encryption」(加密) 下方的「Cloud KMS key」(Cloud KMS 金鑰),然後選取金鑰。或者,您也可以在工作階段或工作階段範本
kmsKey參數中指定金鑰。指定 Cloud Storage bucket 的名稱。在 Google Cloud 控制台的「Create a runtime profile」(建立執行階段設定檔) 頁面中,編輯「Additional configuration」(其他設定) 下方的「Runtime configuration」(執行階段設定),然後在「Staging bucket」(暫存 bucket) 欄位中選取 bucket。或者,您也可以在工作階段或工作階段範本
stagingBucket參數中指定 bucket。