临时访问 GCP 资源

shi*_*991 6 cloud google-cloud-platform terraform

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

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

累积 对于我的研发,可以使用服务帐户,但存在一些项目限制。

gui*_*ere 4

您可以使用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)
Run Code Online (Sandbox Code Playgroud)

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

当心

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