使用projection=full列举GCS对象时缺失owner.entityId字段问题
问题根因
这个owner.entityId字段缺失不是权限配置错误导致的,是GCS JSON API的返回策略调整造成的:
- 首先排查你调用接口时有没有额外加
fields参数手动过滤返回字段,如果加了需要主动把owner.entityId加入字段白名单才能返回 - 目前GCS已经逐步停止对服务账号、用户组、域身份这类非普通个人Google账号的主体返回
entityId字段,只有当对象所有者是早期注册的普通个人Google账号时才会返回该字段,官方文档的更新存在滞后 - 你已经配置的
storage.buckets.list、storage.objects.get、storage.objects.getIamPolicy等权限,以及JWT中使用的https://www.googleapis.com/auth/devstorage.full_control授权范围都满足接口要求,哪怕授予项目级Owner角色也解决不了这个问题,和权限完全无关
替代方案
owner.entity字段返回的服务账号邮箱/主体标识本身就是全局唯一的,可以直接作为所有者的唯一识别标识,完全可以替代entityId的作用,不需要额外依赖该字段。
内容的提问来源于stack exchange,提问作者chicken-rice
相关产品推荐
相关产品推荐

