GCS 限制对现有服务帐户的存储桶访问

GCS limit bucket access to an existing service account

通常有一个由 GCP 自动创建的 Compute Engine default service account,此帐户被 VM 代理用于跨 GCP 访问不同资源,默认情况下具有 role/editor 权限。
假设我想创建只能由这个默认服务帐户访问的 GCS 存储桶,其他任何人都不能访问。我查看了 ACL 并尝试使用此默认服务帐户电子邮件将 ACL 添加到存储桶,但它并没有真正起作用。
我意识到我仍然可以从其他具有 storage bucket readstorage object read 权限的帐户访问该存储桶中的存储桶和对象,我不确定我做错了什么(也许存在一些默认 ACL? ).

我的问题是:

谢谢!

您可以使用 Cloud IAM and ACLs.

控制对存储桶和对象的访问

例如,使用 ACL 授予服务帐户 WRITE(R:READ,W:WRITE,O:OWNER)对存储桶的访问权限:

gsutil acl ch -u service-account@project.iam.gserviceaccount.com:W gs://my-bucket

要从存储桶中删除服务帐户的访问权限:

   gsutil acl ch -d service-account@project.iam.gserviceaccount.com gs://my-bucket

如果IAM身份(项目级别)中有role/StorageAdmin等角色,他们将有权访问该项目的所有GCS资源。您可能需要更改权限以避免他们访问。

我建议您不要使用 ACL(Google 也是如此)。最好在统一的 IAM 策略中切换存储桶。

ACL 有 2 个不好的方面:

  • 新创建的文件不是 ACL,您需要在每次创建 ne 文件时设置它
  • 很难知道谁有访问权限,谁没有访问权限。 IAM 服务更适合审计。

当您切换到统一 IAM 访问权限时,所有者、查看者和编辑者角色不再有权访问存储桶(role/storage.admin 不包括在此原始角色中)。它可以一键解决所有不需要的访问。否则,如 John 所说,删除除您的服务帐户之外的存储桶和有权访问该存储桶的项目的所有 IAM 权限。