将GCP Cloud IAM自定义角色的访问权限仅限于存储桶

时间:2020-01-14 12:46:19

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

AWS提供了一种通过其IAM policies来限制从特定用户/角色特定命名资源的访问的方法。

例如以下权限:


    {
      "Sid": "ThirdStatement",
      "Effect": "Allow",
      "Action": [
        "s3:List*",
        "s3:Get*"
      ],
      "Resource": [
        "arn:aws:s3:::confidential-data",
        "arn:aws:s3:::confidential-data/*"
      ]
    }

将允许对List*存储桶及其内容进行所有Get*confidential-data操作。

但是,通过GCP的custom roles时,我找不到这样的选项。

现在,我知道对于GCS存储桶(这是我的用例),您可以创建ACLs来实现(或多或少?)相同的结果。

我的问题是,假设我创建了一个由someone@myaccount-googlecloud.com标识的服务帐户,并且希望该帐户具有对gs://mybucket-on-google-cloud-storage读/写权限,应该如何我要格式化ACL来做到这一点吗?

(暂时,从组织/文件夹/项目继承的其他任何权限对我来说都没有关系)

2 个答案:

答案 0 :(得分:1)

ACL的格式如下

{
  "bindings":[
    {
      "role": "[IAM_ROLE]",
      "members":[
        "[MEMBER_NAME]"
      ]
    }
  ]
}

请参阅Google Docs

例如

{
 "kind": "storage#policy",
 "resourceId": "projects/_/buckets/bucket_name",
 "version": 1,
 "bindings": [
  {
   "role": "roles/storage.legacyBucketWriter",
   "members": [
    "projectEditor:projectname",
    "projectOwner:projectname"
   ]
  },
  {
   "role": "roles/storage.legacyBucketReader",
   "members": [
    "projectViewer:projectname"
   ]
  }
 ],
 "etag": "CAE="
}

答案 1 :(得分:1)

来自documentation

授予服务帐户 foo@developer.gserviceaccount.com 访问存储桶示例存储桶:

gsutil acl ch -u foo@developer.gserviceaccount.com:W gs://example-bucket

授予服务帐户 foo@developer.gserviceaccount.com 读取访问存储桶示例存储桶:

gsutil acl ch -u foo@developer.gserviceaccount.com:R gs://example-bucket