【问题标题】:How to mark files in a GCP storage bucket as Read Only for "everyone"?如何将 GCP 存储桶中的文件标记为“所有人”只读?
【发布时间】:2019-04-15 02:02:59
【问题描述】:

我们有一个存储桶,其中存储了 JSON 文件形式的敏感数据。对于PCI 合规性,我们必须将这些文件设为只读。
将在存储桶上启用版本控制,因此无法使用 Retention policy
我尝试在存储桶权限中只保留一个具有只读访问权限的帐户,这(不是真的)部分地达到了目的。但任何具有编辑者或所有者角色的用户都可以编辑文件权限并将其更改回可编辑并修改文件。
如何限制任何人和所有人都不能编辑或修改 GCP 文件?

这在技术上可以通过 Google Cloud Platform 实现吗?
如果没有,如何尽可能减少对文件的访问?

编辑
我不确定我们是否会强制启用版本控制,我将与团队讨论这个问题(一旦他们可用)并在问题中提及相同的内容。
因此,也欢迎考虑“不启用版本控制”或完全忽略 versioning 的答案。

【问题讨论】:

  • 是否可以避免版本控制?版本控制最常见的用例是避免意外删除,这在保留政策下不是问题。
  • 我已经编辑了这个问题。请看一看。

标签: google-cloud-platform google-cloud-storage pci-compliance


【解决方案1】:

以下答案假定您将选择禁用版本控制,因为它与保留策略不兼容。

您可能需要 GCS 的 Bucket Lock 功能。在存储桶上放置保留策略可确保存储桶中的所有当前和未来对象在达到您在保留策略中定义的期限之前都不会被删除或覆盖,这听起来像是您想要的。一旦您启用它并验证它与您的工作流程正常工作,您可以锁定该策略以不可撤销地撤销您在指定保留日期之前删除对象的能力。

对于现有存储桶来说,这是一个严肃的决定,所以我会在打开它之前阅读它:https://cloud.google.com/storage/docs/bucket-lock

一旦您决定启用它,您就可以通过控制台或使用 gsutil 来启用它:

gsutil retention set 1y gs://my-bucket-name  # 1y = 1 year

一旦你感到高兴并想要让它永久化:

gsutil retention lock gs://my-bucket-name

如顶部所述,此功能与另一个对象保存选项不兼容:版本控制。但是,这通常不是问题,因为版本控制最常见的用例是防止意外删除,如果您的目标是防止任何可能的删除,则不需要版本控制。

【讨论】:

  • Brandon - 他也在使用版本控制 - 这是一个或另一个,但不是两者兼而有之。
  • 我编辑了问题,Bucket Lock 满足要求。
【解决方案2】:

Google IAM 权限是加法而不是减法。这意味着具有所有者角色的任何人都具有读取/写入/修改/删除所需的权限。一旦被授予,您就不能限制权限。

既然您提到了 PCI DSS 合规性,我建议您创建一个新项目。在此项目中分配项目所有者。然后创建一个组并将其他所有人添加到该组中。仅授予组存储读取权限。在此项目中创建一个新存储桶,并将您要保护的对象存储在其中。由于只有一个(或多个)明确定义的所有者,因此可以对其他所有人强制执行只读权限。

我不知道如何保护现有存储桶,其中 IAM 成员的角色具有写入权限而不使用保留策略。版本控制可防止对象数据因需要版本才能访问数据而被破坏。

注意:您不能编辑或修改 Google Cloud Storage 中的对象。任何更改都需要创建一个新对象。

【讨论】:

  • 但是所有者仍然有写访问权限?我们怎么能约束所有者修改(通过修改我的意思是删除并创建一个新的)对象?这甚至可能吗?
  • 你有一个先有后有的情况。您需要一个所有者来创建存储桶。如果您随后删除所有者,您将永远无法再管理存储桶。所有者应该是受信任的权威(人)。
  • 我明白这一点。因此,我们将使用默认服务帐户cloud-logs@system.gserviceaccount.com 将一些日志导出到存储桶中。只有这个服务帐户具有写入权限是我们正在寻找的。另外,是否可以基于对象而不是存储桶更改读/写访问权限?
  • 第一问:可以使用服务帐号。如果您不小心删除了该服务帐户,您就有麻烦了。通常,您不想为日志文件上传删除服务帐户提供权限,只需创建和写入即可。所以你又回到了先有鸡还是先有蛋的情况。下一个问:您可以使用 IAM 权限(角色),也可以使用存储桶/对象 ACL 或两者兼而有之。但是,请记住,权限是加法而不是减法。如果有人拥有删除或覆盖权限,您无法将其取消。
  • 为了 PCI 合规性,我会放弃版本控制并使用存储桶锁。这是我能想到的唯一合规方式。将时间设置为 7 年左右。
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2020-03-04
  • 2021-01-11
相关资源
最近更新 更多