Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud storage 对象不继承bucket权限_Google Cloud Storage - Fatal编程技术网

Google cloud storage 对象不继承bucket权限

Google cloud storage 对象不继承bucket权限,google-cloud-storage,Google Cloud Storage,在GCS存储中,向bucket(不是整个项目;该项目中只有一个bucket)添加权限时,您可以设置bucket的权限,以便放入bucket的任何新对象都继承bucket的权限。 然而,在最新版本的地面军事系统中,我们还没有弄清楚如何做到这一点。我们可以设置根bucket的权限: { "email": "someuser@someaccount.iam.gserviceaccount.com", "entity": "someuser@someaccount.iam.gservic

在GCS存储中,向bucket(不是整个项目;该项目中只有一个bucket)添加权限时,您可以设置bucket的权限,以便放入bucket的任何新对象都继承bucket的权限。 然而,在最新版本的地面军事系统中,我们还没有弄清楚如何做到这一点。我们可以设置根bucket的权限:

{
    "email": "someuser@someaccount.iam.gserviceaccount.com",
    "entity": "someuser@someaccount.iam.gserviceaccount.com",
    "role": "READER"
  }
但是,当一个新对象放入该bucket时,它不会继承该角色。 是否有办法(a)继承角色,或(b)将IAM角色设置为bucket(我们只能将IAM角色设置为项目,而不是特定bucket)?
谢谢

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

要使用控制台更改项目中单个bucket的权限

  • 进入存储、浏览器。一旦到了那里,你会看到一个桶清单
  • 选择要在其中更改权限的bucket
  • 单击右侧的三个垂直点并选择“编辑bucket权限”
  • 键入要配置的帐户并选择所需角色 详细介绍了所描述的过程,以及设置ACL的其他方法,例如使用Cloud Shell。下一个命令指定单个授权:

    gsutil acl ch -u [USER_EMAIL]:[PERMISSION] gs://[BUCKET_NAME]
    
    查找预定义角色的列表

    更新2

    考虑到下一个错误:

    命令例外: user@account.iam.gserviceaccount.com:角色/storage.legacyBucketReader 不是有效的ACL更改允许权限为所有者、写入者、, 读取器

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

  • :成员面向项目的角色。“定义谁(身份)对哪个资源有什么访问权(角色)。”<代码>gsutil iam ch用户:[用户电子邮件]:objectCreator,objectViewer gs://[BUCKET\u名称]

  • :授予用户对单个存储桶或对象的读写权限:<代码>gsutil acl ch-u[用户电子邮件]:读卡器gs://[存储桶名称]


  • 该命令不起作用,因为这两个命令是混合的。对于
    gsutil acl
    ,您可以看到,唯一可能的权限是READER、WRITER、OWNER、Default

    可能相关-标准的
    Viewer
    角色只能应用于项目,但是
    角色/存储。objectViewer
    (不同的权限)可以应用于bucket。看见检查您的
    阅读器
    角色的权限(这似乎是一个自定义角色?)不,它不起作用。这是我得到的:Command:gsutil acl ch-uuser@bucket-account.iam.gserviceaccount.com:roles/storage.objectViewer gs://bucket/Result:CommandException:user@bucket-account.iam.gserviceaccount.com:角色/storage.objectViewer不是有效的ACL更改允许的权限为所有者、写入者、读取者。这似乎是一个间歇性的bug,因为昨天控制台中没有这个确切的函数(我们过去就是这样做的),而且gsutil acl ch也不会影响任何新创建的对象。很奇怪。控制台现在仍然说“您不能再在控制台中设置ACL来管理访问。要了解IAM和ACL之间的关系,请参阅文档”,但它现在可以工作了。我现在更困惑了,您是否能够正确地修复所有存储权限?如果没有,请告诉我您最近是否更改了除云存储阅读权限(云存储管理员、IAM等)之外的其他相关权限。我在IAM中使用了权限,当不允许访问时,错误消息将被清除。P.e.:
    AccessDeniedException:403[EMAIL]没有存储。BUCKET.get访问[BUCKET]。
    这不起作用。我得到:CommandException:user@account.iam.gserviceaccount.com:roles/storage.legacyBucketReader不是有效的ACL更改允许的权限为所有者、写入者、读取器。bucket已经具有读权限(我尝试过,它说“没有更改”),当我在其中创建新对象时,它不会继承用户的读权限。AIM说我是项目的所有者。到目前为止,这已经足够我做任何需要做的事情了;它变了吗?对不起,我在更新1中错了。你说得对,项目的所有者就足够了。看看更新2(我删除了第一个更新,因为离开它可能会让人困惑)。