You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在运行时向使用自定义容器的Dataflow作业提供Google ADP凭证

运行时安全注入凭证的方案(无需嵌入镜像)

Dataflow 官方原生支持运行时自动为 worker 分配服务账号凭证,完全不需要在自定义镜像中内置凭证文件或提前定义GOOGLE_APPLICATION_CREDENTIALS环境变量,具体操作如下:

  • 提前创建作业专用的服务账号,配置好 Dataflow 运行所需的所有权限(如 GCS 读写、目标服务的操作权限等)
  • 提交 Dataflow 作业时新增--service_account_email参数,参数值为上述服务账号的邮箱地址
  • 自定义镜像中删除所有和 ADC 凭证相关的预设配置,Google Cloud 官方 Python SDK 会自动识别 worker 运行时提供的默认服务账号凭证,无需额外配置即可正常调用 GCP 服务

特殊场景下的适配方案

如果你的容器内逻辑强依赖GOOGLE_APPLICATION_CREDENTIALS环境变量指向实体凭证文件,可以通过 Secret Manager + worker 启动脚本的方式运行时注入:

  • 提前将application_default_credentials.json的内容上传至 Secret Manager,为作业服务账号授予该 Secret 的roles/secretmanager.secretAccessor权限
  • 编写 worker 启动脚本,上传至 GCS 路径,脚本示例:
    #!/bin/bash
    gcloud secrets versions access latest --secret=<你的Secret名称> > /tmp/adc.json
    export GOOGLE_APPLICATION_CREDENTIALS=/tmp/adc.json
    
  • 提交作业时新增参数--worker_startup_script_gsuri=gs://<你的脚本存储GCS路径>/startup.sh
  • 注入的凭证仅存储在 worker 本地临时目录,作业结束 worker 销毁时会自动删除,不存在泄露风险

替代方案

如果不想额外配置 Secret Manager 和启动脚本,可以直接修改业务代码的凭证初始化逻辑,显式调用 GCP 默认凭证接口,不需要依赖实体凭证文件和对应的环境变量,示例代码:

from google.auth import default
from google.cloud import storage

# 自动获取Dataflow worker提供的服务账号凭证
credentials, project_id = default()
storage_client = storage.Client(credentials=credentials, project=project_id)

内容的提问来源于stack exchange,提问作者aaron02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:54:03