如何设置IAM权限以允许用户通过JSON读取Google存储桶中的对象

问题描述

我有一个简单的Python网络应用程序,可以代表用户创建一个Google Cloud Project。然后,它将创建一个存储桶,最后通过JSON API将CSV文件上传到存储桶。

我的问题是,作业完成后,用户无法访问CSV文件,甚至无法将自己的文件上传到存储桶。

我认为我必须设置IAM权限,但通读文档无法解决

解决方法

为了能够读取特定文件,您可以使用ObjectAccessControls insert API调用在对象级别设置角色:

POST https://storage.googleapis.com/storage/v1/b/__bucket__/o/__object__/acl

__bucket__替换为存储桶的名称,并将__object__替换为文件的名称。并发送下一个请求正文属性:

entity user-email@email.com
role   READER

如果要允许用户覆盖文件,请将role属性更改为OWNER

如果要允许用户将完全不同的文件上传到存储桶,则需要使用role {{3在存储桶级别将WRITER设置为BucketAccessControls insert }}调用,但是可能不需要,因为这将允许用户获得下一个权限:

尽管不会返回acl属性,但READER可以获取存储桶,并列出存储桶的对象。 WRITER是读取器,可以将对象插入存储桶中并删除存储桶的对象。