使用python的GCP用户列表



如何使用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)

相关内容

  • 没有找到相关文章

最新更新