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

时间:2021-05-07 11:05:35

标签: google-cloud-platform google-api google-cloud-storage

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

我的问题是:

  • 是否可以只访问该默认帐户?在这种情况下,谁将无法访问它?
  • 最好的方法是什么? (非常感谢使用 Storage API 的示例)
  • 仍然有 role/StorageAdmin 等角色,实际上无论将什么 ACL 放在存储桶上,如果我拥有此角色(或更高的角色,例如所有者),我仍然可以访问它,对吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我建议您不要使用 ACL(还有 Google)。最好在统一 IAM 策略中切换存储桶。

ACL 有两个不好的方面:

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

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

答案 1 :(得分:0)

您可以使用 Cloud IAMACLs 控制对存储桶和对象的访问。

例如,使用 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 资源。您可能需要更改权限以避免他们获得访问权限。