我正在使用服务帐户将文件上传到具有版本控制的 Google Cloud Storage 存储桶。我想将服务帐户权限保持在最低限度,它只需要上传文件,所以我不想授予它删除文件的权限,但上传失败(仅在流式传输所有内容之后!),说它需要删除权限。
难道不应该创建一个新版本而不是删除吗?
这是命令:
cmd-that-streams | gsutil cp -v - gs://my-bucket/${FILE}
ResumableUploadAbortException: 403 [email protected] /cdn-cgi/l/email-protection does not have storage.objects.delete access to my-bucket/file
我已经仔细检查了存储桶上是否启用了版本控制
> gsutil versioning get gs://my-bucket
gs://my-bucket: Enabled
许可storage.objects.delete
如果您正在执行,则需要gsutl cp
命令按照云存储 gsutil 命令 https://cloud.google.com/storage/docs/access-control/iam-gsutil.
命令:cp
所需权限:
- storage.objects.list*(用于目标存储桶)
- storage.objects.get(对于源对象)
- storage.objects.create(用于目标存储桶)
- storage.objects.delete**(对于目标存储桶)
**仅当您不使用 -n 标志并且插入的对象与已插入的对象同名时才需要此权限
存在于桶中。
Google 文档建议使用 -n (不要覆盖现有文件),以便storage.objects.delete
不会被要求。但是您的用例使用版本控制,您将需要覆盖,因此您将需要添加 storage.objects.delete
关于您的权限。
我在启用了存储桶版本控制且只有 1 个版本的情况下对此进行了测试。具有角色的服务帐户存储对象创建器和存储对象查看器 https://cloud.google.com/storage/docs/access-control/iam-roles.
See screenshot for the commands and output:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)