即使授予了正确的角色,GCP Cloud Build也会因权限错误而失败

sta*_*uxe 2 google-cloud-platform google-iam google-cloud-iam google-cloud-build

我在GCP项目中设置了Cloud Build触发器,以便通过.yaml文件从Cloud Source Repository部署Cloud Function。一切似乎都已正确设置,并根据官方文档授予了权限,但是当我通过手动运行触发器来测试触发器时,出现以下错误:

错误:(gcloud.functions.deploy)响应错误:状态= [403],代码= [禁止],消息= [缺少对资源[MY_SERVICE_ACCOUNT]的必需的权限iam.serviceAccounts.actAs。请授予角色/iam.serviceAccountUser角色。您可以通过运行“ gcloud iam服务帐户add-iam-policy-binding [MY_SERVICE_ACCOUNT] --member = --role = roles / iam.serviceAccountUser']来完成此操作

现在,首先,因为建议的语法错误(缺少“ member =“的值),所以运行建议的命令甚至无法正常工作。但更重要的是,我已经将该角色添加到错误消息所抱怨的服务帐户中。我尝试从UI和CLI删除它,然后将其重新添加,但始终会显示此错误。

为什么?

sta*_*uxe 5

经过大量的反复试验,我发现了这一点。该文档似乎不正确(缺少一些其他必要的权限)。我用这个答案使我到达那里。

简而言之,您还需要向该帐户添加cloudfunctions.developeriam.serviceAccountUser角色[PROJECT_NUMBER]@cloudbuild.gserviceaccount.com,并且(我相信)还需要将上述cloudbuild服务帐户作为具有部署您的Cloud Function权限的服务帐户的成员添加(再次显示在链接的SO答案)。

文档确实应该反映出这一点。

祝好运!

  • 谢谢你。老实说,我认为谷歌云文档相当糟糕。 (3认同)
  • 救了我一命!在文档上绝对不清楚。即使我尝试执行错误消息```gcloud iam service-accounts add-iam-policy-binding {} --member = --role = roles / iam.serviceAccountUser```上建议的命令,它也不会工作,因为这不是所需权限的真正接受者 (2认同)