Secret Manager 憑證提供者

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

總覽

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"
}

用量

您可以設定支援的 Hadoop 和其他 OSS 元件,在提交 Serverless for Apache Spark 工作負載時設定下列屬性,即可與 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) 元件會在憑證金鑰中使用半形句號。如要解決這項限制,請啟用這項屬性,將憑證名稱中的點 (.) 替換為連字號 (-)。這樣一來,系統就能正確地從 Secret Manager 儲存及擷取名稱含有半形句點的 OSS 憑證。

    舉例來說,如果 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...

更改下列內容: