Secret Manager 凭据提供程序

本文档介绍了如何将 Secret Manager 作为凭据存储区与 Google Cloud Serverless for Apache Spark 搭配使用,以安全地存储和访问由无服务器工作负载处理的敏感数据。

概览

Secret Manager 可以保护您的敏感数据,例如 API 密钥、密码和证书。您可以使用它在Google Cloud中管理、访问和审核 Secret。

运行 Serverless for Apache Spark 批量工作负载时,您可以使用 Dataproc Secret Manager 凭据提供程序将其配置为使用 Secret Manager Secret。

可用性

此功能适用于 Serverless for Apache Spark 运行时版本 1.2.29+、2.2.29+ 或更高的主要运行时版本

术语

下表介绍了本文档中使用的术语。

术语 说明
Secret Secret Manager Secret 是包含一系列元数据和 Secret 版本的全局项目对象。您可以将密文作为二进制 blob 或文本字符串进行存储、管理和访问。
Credential 在 Hadoop 和其他 Dataproc 工作负载中,凭据由凭据名称 (ID) 和凭据值(密码)组成。凭据 ID 和值会映射到 Secret Manager Secret ID 和 Secret 值(Secret 版本)。

权限

Dataproc 会检查是否存在以下可选的 Secret:

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

为确保 Dataproc 虚拟机服务账号有权检查 fs-gs Secret,请向该服务账号添加具有以下条件的 Secret Manager Secret Accessor 角色

{
  "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 服务不允许在 Secret 名称中使用点 (.)。不过,某些开源软件 (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 中的密文可以有多个版本(值)。使用此属性可访问特定 Secret 版本,以便在生产环境中实现稳定访问。

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

    这是一个可选属性。默认情况下,Secret Manager 会访问 LATEST 版本,该版本会在运行时解析为 Secret 的最新值。如果您的应用场景是始终访问 Secret 的 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...

替换以下内容: