我有一台服务器,该服务器使用我已向存储桶授予“存储对象创建者”权限的服务帐户将一些数据文件写入Cloud Storage存储桶。我希望该服务帐户的权限是只写的。
据我所知,“存储对象创建者”权限还允许读取访问,因此,我只想在对象写入后删除其权限。我以为可以使用ACL来执行此操作,但它似乎不起作用。如果我使用
gsutil acl get gs://bucket/object > acl.json
然后编辑acl.json以删除该服务帐户的OWNER权限,然后使用
gsutil acel set acl.json gs://bucket/object
要更新ACL,我发现没有任何变化。如果我再次检查ACL,OWNER权限仍然存在。如果我尝试在Cloud Console网络界面中删除OWNER权限,也会发生同样的事情。
是否可以删除该权限?还是另一种方式来实现这一目标?
答案 0 :(得分:1)
您不能从以下位置删除上传对象的服务帐户的OWNER
权限:
https://cloud.google.com/storage/docs/access-control/lists#bestpractices
存储桶或对象所有者始终具有存储桶或对象的
OWNER
权限。存储桶的所有者是项目所有者组,而对象的所有者是上载对象的用户,或者如果对象是匿名用户上载的,则是项目所有者组。
在将新的ACL应用于存储桶或对象时,如果您省略了授权,则Cloud Storage分别向存储桶或对象所有者添加
OWNER
权限。
我还没有尝试过,但是您可以使用一个服务帐户(称为SA1)上载对象,然后使用单独的服务帐户(称为SA2)重写对象,然后删除对象。 SA1将不再是所有者,因此将没有读取权限。尽管SA2将继续具有读写权限,但是无法阻止对象所有者读取它。
答案 1 :(得分:0)
重命名对象可以解决问题。
gsutil mv -p gs://bucket/object gs://bucket/object-renamed
gsutil mv -p gs://bucket/object-renamed gs://bucket/object
重命名器服务帐户将成为对象OWNER
。