对于可以 运行 "gcloud builds submit" 和 "gcloud run deploy" 的服务密钥,我需要什么 IAM 权限?

What IAM permissions do I need for a service key that can run "gcloud builds submit" and "gcloud run deploy"?

我正在尝试找出我需要分配给将用于 运行 以下命令的服务密钥的绝对最小 IAM 权限集:

gcloud builds submit --tag gcr.io/MYPROJECT/MYNAME
gcloud run deploy --allow-unauthenticated --platform=managed --image gcr.io/MYPROJECT/MYNAME ...

我在弄清楚 IAM 时遇到了很多麻烦,所以如果有人能给我更详细的说明就更好了!

这是我到目前为止的发现(我最终获得了比我想要的更多的开放权限):https://simonwillison.net/2020/Jan/21/github-actions-cloud-run/#google-cloud-service-key

我实际上 运行 在 Python 脚本中执行这些命令 - 相关代码在这里:https://github.com/simonw/datasette/blob/07e208cc6d9e901b87552c1be2854c220b3f9b6d/datasette/publish/cloudrun.py#L134-L141

我了解到您正在 运行 使用服务帐户执行这些命令,您的目标是确定要分配给此服务帐户的最小 IAM 权限集,以便它可以构建和部署。我将列出一组最小的 IAM 角色(不是 IAM 权限)

要运行gcloud builds submit --tag gcr.io/MYPROJECT/MYNAME,你需要:

  • roles/cloudbuild.builds.editor 触发构建
  • roles/storage.admin 推送图像

要运行gcloud run deploy --allow-unauthenticated --platform=managed --image gcr.io/MYPROJECT/MYNAME ...你需要:

  • roles/run.admin(部署并允许 allUsers 访问服务)
  • roles/iam.serviceAccountUser(因为代码随后会运行在一个服务账号下,所以用于部署的服务账号也需要能够"act as" 运行时间服务帐户)