当前位置: 首页 > 知识库问答 >
问题:

无法删除OWNER对Google Cloud Storage对象的访问权限

谭凯
2023-03-14

我有一个服务器,它使用一个服务帐户将一些数据文件写入云存储桶,我已向该服务帐户授予该存储桶的“存储对象创建者”权限。我希望该服务帐户的权限为“只写”。

据我所知,Storage Object Creator权限还允许读取访问,因此我只想在对象写入后删除其权限。我想我可以使用ACL来实现这一点,但它似乎不起作用。如果我使用

gsutil acl get gs://bucket/object

然后编辑acl.json以删除服务号的OWNER权限,然后使用

gsutil acel设置acl。json gs://bucket/object

要更新ACL,我发现没有任何变化;如果我再次检查ACL,则所有者权限仍然存在。如果我尝试在云控制台web界面中删除所有者权限,也会发生同样的情况。

有没有办法删除该权限?或者另一种方法来实现这一点?

共有2个答案

商鸿哲
2023-03-14

重命名对象可以做到这一点。

gsutil mv -p gs://bucket/object gs://bucket/object-renamed
gsutil mv -p gs://bucket/object-renamed gs://bucket/object

重命名器服务号将成为对象OWNER

闾丘玺
2023-03-14

您无法从以下位置删除上载对象的服务帐户的所有者权限:

https://cloud.google.com/storage/docs/access-control/lists#bestpractices

bucket或object所有者始终具有bucket或object的所有者权限。

存储桶的所有者是项目所有者组,对象的所有者是上传对象的用户,或者如果对象是由匿名用户上传的,则是项目所有者组。

当您将新ACL应用于一个bucket或对象时,如果您省略了授予,云存储将分别向bucket或对象所有者添加权限。

我没有尝试过这一点,但您可以使用once服务帐户(称为SA1)上载对象,然后使用单独的服务帐户(称为SA2)重写对象,然后删除对象。SA1将不再是所有者,因此没有读取权限。SA2将继续具有读写权限,但无法阻止对象的所有者读取它。

 类似资料:
  • 我正在努力解决一个奇怪的问题。 控制台是 如您所见,第一行输出了GeneratorField对象的名称,但是为什么第二个命令失败了? 我正在使用Freemarker 2.3.20 谢啦

  • 问题内容: 我有以下C ++类: 。H .CPP 我用Cython公开了以下内容: 我的问题是我不知道如何从Python调用析构函数。以下完全不执行任何操作: 我在网上找不到类似的问题。你们中有人有在这里出现过的想法吗? 我缺少有关引用计数管理的信息,或者… 非常感谢 问题答案: 删除对对象的引用(局部变量)。C ++对象中还有另一个参考。这称为参考周期。循环GC 可能会 在一段时间后收集此信息。

  • 我有以下型号: 当我运行下面的查询时,用户模型也被删除 有没有办法在不删除用户的情况下删除问题? 我试着重复这些问题但没有用 我认为查询集是懒惰的,所以也许我需要在删除之前评估它,所以我打印了它,但这不起作用。 我知道,将ForeignKey设置为null将为我提供诸如clear和remove之类的方法,但我不想这样做,因为我不希望出现任何孤立的用户问题。 我更新了ForeignKey,如下所示

  • 因此,我正在构建一种基于对象的模型方法,并试图将所有现有的jQuery转换为纯JavaScript调用,但我遇到了一些问题。 所以我有一个基本的基础: 由于某些原因,当使用jQuery调用时,它都运行得很好,但是当使用Document.QuerySelector调用JS替代项时,我会得到一个错误,如下所示: 谁能给我解释一下.find()调用和传统JS的主要区别是什么?

  • 问题内容: 这是使用for每个循环从Java中的LinkedList中查找和删除项目的有效方法,是否可能会导致不一致: 问题答案: 其他人提到有效点,通常这不是您如何从集合中获取对象。但是,在这种情况下,因为您一旦退出循环就可以了。 但是,如果要在之后继续迭代,则需要使用迭代器。否则,您将获得,或更普遍的情况是未定义的行为。 所以,是的, 如果您不在别人之后,您会没事的。 对于那些说这将失败的人来

  • 我在一个类中使用了几个函数,这些函数通过函数接口传递给ostream,而函数接口又可以用来输出错误消息。我曾希望能够将所有ostream绑定到一个对象,然后在必要时重定向到一个文件。 我的代码的相关部分如下所示: 在构造函数(或程序中的所有构造函数)的第一个花括号中,我得到以下错误消息: 受保护功能“std::basic\u ostream 或者对于我粘贴在此处的简短示例代码: “std::bas