我是GCP的新手,但我曾在AWS上工作,以使用AWS Cognito承担角色API和帐户的组织化池并创建自定义URL来访问AWS控制台来提供对AWS资源的临时访问。
我也在尝试为GCP创建类似类型的解决方案。我想向用户提供访问权限(将有500个并发用户)。谁能建议什么是最好的方法
访问对我的研发而言,可以使用服务帐户,但存在一些项目限制。
答案 0 :(得分:3)
您可以使用IAM condition。如果您要编写访问脚本,该文档将很有趣。要进行测试,您可以使用控制台
首先在IAM页面中添加或编辑权限。选择一个角色,然后单击添加权限
命名您的条件并选择条件。
编辑
您也可以使用客户端库。没有用于资源管理器的专用库,您必须使用discovery API。在这里the description of the resource manager 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(在我的示例中也是)并更新结果。
答案 1 :(得分:2)
GCP有short-lived service account credentials:
该过程涉及一个呼叫者,该呼叫者可以是Google帐户,也可以是服务帐户,并要求为第二个服务帐户创建短暂的凭据。
例如,您可以生成具有特定权限的 OAuth 2.0 访问令牌,有效期为1小时。
**请注意,服务帐户与常规用户帐户的区别在于它们属于特定的GCP资源(例如VM),并且不属于G Suite域。他们也无法通过浏览器登录。
答案 2 :(得分:0)
在GCP中,您可以使用Google Identity Platform来存储带有用户名和密码的用户身份。 https://developers.google.com/identity
有多种类型的身份存储可用,您可以从列表中选择其中一种。从Google Cloud->身份提供者->提供商列表中,选择选项电子邮件/密码(附加的屏幕截图)。您可以使用Google Firestore保存用户数据。
Cloud Firestore(NoSQL)是一个灵活的,可扩展的数据库,用于通过Firebase和Google Cloud Platform开发移动,Web和服务器。
我通常将其与Google Firebase结合使用,并创建UI以加速开发。