为什么CloudBuild使用默认服务帐户而不是cloudbuild服务帐户

时间:2020-10-23 21:36:06

标签: spring-boot google-cloud-platform

当我将代码推送到分支并通过Cloud build GCP触发它时。它被抛出错误以下:

错误:(gcloud.app.deploy)PERMISSION_DENIED:您无权充当“ ProjectName@appspot.gserviceaccount.com”

  • “ @ type”:type.googleapis.com/google.rpc.ResourceInfo 描述:您无权充当此服务帐户。 resourceName:ProjectName@appspot.gserviceaccount.com resourceType:serviceAccount

它应该使用服务帐户: 15428174@cloudbuild.gserviceaccount.com

下面是我的CloudBuild.yaml文件:

步骤:

  • 名称:'gcr.io/cloud-builders/mvn' args:['package','-Dmaven.test.skip = true','-Pdev']

  • 名称:'gcr.io/cloud-builders/gcloud' args:['app','deploy','-appyaml =。/ src / main / appengine / dev / app.yaml'] 超时:“ 1600s”

1 个答案:

答案 0 :(得分:2)

这是一个安全项目。 App Engine实例已为其分配了一个服务帐户。您正在使用Cloud Build将应用程序部署到App Engine。此错误意味着将代码推送到App Engine的帐户未被授予“使用” App Engine服务帐户的权利。

目的是通过将应用程序部署到具有更高/不同权限的服务帐户的服务来防止您提升权限。

解决方案是向该帐户授予对App Engine服务帐户的ActAs权限到Cloud Build服务帐户。