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

时间:2019-05-02 07:57:25

标签: google-cloud-platform google-cloud-build google-iam google-cloud-iam

我在我的GCP项目中设置了一个Cloud Build触发器,以便通过.yaml文件从Cloud Source Repository部署Cloud Function。一切似乎都已正确设置并且permissions granted according to the official documentation,但是当我通过手动运行触发器来测试触发器时,出现以下错误:

  

错误:(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删除它,然后将其重新添加,但始终会显示此错误。

为什么?

1 个答案:

答案 0 :(得分:0)

经过反复试验,我弄清楚了。该文档似乎不正确(缺少一些其他必要的权限)。我用this answer到达了那里。

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

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

祝你好运!