我们有一个存储桶,其中以JSON文件的形式存储了敏感数据。为了符合PCI,我们必须将这些文件设为只读。
版本将会在存储桶上启用,因此无法使用Retention policy。
我尝试使用“只读”访问权限仅将一个帐户保留在存储桶权限中,这(并非真的)部分地达到了目的。但是具有“编辑者”或“所有者”角色的任何用户都可以编辑文件许可权,并将其更改回“可编辑”并修改文件。
如何限制所有人都不能编辑或修改文件GCP?
从技术上讲,使用Google Cloud Platform可以吗?
如果没有,如何尽可能减少对文件的访问?
编辑
我不确定是否要强制启用版本控制,我将与团队讨论(一旦可用),并在问题中提及相同的内容。
因此,也欢迎考虑“不会启用版本控制”或完全忽略versioning的答案。
答案 0 :(得分:2)
Google IAM权限是加性的,而不是减性的。这意味着具有“所有者”角色的任何人都具有读取/写入/修改/删除所需的权限。授予权限后,您将无法限制权限。
由于您已经提到了PCI DSS合规性,因此我建议创建一个新项目。在此项目中,分配项目所有者。然后创建一个组,并将其他所有人添加到该组中。仅授予组存储读取权限。在此项目中创建一个新存储桶,并在其中存储要保护的对象。由于只有一个(或几个)定义明确的所有者,因此可以对其他所有人强制执行只读权限。
我不知道一种保护IAM成员的现有存储桶的方法,这些IAM成员具有具有写权限的角色,而无需使用保留策略。版本控制可以防止由于需要版本访问数据的问题而破坏对象数据。
注意:您不能编辑或修改Google Cloud Storage中的对象。任何更改都需要创建一个新对象。
答案 1 :(得分:2)
以下答案假定您将选择禁用版本控制,因为它与保留策略不兼容。
您可能需要GCS的存储桶锁定功能。将保留策略放置在存储桶中可确保存储桶中的所有当前和将来对象都无法删除或覆盖,直到它们达到您在保留策略中定义的期限(听起来像您想要的)为止。启用它并验证它可以在工作流程中正常工作后,您可以将其锁定到位,以不可撤销地撤消在指定保留日期之前删除对象的功能。
对于现有存储桶,这是一个严肃的决定,因此我在打开它之前先对其进行了仔细阅读: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
如顶部所述,此功能与另一个对象保留选项不兼容:版本控制。但是,这通常不是问题,因为版本控制的最常见用例是防止意外删除,并且如果您的目标是防止任何可能的删除,则不必进行版本控制。