google-cloud-storage - 对象不继承桶权限

标签 google-cloud-storage

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

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

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

但是当一个新对象被放入那个桶时,它不会继承这个角色。

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

谢谢!

最佳答案

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

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

  1. 转到存储、浏览器。到达那里后,您将看到一个遗愿 list 。
  2. 选择您要更改权限的存储桶。
  3. 点击右侧的三个垂直点,然后选择“编辑存储桶权限”。
  4. 键入您要配置的帐户并选择所需的角色。

描述的过程很详细here ,以及其他设置 ACL 的方法,例如使用 Cloud Shell。下一个命令指定个人授权:

gsutil acl ch -u [USER_EMAIL]:[PERMISSION] gs://[BUCKET_NAME]

查找预定义角色列表 here .

更新 2

考虑下一个错误:

CommandException: user@account.iam.gserviceaccount.com:roles/storage.legacyBucketReader is not a valid ACL change Allowed permissions are OWNER, WRITER, READER

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

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

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

命令无效,因为两个命令混合在一起。对于 gsutil acl,唯一可能的权限是 READER、WRITER、OWNER、Default,如您所见 here .

关于google-cloud-storage - 对象不继承桶权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778422/

相关文章:

google-cloud-platform - 如何在流式查询中使用 Google Cloud Storage 作为检查点位置?

java - 如何替换 servingURL 后面的图像?

Maven clean/build 和部署后,Java App Engine 对 GcsService.createOrReplace 的调用会导致 Stopwatch.createUnstarted noSuchMethodError

python - 如何获取 App Engine 开发服务器上 Google Cloud Storage 文件对象的服务 URL?

python-3.x - 如何在谷歌云存储中获取 GS_SECRET_ACCESS_KEY 和 GS_ACCESS_KEY_ID

Android gsutil 工具不工作

java - 将可序列化对象写入文件 - Google 云存储

google-app-engine - Cloud Shell 上的 dev_appserver 上的 Google Cloud 存储

google-cloud-storage - 子目录上 Cloud Storage 的 Cloud Pub/Sub 通知

python - 部署到 Google App Engine 时出现 "No module named cloud"