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

Cri*_*ian 6 google-cloud-storage google-cloud-platform

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

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

Sti*_*fel 8

我有同样的问题。

  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”的输出中看到它!?当你看到它时,如果你看到它对我来说是无法完全重现的。

根据我的测试,服务帐户现在只能访问此存储桶,而不能访问项目中的其他存储桶。


mar*_*doi 7

您可以使用Cloud IAM将服务帐号的访问权限限制为特定存储分区

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

    gsutil iam ch serviceAccount:my-service-account@project.iam.gserviceaccount.com:objectAdmin gs://my-project/my-bucket
Run Code Online (Sandbox Code Playgroud)

要从存储桶上的所有角色中删除服务帐号:

    gsutil iam ch -d serviceAccount:my-service-account@project.iam.gserviceaccount.com gs://my-project/my-bucket
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用ACL控制对存储区和对象的访问

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

   gsutil acl ch -u my-service-account@project.iam.gserviceaccount.com:W gs://my-project/my-bucket
Run Code Online (Sandbox Code Playgroud)

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

   gsutil acl ch -d my-service-account@project.iam.gserviceaccount.com gs://my-project/my-bucket
Run Code Online (Sandbox Code Playgroud)

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

  • 这可以在没有 gsutil 的情况下完成吗?非常奇怪的是,其中一些任务依赖于 gsutils :( (2认同)