列出服务依赖项

借助分层服务启用,您可以管理通过 Google Cloud 资源层次结构继承的服务启用状态。如需了解详情,请参阅概览

许多 Google Cloud 服务需要其他服务才能正常运行。使用分层服务激活功能启用服务时,系统会自动将该服务所需的依赖项添加到 ConsumerPolicy 中。服务依赖项组包含这些依赖的服务,您可以列出这些服务,以便更好地了解和管理它们。

本文档介绍了如何使用 Google Cloud CLI 列出项目、文件夹和组织的服务依赖项。

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  6. 如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。

  7. 验证是否已为您的 Google Cloud 项目启用结算功能

  8. 启用 Service Usage API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    gcloud services enable serviceusage.googleapis.com
  9. 安装 Google Cloud CLI。

  10. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  13. 如果您要使用现有项目来完成本指南,请验证您是否拥有完成本指南所需的权限。如果您创建了新项目,则您已拥有所需的权限。

  14. 验证是否已为您的 Google Cloud 项目启用结算功能

  15. 启用 Service Usage API:

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    gcloud services enable serviceusage.googleapis.com
  16. 如果您未指明要管理的 Google Cloud 资源,本文档中的命令将默认针对当前项目执行。例如,gcloud beta services groups list-members bigquery.googleapis.com dependencies 会列出当前项目的成员。

    您可以检索当前项目 ID:

    gcloud config list --format='text(core.project)'

所需的角色

如需获得列出服务依赖项所需的权限,请让您的管理员为您授予目标资源的 Service Usage Viewer (roles/serviceusage.serviceUsageViewer) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含列出服务依赖项所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需列出服务依赖项,您需要具有以下权限:

  • 列出依赖项组成员: serviceusage.groups.listMembers
  • 列出展开的依赖项组成员: serviceusage.groups.listExpandedMembers

您也可以使用自定义角色或其他预定义角色来获取这些权限。

列出依赖项组成员

您可以使用 gcloud beta services groups list-members 命令列出项目、文件夹或组织的服务依赖关系组的直接成员。

项目

gcloud beta services groups list-members  SERVICE GROUP \
    --project=PROJECT_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • PROJECT_ID:您的Google Cloud 项目 ID。 或者,省略该标志以默认使用当前项目。

文件夹

gcloud beta services groups list-members  SERVICE  GROUP \
    --folder=FOLDER_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • FOLDER_ID:您的Google Cloud 文件夹 ID

组织

gcloud beta services groups list-members  SERVICE  GROUP \
    --organization=ORGANIZATION_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • ORGANIZATION_ID:您的Google Cloud 组织资源 ID

您可以使用其他标志来过滤和限制列出的成员。

列出展开的依赖关系组成员

您可以使用 gcloud beta services groups list-expanded-members 命令列出项目、文件夹或组织的某个服务依赖关系组的展开成员。

此命令会返回所有依赖项(包括嵌套组中的依赖项)的扁平化列表,以提供所有服务依赖项的完整组合列表。

项目

gcloud beta services groups list-expanded-members SERVICE GROUP \
    --project=PROJECT_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • PROJECT_ID:您的Google Cloud 项目 ID。 或者,省略该标志以默认使用当前项目。

文件夹

gcloud beta services groups list-expanded-members SERVICE  GROUP \
    --folder=FOLDER_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • FOLDER_ID:您的Google Cloud 文件夹 ID

组织

gcloud beta services groups list-expanded-members SERVICE  GROUP \
    --organization=ORGANIZATION_ID

替换以下内容:

  • SERVICE:您要列出成员的服务的名称。
  • GROUP:您要列出其成员的服务依赖项组的名称。主要支持的群组为 dependencies
  • ORGANIZATION_ID:您的Google Cloud 组织资源 ID

您可以使用其他标志来过滤和限制列出的成员。

示例

列出直接依赖项组成员

  • 列出当前项目的 BigQuery 服务的直接依赖项:
    gcloud beta services groups list-members bigquery.googleapis.com dependencies

    输出:

    NAME: services/analyticshub.googleapis.com
    REASON: BigQuery depends on this group to allow users to exchange data and analytics assets.
    
    NAME: services/bigquery.googleapis.com
    REASON: The service representing BigQuery which owns this dependency group and depends on the other members of this group.
    
    NAME: services/bigqueryconnection.googleapis.com
    REASON: BigQuery depends on this group to allow users to manage connections to external data sources.
    
    NAME: services/bigquerydatapolicy.googleapis.com
    REASON: BigQuery depends on this group to allow users to manage their data policies.
    
    ...
  • 尝试列出 API 密钥服务的依赖项,但没有相应的服务依赖项组:
    gcloud beta services groups list-members apikeys.googleapis.com dependencies --project=test-project

    输出:

    Listed 0 items.

列出展开的依赖关系组成员

  • 列出当前项目的 BigQuery 服务的扩展依赖项:
    gcloud beta services groups list-expanded-members bigquery.googleapis.com dependencies

    输出:

    services/analyticshub.googleapis.com
    services/bigquery.googleapis.com
    services/bigqueryconnection.googleapis.com
    services/bigquerydatapolicy.googleapis.com
    services/bigquerydatatransfer.googleapis.com
    services/bigquerymigration.googleapis.com
    services/bigqueryreservation.googleapis.com
    services/bigquerystorage.googleapis.com
    services/cloudresourcemanager.googleapis.com
    services/dataform.googleapis.com
    services/dataplex.googleapis.com

后续步骤