App Engine默认凭证删除超30天后的恢复及部署方案咨询
核心问题答复
- 已删除超过30天的App Engine默认服务账号完全不支持恢复:Google Cloud对所有服务账号执行统一的30天软删除策略,超出保留期后账号的唯一标识、权限绑定数据会被永久从底层清除,不存在任何内部或公开的恢复通道,不需要在这个方向尝试任何方案。
- 完全可以用新创建的自定义服务账号替代原默认账号,不需要重建整个GAE项目或应用。
- 支持强制GAE所有新版本、全应用使用非默认的自定义服务账号,部署和运行流程不会因为缺少原始默认账号受影响。
落地操作步骤
- 提前准备替代用的服务账号
- 在当前GAE所属项目下新建普通服务账号,命名没有强制要求,不需要刻意模仿原默认账号的命名规则。
- 给新建的服务账号绑定必需的角色,满足部署和运行需求:
roles/appengine.appAdmin:拥有GAE应用、版本的管理权限roles/editor:覆盖GCP基础资源调用权限,生产环境可根据实际业务需求收缩为最小权限集roles/storage.objectAdmin:支持部署时上传版本包到项目关联的Cloud Storage桶roles/cloudbuild.builds.builder:如果使用Cloud Build执行部署构建流程,需要绑定该角色拉取依赖、执行构建任务
- 给你用来执行部署操作的身份(本地gcloud登录的账号、CI/CD流程用的服务账号)绑定新服务账号的
roles/iam.serviceAccountUser角色,否则部署时会触发“无权模拟服务账号”的报错。
- 配置GAE使用新服务账号部署运行
- 单次部署指定服务账号的话,直接在gcloud部署命令中加参数即可:
gcloud app deploy --service-account=替换为你新建服务账号的完整邮箱
- 要做全局默认配置的话,直接修改项目根目录下的
app.yaml,在顶层配置项中加入服务账号字段:
service_account: 替换为你新建服务账号的完整邮箱 runtime: 你的应用使用的运行时,例如python311、nodejs20 # 其余原有配置保持不变即可
- 执行部署后,新发布的版本会完全使用指定的自定义服务账号运行,不会再调用已删除的原默认服务账号。
避坑提示:
- 不要尝试创建和原默认账号同名的服务账号,新账号的系统唯一UID和被删除的原账号完全不同,GCP不会将其识别为原默认账号,纯属无效操作。
- 之前部署的、绑定了已删除默认账号的旧版本会持续报权限错误,不需要尝试修复旧版本,等新版本部署完成、把全部流量切到新版本后,直接删除异常旧版本即可。
内容的提问来源于stack exchange,提问作者lyokoprod
相关产品推荐
相关产品推荐

