本主题介绍如何配置调用 Cloud Asset Inventory API 所需的权限和凭据。
身份验证
在调用 Cloud Asset Inventory API 之前,您必须作为最终用户或服务帐号进行身份验证。如需详细了解身份验证,请参阅身份验证概览。
为 gcloud
CLI 授予必需的权限
为了使用 gcloud
CLI 访问 Cloud Asset Inventory API,您必须授予目标资源的父级资源(组织、项目或文件夹)的必要权限。您必须在 API 请求的 parent
字段中指定此父级资源。
如果您的帐号具有资源的父级资源的 Cloud Asset Owner 角色 (roles/cloudasset.owner
) 或 Owner 基本角色 (roles/owner
),则该帐号已具有调用 Cloud Asset Inventory API 的足够权限,并且您可以跳至下载凭据。如需详细了解 Cloud Asset Inventory 角色,请参阅角色。
授予角色
如需向帐号授予角色,请使用 Google Cloud CLI 完成以下步骤。了解如何安装和初始化 gcloud
CLI。
用户帐号
要向用户帐号授予必要的角色,请完成以下步骤。
要使用用户帐号登录,请运行以下命令。
gcloud auth login USER_ACCOUNT_EMAIL
向用户帐号授予根(父级)资源的 Cloud Asset Viewer 角色 (
roles/cloudasset.viewer
) 或 Cloud Asset Owner 角色 (roles/cloudasset.owner
)。此项目可以是启用了 Cloud Asset Inventory API 的项目。要向用户帐号授予 Cloud Asset Viewer 角色,请运行以下命令。
gcloud projects add-iam-policy-binding TARGET_PROJECT_ID \ --member user:USER_ACCOUNT_EMAIL \ --role roles/cloudasset.viewer
您可以将
--billing-project
标志添加到gcloud asset
命令,以指定启用了 Cloud Asset Inventory API 的结算项目。--billing-project PROJECT_ID
如果您指定了此标志,则您的帐号需要具有项目
PROJECT_ID
的serviceusage.services.use
权限。如需查看包含此权限的预定义角色的列表,请参阅了解角色。
服务帐号
要向服务帐号授予必要的角色,请完成以下步骤。如需详细了解服务帐号,请参阅创建和管理服务帐号。
要创建新的服务帐号,请运行以下命令。如果您在已在启用 Cloud Asset Inventory API 的项目中拥有服务帐号,则可以跳过此步骤。
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "SERVICE_ACCOUNT_DISPLAY_NAME"
向您的服务帐号授予根(父级)资源的 Cloud Asset Viewer 角色 (
roles/cloudasset.viewer
) 或 Cloud Asset Owner 角色 (roles/cloudasset.owner
)。此项目可与启用了 Cloud Asset Inventory API 的项目相同。要向服务帐号授予 Cloud Asset Viewer 角色,请运行以下命令。
gcloud projects add-iam-policy-binding TARGET_PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudasset.viewer
要为服务帐号创建私钥,请运行以下命令。
gcloud iam service-accounts keys create YOUR_FILE_PATH/key.json \ --iam-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
如需激活服务帐号以便与
gcloud
CLI 配合使用,请运行以下命令。gcloud auth activate-service-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --key-file=YOUR_FILE_PATH/key.json
下载 JSON 凭据
如需在不使用 gcloud
CLI 的情况下访问 Cloud Asset Inventory API,您需要 JSON 凭据文件。要下载此文件,请完成以下步骤。
转到 Cloud Console 中的凭据页面。
选择 + 创建凭据,然后选择 OAuth 客户端 ID。
如果您要为新项目创建客户端 ID,则必须先设置 OAuth 同意屏幕。每当应用使用您的客户端 ID 请求访问私有数据时,Cloud Console 都会显示同意屏幕。
要配置同意屏幕,请完成以下步骤:
选择配置同意屏幕,然后输入所需信息。
保存更改。
在创建客户端 ID 页面的应用类型下,选择适当的类型。如需详细了解客户端类型,请参阅设置 OAuth 2.0。
输入凭据名称,然后点击创建。
点击确定以关闭打开的对话框。请注意,使用 Cloud Asset Inventory API 进行身份验证时,不使用客户端 ID 和密钥值。此外,这两个凭据值都可以从凭据 JSON 文件中检索。
要保存新的客户端 ID JSON 文件,请点击
。您可以重命名下载的 JSON 文件,并将其移动到方便的位置。在以下示例中,我们将使用路径
~/credentials.json
。
验证凭据设置
如需验证是否已正确设置凭据,请运行以下命令:
oauth2l header --json ~/credentials.json cloud-platform
您应该会看到类似于如下内容的输出:
Authorization: Bearer y29.xxxxxxx
定义 shell 别名
您可能会发现,定义一个 shell 别名会使调用 Google Cloud REST API 变得十分方便。
如需定义 gcurl
别名以用于调用 Google Cloud REST API,请运行以下命令:
alias gcurl='curl -H "$(oauth2l header --json ~/credentials.json \ cloud-platform)" -H "Content-Type: application/json" '