google-cloud-platform - 临时访问 GCP 资源
问题描述
我是 GCP 的新手,但我在 AWS 上工作,使用 AWS Cognito Assume Role API 和Organzation 账户池提供对 AWS 资源的临时访问,并创建自定义 URL 以访问 AWS 控制台。
我也在尝试为 GCP 创建类似类型的解决方案。我想向用户提供访问权限(将有 500 个并发用户)。谁能建议什么是最好的方法
会计。对我的研发而言,可以使用服务帐户,但存在一些项目限制。
解决方案
您可以使用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(也在我的示例中)并在设置之前更新结果。
推荐阅读
- bash - 为什么从 CRLF 文件中读取 *(星号)时 echo 命令不列出目录内容?
- vba - 检查用户窗体是否打开
- python - 如何使用 python 将多个 XML 文件转换为 csv?
- javascript - React 导出数据
- python - 为每一行创建一个字典
- alfresco - 如何在 Alfresco ADF 组件中访问其他嵌入的模板字段?
- android - Android Studio 项目找不到 gradle-core jar
- firebase - Firestore 集合更改时的颤振通知(背景)
- python - 找不到依赖项/未找到依赖项错误
- css - 编辑 CSS 模板不生效