使用 python 的 GCP 用户列表
GCP user list using python
如何使用 python 获取帐户 GCP 中的用户列表。我找不到如何在帐户中使用 python 进行授权并获取列表。有人可以帮助我吗?
我假设您刚刚开始使用 Google 云和 Python SDK。如果您已经有经验,请跳至我的答案底部以获取实际示例代码。
Google 云 Python SDK 的文档可能很难理解。关键细节是 Google 使用自动化工具记录 APIs。 Google 发布了 SDK 可以读取的文档以自动构建 APIs。乍一看这可能很奇怪,但仔细想想就非常聪明。自动更新自身以支持最新 API 实施的 SDK。
从根文档开始:Google API Client Library for Python Docs
底部附近是 link 文档:
Library reference documentation by API
对于您的情况,在项目中列出具有 IAM 绑定的用户,向下滚动到 cloudresourcemanager。有时会有多个 API 版本。通常,选择最新版本。在这种情况下,v3.
知道使用哪个 API 是根据经验建立的。随着您在 Google 云中开发越来越多的软件,架构逻辑变得自动化。
API提供了多个实例方法。在您的情况下,实例方法是 projects.
Cloud Resource Manager API - projects
在 项目中 是实例方法。在你的情况下,getIamPolicy().
getIamPolicy(resource, body=None, x__xgafv=None)
有时您需要查看 REST API 以了解参数和 returned 值。
Resource Manager REST API: Method: projects.getIamPolicy
例如,要了解来自 Python SDK API 的响应,请查看 REST API 记录的响应,其中包括几个示例:
Resource Manager REST API: Policy
现在我已经介绍了发现如何使用文档的基础知识,让我们创建一个示例来列出角色和 IAM 成员。
导入所需的 Python 库:
from google.oauth2 import service_account
import googleapiclient.discovery
使用您的项目 ID 创建一个变量。注意:不要使用项目名称。
PROJECT_ID='development-123456'
注意:在下面的解释中,我使用的是服务账号。在这个答案的后面,我展示了一个使用由 Google Cloud CLI (gcloud) 设置的 ADC(应用程序默认凭证)的示例。
使用您的 Google 云服务帐户 JSON 密钥文件的完整路径名创建一个变量:
SA_FILE='/config/service-account.json'
为所需的 Google Cloud IAM 范围创建一个变量。通常我使用以下范围,因为我更喜欢通过分配给服务帐户的 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 加载 APIs:
service = googleapiclient.discovery.build(
'cloudresourcemanager',
'v3',
credentials=credentials)
现在调用 API,它将 return 一个 JSON 响应详细说明绑定到项目的角色和成员:
resource = 'projects/' + PROJECT_ID
response = service.projects().getIamPolicy(resource=resource, body={}).execute()
以下是打印 returned 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)
如何使用 python 获取帐户 GCP 中的用户列表。我找不到如何在帐户中使用 python 进行授权并获取列表。有人可以帮助我吗?
我假设您刚刚开始使用 Google 云和 Python SDK。如果您已经有经验,请跳至我的答案底部以获取实际示例代码。
Google 云 Python SDK 的文档可能很难理解。关键细节是 Google 使用自动化工具记录 APIs。 Google 发布了 SDK 可以读取的文档以自动构建 APIs。乍一看这可能很奇怪,但仔细想想就非常聪明。自动更新自身以支持最新 API 实施的 SDK。
从根文档开始:Google API Client Library for Python Docs
底部附近是 link 文档:
Library reference documentation by API
对于您的情况,在项目中列出具有 IAM 绑定的用户,向下滚动到 cloudresourcemanager。有时会有多个 API 版本。通常,选择最新版本。在这种情况下,v3.
知道使用哪个 API 是根据经验建立的。随着您在 Google 云中开发越来越多的软件,架构逻辑变得自动化。
API提供了多个实例方法。在您的情况下,实例方法是 projects.
Cloud Resource Manager API - projects
在 项目中 是实例方法。在你的情况下,getIamPolicy().
getIamPolicy(resource, body=None, x__xgafv=None)
有时您需要查看 REST API 以了解参数和 returned 值。
Resource Manager REST API: Method: projects.getIamPolicy
例如,要了解来自 Python SDK API 的响应,请查看 REST API 记录的响应,其中包括几个示例:
Resource Manager REST API: Policy
现在我已经介绍了发现如何使用文档的基础知识,让我们创建一个示例来列出角色和 IAM 成员。
导入所需的 Python 库:
from google.oauth2 import service_account
import googleapiclient.discovery
使用您的项目 ID 创建一个变量。注意:不要使用项目名称。
PROJECT_ID='development-123456'
注意:在下面的解释中,我使用的是服务账号。在这个答案的后面,我展示了一个使用由 Google Cloud CLI (gcloud) 设置的 ADC(应用程序默认凭证)的示例。
使用您的 Google 云服务帐户 JSON 密钥文件的完整路径名创建一个变量:
SA_FILE='/config/service-account.json'
为所需的 Google Cloud IAM 范围创建一个变量。通常我使用以下范围,因为我更喜欢通过分配给服务帐户的 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 加载 APIs:
service = googleapiclient.discovery.build(
'cloudresourcemanager',
'v3',
credentials=credentials)
现在调用 API,它将 return 一个 JSON 响应详细说明绑定到项目的角色和成员:
resource = 'projects/' + PROJECT_ID
response = service.projects().getIamPolicy(resource=resource, body={}).execute()
以下是打印 returned 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)