令牌概览

本文档和令牌类型文档介绍了 Google Cloud 用于身份验证和授权的多种令牌。这些示例旨在帮助想要了解基于令牌的身份验证如何运作或想要在不使用 Cloud 客户端库的情况下实现身份验证的人员。

在使用 Cloud 客户端库、 Google Cloud 控制台或 Google Cloud CLI 与 Google CloudAPI 交互时,您无需了解此信息,因为系统会自动为您处理选择正确类型的令牌以及获取和刷新这些令牌的过程。

用户身份验证

当人类用户与 Google Cloud互动时,他们不会直接与Google Cloud API 互动。而是使用客户端代表其执行操作。他们使用的客户端可能是 Web 应用、桌面应用,也可能是 Google Cloud CLI 或 curl 等实用程序。

由于客户端发出请求,而不是用户发出请求,因此 Google Cloud 无法直接向用户请求身份信息,以检查用户是否有权使用 API。相反,此身份会通过客户端以令牌的形式传递给 API,并包含在每个 API 请求中。

用户身份验证令牌会编码以下信息:

  • 用户的身份。

  • 客户端的身份。

  • 保证客户端有权代表用户执行操作。

对用户进行身份验证并向客户端授权涉及以下各方:

  • 用户。

  • 代表用户执行操作的客户端。

  • 授权服务器,Google API 依赖该服务器对客户端进行身份验证。

  • 客户端与之互动的 Google Cloud API。

客户端无法自行发放令牌。相反,它们必须与授权服务器配合使用,才能执行以下操作:

  1. 对用户进行身份验证。

  2. 对客户端进行身份验证。

  3. 授权客户端代表用户执行操作。

  4. 向客户端发放令牌。

用户通过客户端进行身份验证的关系图

通过登录 Google 账号进行身份验证的用户是用户正文。相应主账号具有类似于以下内容的主账号标识符

user:alex@example.com

使用员工身份联合和外部身份提供方进行身份验证的用户是员工身份池主账号。相应主账号的主账号标识符类似于以下内容:

principal://iam.googleapis.com/locations/global/workforcePools/POOL_ID/subject/raha@altostrat.com

工作负载身份验证

某些客户端需要代表自己与 Google API 进行互动。例如,某个预定作业可能需要从 BigQuery 或 Cloud Storage 读取数据,而无需任何人为用户参与。

以无人值守方式自行运行的客户端称为工作负载。与用户身份验证不同,工作负载身份验证将用户身份验证和客户端授权合并为一个步骤。因此,工作负载身份验证令牌仅对客户端的身份进行编码。

工作负载身份验证和授权涉及以下各方:

  • 一个工作负载,同时充当客户端和用户,并代表自己。

  • 授权服务器,Google API 依赖该服务器对客户端进行身份验证。

  • 客户端与之互动的 Google Cloud API。

如需访问 Google Cloud API,客户端必须与授权服务器配合使用,以执行以下操作:

  1. 对客户端进行身份验证。

  2. 授权客户端。

  3. 向客户端发放令牌。

通过客户端进行身份验证的工作负载的关系图

经过身份验证的工作负载也称为主账号,但工作负载使用的主账号标识符与用户不同。

使用服务账号进行身份验证的工作负载是服务账号主账号。相应主账号的主账号标识符类似于以下内容:

serviceAccount:my-service-account@my-project.iam.gserviceaccount.com

使用工作负载身份联合进行身份验证的工作负载是工作负载身份池主账号。主账号的标识符类似于以下内容:

principal://iam.googleapis.com/projects/PROJECT_NAME/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ATTRIBUTE_VALUE

授权服务器

Google Cloud 与其他 Google 服务共享特定的身份验证和授权功能。共享功能包括Google Identity 提供的使用 Google 账号登录功能,以及 OpenID ConnectOAuth 2.0 服务。

其他与身份验证相关的服务(例如 Workload Identity Federation 和 Workforce Identity Federation)仅适用于 Google Cloud ,无法用于其他 Google 服务。

由于这种拆分, Google Cloud 使用了两个授权服务器。一种是与其他 Google 服务共享的,另一种是 Google Cloud特有的。 下表介绍了不同的服务器及其属性。

授权服务器 身份验证类型 身份验证 API 主账号
Google 授权服务器
  • 用户身份验证
  • 工作负载身份验证
Google Cloud Identity and Access Management (IAM) 授权服务器
  • 用户身份验证
  • 工作负载身份验证

授权服务器是全球服务,可以从任何Google Cloud 区域进行访问。不过,并非所有区域都包含授权服务器的部署:

  • Google 授权服务器仅在部分区域可用。

  • Google Cloud IAM 授权服务器在所有区域均可使用。

为了优化可靠性,请尽可能使用 Google Cloud IAM 授权服务器。

后续步骤

了解令牌类型