首页 > 解决方案 > 临时访问 GCP 资源

问题描述

我是 GCP 的新手,但我在 AWS 上工作,使用 AWS Cognito Assume Role API 和Organzation 账户池提供对 AWS 资源的临时访问,并创建自定义 URL 以访问 AWS 控制台。

我也在尝试为 GCP 创建类似类型的解决方案。我想向用户提供访问权限(将有 500 个并发用户)。谁能建议什么是最好的方法

会计。对我的研发而言,可以使用服务帐户,但存在一些项目限制。

标签: google-cloud-platformcloudterraform

解决方案


您可以使用IAM 条件。如果您想编写访问脚本,该文档很有趣。对于测试,您可以使用控制台

首先在 IAM 页面中添加或编辑权限。选择一个角色,然后单击添加权限 在此处输入图像描述

命名您的条件并选择条件。

在此处输入图像描述

编辑

您可以为此直接使用 API

您还可以使用客户端库。资源管理器没有专门的库,你必须使用发现 API。这里是资源管理器v1的说明

因此,在 Python 中,代码如下所示

import googleapiclient.discovery
resourceManager = googleapiclient.discovery.build("cloudresourcemanager","v1")
result = resourceManager.projects().getIamPolicy(resource="<ProjectId>").execute()
print(result)
body={
'policy': {
  'bindings': [
    {
      'role': 'roles/storage.objectViewer',
      'members': [
        'user:myUser@example.com'
      ],
      'condition': {
        'title': 'expirable access',
        'expression': 'request.time < timestamp("2020-10-01T00:00:00.000Z")'
      }
    }
  ],
  'version': 3
  }
}
result = resourceManager.projects().setIamPolicy(resource="<ProjectId>", body=body).execute()
print(result)

注意:您必须为要授予的每个角色重复绑定块

当心

在这两种情况下,您都将设置 IAM 策略,它是项目现有策略的擦除/替换。顺便说一句,一种好的做法是在之前执行 getIamPolicy(也在我的示例中)并在设置之前更新结果。


推荐阅读