我为开发人员创建了一个服务帐户,这样他们就可以使用"gcloud run deploy";命令。我已经设法找到了正确的角色:工件注册中心管理员和云运行管理员;但是关于存储部分还有第三个权限,我找不到合适的权限,"云构建服务帐户"。或"存储管理";
您可以通过转到桶权限选项卡并使用Storage Admin添加新的主体(您的服务帐户)来限制您的服务帐户只能使用默认的Cloud Build bucket (<PROJECT_ID>_cloudbuild
)。作用。
然而,您必须做的另一件事是为整个项目赋予服务帐户storage.buckets.list
权限,这就是为什么您总是看到错误。
您可以通过运行gcloud run deploy
和--verbosity=debug
来验证这一点,以查看内部错误消息:
"error": {
"code": 403,
"message": "<SERVICE_ACCOUNT> does not have storage.buckets.list access to the Google Cloud project.",
...
为了提供最小的权限,您可以创建一个只有storage.buckets.list
权限的自定义角色,并将其分配给您的服务帐户,这足以解决我验证的问题。
以下是我最终为服务帐户使用的权限(相关文档):
- 云构建编辑器角色(项目范围)
- 工件注册管理角色(项目范围)
- 存储管理员角色(仅用于云构建桶)
- 云运行管理员角色(项目范围)
- 服务帐户用户角色(项目范围)
- 自定义角色(项目范围,只包含storage.buckets.list)
让我知道这是否有用。
您可以在创建新桶时启用统一桶级访问,或者在现有桶上显式启用统一桶级访问。
当你切换到统一IAM访问,所有者/查看器/编辑器角色不再有访问桶。(注意,role/storage.admin
不包括在这个原语角色中)。
另一种方法是删除除您的之外的桶和访问桶的项目的所有IAM权限。服务帐户。
您可以参考本文档了解有关行为、继承和考虑的更多信息。