对象不继承存储桶权限

时间:2018-04-11 14:58:13

标签: google-cloud-storage

在GCS存储中,当向存储桶添加权限(而不是整个项目;只是该项目中的一个存储桶)时,您曾经能够设置存储桶的权限,以便将任何新对象放入存储桶中继承了存储桶的权限。

然而,在最新版本的GCS中,我们无法弄清楚如何做到这一点。我们可以设置根存储桶的权限:

{
    "email": "someuser@someaccount.iam.gserviceaccount.com",
    "entity": "someuser@someaccount.iam.gserviceaccount.com",
    "role": "READER"
  }

但是当一个新对象放在该存储桶中时,它不会继承此角色。

是否有办法(a)继承角色,或(b)将IAM角色设置为存储桶(我们只能将IAM角色设置为项目,而不是特定的存储桶)?

谢谢!

1 个答案:

答案 0 :(得分:0)

为云存储分区配置Access Control options有五种不同的方法。我建议您使用访问控制列表(ACL)在单个存储桶中继承该角色,因为在“您需要对单个对象进行细粒度控制”时使用ACL。

使用控制台更改项目内单个存储桶的权限

  1. 转到存储,浏览器。在那里,您将看到一个桶清单。
  2. 选择要更改权限的存储桶。
  3. 点击右侧的三个垂直点,然后选择"编辑存储桶权限"。
  4. 键入要配置的帐户,然后选择所需的角色。
  5. 所描述的过程详细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

    事实上涉及两种类型的角色:

    1. Identity and Access Management (IAM) roles:成员项目导向角色。 “定义谁(身份)具有哪种资源的访问权限(角色)”。 Examplegsutil iam ch user:[USER_EMAIL]:objectCreator,objectViewer gs://[BUCKET_NAME]

    2. Access Control Lists (ACLs):为各个存储桶或对象的用户授予读取或写入权限。 Examplegsutil acl ch -u [USER_EMAIL]:READER gs://[BUCKET_NAME]

    3. 该命令无效,因为两个命令都是混合的。对于gsutil acl,唯一可能的权限是READER,WRITER,OWNER,Default,您可以看到here