Secret Manager 憑證提供者

本文說明如何搭配使用 Secret Manager 和 Google Cloud Serverless for Apache Spark 做為憑證儲存空間,安全地儲存及存取無伺服器工作負載所處理的機密資料。

總覽

Secret Manager 可保護 API 金鑰、密碼和憑證等機密資料。您可以使用這項服務,管理、存取及稽核Google Cloud中的密鑰。

執行 Serverless for Apache Spark 批次工作負載時,您可以使用 Dataproc Secret Manager 憑證提供者,設定工作負載以使用 Secret Manager 密鑰。

可用性

這項功能適用於 Serverless for Apache Spark 執行階段版本 1.2.29 以上、2.2.29 以上,或更新版本的主要執行階段版本

術語

下表說明本文使用的術語。

字詞 說明
Secret Secret Manager 密鑰是全域專案物件,內含中繼資料和密鑰版本的集合。您可以用二進位 blob 或文字字串的形式儲存、管理及存取密鑰。
Credential 在 Hadoop 和其他 Dataproc 工作負載中,憑證包含憑證名稱 (ID) 和憑證值 (密碼)。憑證 ID 和值會對應至 Secret Manager 密鑰 ID 和密鑰值 (密鑰版本)。

權限

Dataproc 會檢查下列選用密鑰是否存在:

  • fs-gs-encryption-key
  • fs-gs-encryption-key-hash
  • fs-gs-proxy-password
  • fs-gs-proxy-username

為確保 Dataproc VM 服務帳戶有權檢查 fs-gs 密鑰,請為服務帳戶新增 Secret Manager 密鑰存取者角色,並設定下列條件:

{
  "expression": "resource.name.startsWith(\"projects/PROJECT_NUMBER/secrets/fs-gs-\")",
  "title": "gsmkeycondition",
  "description": "Permission to access Dataproc secrets"
}

用量

提交 Serverless for Apache Spark 工作負載時,您可以設定下列屬性,將支援的 Hadoop 和其他 OSS 元件設為與 Secret Manager 搭配運作:

  • 供應器路徑 (必要):供應器路徑屬性 spark.hadoop.hadoop.security.credential.provider.path 是以半形逗號分隔的一或多個憑證供應器 URI 清單,用於解析憑證。

    --properties=spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID
    
    • 供應商路徑中的 scheme 表示憑證供應商類型。 Hadoop 配置包括 jceks://user://localjceks://。使用 gsm:// 配置在 Secret Manager 中搜尋憑證。
  • 替代半形句點運算子:Secret Manager 服務不允許密鑰名稱包含半形句點 (.)。不過,部分開放原始碼軟體 (OSS) 元件會在憑證金鑰中使用半形句號。如要解決這項限制,請啟用這項屬性,將憑證名稱中的點 (.) 替換為連字號 (-)。這樣一來,名稱中含有半形句點的 OSS 憑證就能正確儲存至 Secret Manager 並從中擷取。

    舉例來說,如果 OSS 憑證金鑰為 a.b.c,則儲存在 Secret Manager 時必須修改為 a-b-c

    --properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true
    

    這是選用屬性。預設值為 false。如果憑證名稱中沒有點 (.) 運算子,可以安全地忽略這個屬性。

  • 密鑰版本:Secret Manager 中的密鑰可以有多個版本 (值)。在正式環境中,您可以使用這項屬性存取特定密鑰版本,確保存取穩定性。

    --properties=spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-version=1
    

    這是選用屬性。根據預設,Secret Manager 會存取 LATEST 版本,在執行階段解析為密鑰的最新值。如果您的用途是存取密碼的 LATEST 版本,可以放心地忽略這項屬性。

使用 Secret Manager 憑證提供者執行批次工作負載

如要提交使用 Secret Manager 憑證提供者的批次工作負載,請在本機或 Cloud Shell 中執行下列指令。

gcloud dataproc batches submit spark \
    --region=REGION \
    --jars=JARS \
    --class=MAIN_CLASS \
    --properties="spark.hadoop.hadoop.security.credential.provider.path=gsm://projects/PROJECT_ID,spark.hadoop.hadoop.security.credstore.google-secret-manager.secret-id.substitute-dot-operator=true" \
    ...other flags as needed...

更改下列內容: