当前位置: 首页 > 知识库问答 >
问题:

授权Google云平台服务帐户仅访问一个Google云存储桶

燕青青
2023-03-14

我已经创建了一个Google云平台服务帐户,$GCP\u service\u帐户,具有存储管理员(角色/Storage.Admin)角色。

现在,我希望限制此帐户,使其只能访问特定的谷歌云存储(GCS)存储桶($GCS\u Bucket\u NAME)。

现在的问题是,$GCP\u服务\u帐户可以访问所有GCS存储桶。我无法从其他GCS存储桶中删除$GCP\u服务\u帐户,因为角色/存储。管理被继承。

那我该怎么办?

共有2个答案

卫宏硕
2023-03-14

我也有同样的问题。

>

  • 删除所有不应该访问项目所有存储桶的服务帐户。

    创建一个新的服务号"my_user"在"IAM-

    在bucket中授予新服务帐户权限:

    gsutil iam ch服务帐户:我的_user@my_project.iam.gserviceaccount.com:角色/存储。objectViewer gs://my_bucket

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

    替换我的用户、我的项目和我的存储桶。“storage.objectViewer”赋予用户读取对象的权限。

    警告:需要一段时间才能在“bucket”中看到“right”-

    由于我的测试,服务帐户现在只能访问这个bucket,而不能访问项目中的其他bucket。

  • 阮雅达
    2023-03-14

    您可以使用云IAM将服务帐户的访问权限限制为特定的bucket。

    这是您可以使用的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
    

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

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

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

    要从bucket中删除对服务帐户的访问,请执行以下操作:

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

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

     类似资料:
    • 我正试图从Python脚本中获得一个服务帐户来在Google Cloud Storage中创建Blob,但我遇到了凭据问题。 如果我将环境变量设置为 然后重新运行脚本。但是,我希望它在创建帐户的脚本的一个实例中运行,并继续在桶中创建必要的文件。如果我知道我的json凭据文件在哪里,我如何访问my_bucket。

    • 我正在尝试使用django-storages为带有服务帐户json文件的google云存储桶授予权限。但是,只有当我向所有具有对象视图权限的用户授予访问权限时,才能访问桶中的项目。我如何限制桶的公共访问。

    • 我们正在尝试创建一个与谷歌管理SDK的集成,以便能够检索,更新和创建帐户在我们的领域。但是,我们不断收到一个403错误,表明我们没有被授权访问Resource/API。 我们正在使用从一个服务帐户获得的凭据,该帐户启用了域范围的授权,并且具有以下两个作用域:https://www.googleapis.com/auth/admin.directory.user.readonly,https://w

    • null null 不幸的是,GCP文档并没有真正的帮助。我想我已经找遍了所有可能的地方。

    • 我想向成千上万,也许是数百万的用户授予对谷歌云存储桶的访问权限。我最初的计划是通过IAM角色使用他们的REST api授予访问权限。然而,在这个配额上 每个存储桶最多有100名成员拥有旧版IAM角色,每个存储桶最多有1500名成员拥有所有IAM角色。成员的示例包括个人用户、组和域。请参阅IAM标识。 这是否意味着,我只能为1500人提供阅读权限?如果是这样的话,有什么办法可以让成千上万的人进入?

    • 我想查询GSuite Admin SDK Directory API,以返回Go中组中的所有用户,并作为GCP服务帐户进行身份验证(该脚本将在Google Compute Engine VM中执行或作为Google Cloud函数执行)。 我使用的服务帐户(我们称之为 )在GSuite中被授予了必要的作用域: 我还有一个GSuite管理帐户(我们称之为 我能够用以下代码返回一个组中的所有用户(基于