GCP部署自定义VM镜像时自动创建的服务账号权限不足问题求解
解决GCP Marketplace部署时服务账号缺失镜像只读权限的问题
报错说明
部署触发后立即验证失败,报错信息:
"domain": "global",
"message": "Required 'compute.images.useReadOnly' permission for 'projects/r-public/global/images/my-image'",
"reason": "forbidden"
可行解决方案
给Cloud Marketplace服务账号添加权限
GCP Marketplace部署依赖项目内的固定服务账号service-PROJECT_NUMBER@cloud-marketplace.iam.gserviceaccount.com(替换PROJECT_NUMBER为你的项目编号),并非每次临时创建新账号。操作步骤:- 打开GCP控制台的IAM页面
- 搜索上述格式的服务账号
- 为其添加Compute Image User角色(该角色包含所需的
compute.images.useReadOnly权限),或者直接添加单个权限
跨项目镜像权限配置(如果镜像在其他项目)
若自定义镜像my-image存放在r-public项目,而部署操作在另一个项目执行:- 进入
r-public项目的Compute Engine镜像管理页面 - 找到
my-image并进入权限设置界面 - 添加部署目标项目的
Cloud Marketplace Service Agent账号,授予compute.images.useReadOnly权限
- 进入
指定自定义服务账号部署(高级选项)
提前创建并配置好权限的自定义服务账号,在部署包配置中指定使用该账号:- 创建新服务账号,授予
compute.images.useReadOnly及部署所需的其他核心权限(如compute.instances.create) - 在部署包的
schema.yaml配置文件中,添加serviceAccount字段指向该自定义账号的邮箱
- 创建新服务账号,授予
内容的提问来源于stack exchange,提问作者celcin
相关产品推荐
相关产品推荐

