Google Cloud Build中获取Application Default Credentials报错问题咨询
Cloud Build环境下ADC获取失败的原因
核心错误原因
- 配置了无效的
GOOGLE_APPLICATION_CREDENTIALS环境变量:如果cloudbuild.yaml或者构建步骤中主动设置了该环境变量,但变量指向的密钥文件在构建容器中不存在,ADC会优先读取该路径文件,失败后直接报错,不会尝试 fallback 到元数据服务器获取Cloud Build服务账号的凭据。 - 嵌套容器未共享凭据:如果测试步骤是通过
docker run启动子容器运行代码,Cloud Build默认注入到当前构建步骤容器的凭据文件/var/run/secrets/tokens/gcp-ksa/google-application-credentials.json不会自动传递到子容器,导致子容器内无法读取到有效凭据。 - 自定义服务账号权限缺失:如果没有使用默认的Cloud Build服务账号,而是指定了自定义服务账号执行构建,需要确保Cloud Build服务代理账号拥有模拟该自定义服务账号的权限,否则元数据服务器不会返回有效凭据。
- 依赖库版本过低:使用的
google-authPython库版本过旧,旧版本不支持Cloud Build最新的工作负载身份凭据获取逻辑,无法正常读取注入的凭据或访问元数据服务器。 - 私有Worker网络限制:如果使用自托管的Cloud Build私有Worker,需要确保Worker网络可以正常访问Google Cloud元数据服务器
169.254.169.254,否则ADC无法通过元数据接口获取服务账号凭据。
排查方案
- 优先删除构建配置中所有手动设置的
GOOGLE_APPLICATION_CREDENTIALS环境变量,重试构建确认是否恢复正常。 - 若存在嵌套运行容器的逻辑,需要将构建步骤容器中的凭据文件挂载到子容器中再运行代码。
- 升级
google-auth库到最新稳定版本:pip install --upgrade google-auth - 检查自定义服务账号的模拟权限配置,确保Cloud Build服务代理拥有对应权限。
内容的提问来源于stack exchange,提问作者Michael Howlard
相关产品推荐
相关产品推荐

