如何解决Cloud Build无法部署到Google App Engine-您无权充当@ appspot.gserviceaccount.com
今天早上,我进行了一次PR,该PR在我的登台环境中触发了Cloud Build,但是未能将结果部署到GAE。
错误如下:
错误:(gcloud.app.deploy)PERMISSION_DENIED:您无权充当“ [已编辑] @ appspot.gserviceaccount.com” 步骤#4:-'@type':type.googleapis.com/google.rpc.ResourceInfo 步骤#4:说明:您无权充当此服务帐户。 步骤#4:resourceName:[已编辑] @ appspot.gserviceaccount.com 步骤#4:resourceType:serviceAccount
当我看着https://console.cloud.google.com/cloud-build/settings/service-account时 云构建具有以下服务帐户权限已启用:
- App Engine管理员
- Cloud KMS
检查https://console.cloud.google.com/iam-admin/iam 我可以看到cloudbuild服务帐户具有以下角色:
- App Engine管理员
- App Engine Deployer
- 云构建服务帐户
- Cloud KMS CryptoKey Decrypter
解决方法
根据提供的错误,似乎您需要向服务帐户中添加一些委托。这意味着服务帐户可以代表另一个服务帐户执行操作。不要在项目级别添加此权限,因为它会带来安全风险!在下面,您可以找到一个如何在另一个服务帐户上添加roles/iam.serviceAccountUser
的示例。
PROJECT_ID=xxxxxx
PROJECT_NUMBER=$(gcloud projects list \
--format="value(projectNumber)" \
--filter="projectId=${PROJECT_ID}")
gcloud iam service-accounts add-iam-policy-binding \
${PROJECT_ID}@appspot.gserviceaccount.com \
--member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
--role=roles/iam.serviceAccountUser \
--project=${PROJECT_ID}
总而言之,服务帐户必须具有iam.serviceAccounts.actAs
角色中的roles/iam.serviceAccountUser
权限。可以在here中找到更新的Google文档。
我有同样的问题。对我来说,我必须将服务帐户用户角色添加到IAM中的Circle CI用户。也许您可以对cloudbuild做同样的事情。
,我向我的CI / CD服务帐户授予Service Account User
权限。可行。
要解决此问题,可以向您的CI / CD管道服务帐户添加Service Account User
IAM权限。
例如。如果您正在使用Cloud Build,请将Service Account User
角色添加到您的{project-number}@cloudbuild.gserviceaccount.com
服务帐户中
首先我们进入权限管理器,选择我们要添加权限的项目。 https://console.cloud.google.com/iam-admin/
,似乎通过向Gitlab或CircleCI帐户添加.ActAs
权限可以回答此问题。
我还没有机会进行测试-如果其他人可以并且可以发布详细信息-请这样做;
这是我可以收集的建议答案: How do you enable "iam.serviceAccounts.actAs" permissions on a sevice account?
Nebulastic在上面有一个很好的答案,但是{PROJECT_ID}
需要与Gitlab或CircleCI帐户名而不是项目名为account的交换。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。