shi*_*991 6 cloud google-cloud-platform terraform
我是 GCP 的新手,但我曾在 AWS 上工作,使用 AWS Cognito Assume Role API 和组织账户池提供对 AWS 资源的临时访问,并创建自定义 URL 以访问 AWS 控制台。
我也在尝试为 GCP 创建类似类型的解决方案。我想为用户提供访问权限(将有 500 个并发用户)。任何人都可以建议什么是最好的方法
累积 对于我的研发,可以使用服务帐户,但存在一些项目限制。
您可以使用IAM 条件。如果您想编写访问脚本,该文档很有趣。对于测试,您可以使用控制台
首先在 IAM 页面中添加或编辑权限。选择角色,然后点击添加权限

命名您的条件并选择条件。
编辑
您还可以使用客户端库。资源管理器没有专用的库,您必须使用发现 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(也在我的示例中)并更新结果。