如何使用python获得帐户GCP中的用户列表。我找不到如何在帐户中使用python授权并获得列表。有人能帮帮我吗?
我假设您刚刚开始使用Google Cloud和Python sdk。如果您已经有经验,请跳到我的答案的底部以获取实际示例代码。
Google Cloud Python sdk的文档可能很难理解。关键的细节是Google使用自动化工具记录api。Google发布了一份文档,sdk可以读取该文档来自动构建api。一开始这可能看起来很奇怪,但当你仔细想想时,这是非常聪明的。自动更新自身以支持最新API实现的sdk。
从根开始文档:谷歌API客户端库Python文档
靠近底部的是文档链接:
API的库参考文档
对于您的情况,列出项目中具有IAM绑定的用户,向下滚动到cloudresourcemanager。有时会有多个API版本。通常,选择最新的版本。在本例中,v3.
知道要使用哪个API是根据经验构建的。随着您在Google Cloud中开发越来越多的软件,架构的逻辑变得自动化。
Cloud Resource Manager API
API提供多个实例方法。在您的例子中,实例方法是projects.
Cloud Resource Manager API - projects
在<<p> strong>项目都是实例方法。在你的情况下,getIamPolicy ().getIamPolicy(resource, body=None, x__xgafv=None)
有时候你需要查看REST API来理解参数和返回值。
资源管理器REST API: Method: projects.getIamPolicy
例如,要理解Python SDK API的响应,请查看REST API文档中的响应,其中包括几个示例:资源管理器REST API: Policy
现在我已经介绍了发现如何使用文档的基础知识,让我们创建一个示例,将列出角色和IAM成员。
导入所需的Python库:
from google.oauth2 import service_account
import googleapiclient.discovery
用你的Project ID创建一个变量。注意:不要使用Project Name.
PROJECT_ID='development-123456'
注意:在下面的解释中,我使用了一个服务帐户。在本回答的后面,我将展示一个使用由Google Cloud CLI (gcloud)设置的ADC(应用程序默认凭据)的示例。
创建一个变量的完整路径名谷歌云服务账户JSON密钥文件:
SA_FILE='/config/service-account.json'
为所需的Google Cloud IAM scope创建一个变量。通常我使用以下范围,因为我更喜欢通过分配给服务帐户的IAM角色来控制权限:
SCOPES=['https://www.googleapis.com/auth/cloud-platform']
从服务帐户创建OAuth凭据:
credentials = service_account.Credentials.from_service_account_file(
filename=SA_FILE,
scopes=SCOPES)
现在我们开始使用API文档。下面的代码构建API发现文档并加载cloudresourcemanager的API:
service = googleapiclient.discovery.build(
'cloudresourcemanager',
'v3',
credentials=credentials)
现在调用API,它将返回一个JSON响应,详细说明与项目绑定的角色和成员:
resource = 'projects/' + PROJECT_ID
response = service.projects().getIamPolicy(resource=resource, body={}).execute()
下面是打印部分返回JSON的简单代码:
for binding in response['bindings']:
print('Role:', binding['role'])
for member in binding['members']:
print(member)
使用ADC(应用程序默认凭证)的完整示例:
import googleapiclient.discovery
PROJECT_ID='development-123456'
service = googleapiclient.discovery.build('cloudresourcemanager', 'v3')
resource = 'projects/' + PROJECT_ID
response = service.projects().getIamPolicy(resource=resource, body={}).execute()
for binding in response['bindings']:
print('Role:', binding['role'])
for member in binding['members']:
print(member)
使用服务帐户的完整示例:
from google.oauth2 import service_account
import googleapiclient.discovery
PROJECT_ID='development-123456'
SA_FILE='/config/service-account.json'
SCOPES=['https://www.googleapis.com/auth/cloud-platform']
credentials = service_account.Credentials.from_service_account_file(
filename=SA_FILE,
scopes=SCOPES)
service = googleapiclient.discovery.build(
'cloudresourcemanager', 'v3', credentials=credentials)
resource = 'projects/' + PROJECT_ID
response = service.projects().getIamPolicy(resource=resource, body={}).execute()
for binding in response['bindings']:
print('Role:', binding['role'])
for member in binding['members']:
print(member)