授予服务帐户访问Google云存储中一个存储桶的权限

时间:2019-12-04 13:14:03

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

我已经创建了一个角色为“ Storage Admin”的服务帐户“ my-service-account@blabla.com”。 现在,我想将此帐户限制为仅访问特定的存储桶-“ gs:// my-project / my-bucket”

现在的问题是sa用户可以访问我的所有存储桶。我无法从存储桶权限(我不想让用户访问的存储桶)中删除“ my-service-account@blabla.com”,因为这些权限是继承的。我该怎么办? 干杯, 克里斯

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。

  1. 删除所有不应访问项目所有存储分区的服务帐户。

  2. 在“IAM -> 服务账户”中创建一个新的服务账户“my_user”。在创建过程中不要赋予它任何权利(这将允许访问您在问题中描述的项目的所有存储桶)

  3. 在存储桶中授予新的服务帐号权限:

gsutil iam ch serviceAccount:my_user@my_project.iam.gserviceaccount.com:roles/storage.objectViewer gs://my_bucket

(我无法使用 GCP UI 执行此操作)

替换 my_user、my_project 和 my_bucket。 “storage.objectViewer”赋予用户读取对象的权限。

警告:您需要一些时间才能在“bucket -> Permissions”中看到这个“正确”,您还会在“gsutil iam get gs://my-bucket”的输出中看到它!? 何时以及如果您看到它对我来说无法完全重现。

由于我的测试,服务帐户现在只能访问此存储分区,而不能访问项目中的其他存储分区。

答案 1 :(得分:0)

您可以使用Cloud IAM将服务帐户的访问权限限制为特定的存储桶。

这是您可以使用的gsutil命令:

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

要从存储桶中的所有角色中删除服务帐户,请执行以下操作:

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

或者您可以使用ACLs控制对存储桶和对象的访问。

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

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

要从存储桶中删除对服务帐户的访问权限,请执行以下操作:

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

我建议从存储桶中删除对服务帐户的访问。然后授予对特定存储桶的访问权限。