在GCS存储中,当向存储桶添加权限(而不是整个项目;只是该项目中的一个存储桶)时,您曾经能够设置存储桶的权限,以便将任何新对象放入存储桶中继承了存储桶的权限。
然而,在最新版本的GCS中,我们无法弄清楚如何做到这一点。我们可以设置根存储桶的权限:
{
"email": "someuser@someaccount.iam.gserviceaccount.com",
"entity": "someuser@someaccount.iam.gserviceaccount.com",
"role": "READER"
}
但是当一个新对象放在该存储桶中时,它不会继承此角色。
是否有办法(a)继承角色,或(b)将IAM角色设置为存储桶(我们只能将IAM角色设置为项目,而不是特定的存储桶)?
谢谢!
答案 0 :(得分:0)
为云存储分区配置Access Control options有五种不同的方法。我建议您使用访问控制列表(ACL)在单个存储桶中继承该角色,因为在“您需要对单个对象进行细粒度控制”时使用ACL。
使用控制台更改项目内单个存储桶的权限
所描述的过程详细here,以及设置ACL的其他方法,例如使用Cloud Shell。下一个命令指定单个授权:
gsutil acl ch -u [USER_EMAIL]:[PERMISSION] gs://[BUCKET_NAME]
查找预定义角色here的列表。
更新2
考虑下一个错误:
CommandException: user@account.iam.gserviceaccount.com:角色/ storage.legacyBucketReader 不是有效的ACL更改允许的权限是OWNER,WRITER, READER
事实上涉及两种类型的角色:
Identity and Access Management (IAM) roles:成员项目导向角色。 “定义谁(身份)具有哪种资源的访问权限(角色)”。 Example:gsutil iam ch user:[USER_EMAIL]:objectCreator,objectViewer gs://[BUCKET_NAME]
Access Control Lists (ACLs):为各个存储桶或对象的用户授予读取或写入权限。 Example:gsutil acl ch -u [USER_EMAIL]:READER gs://[BUCKET_NAME]
该命令无效,因为两个命令都是混合的。对于gsutil acl
,唯一可能的权限是READER,WRITER,OWNER,Default,您可以看到here。