在 Google 进行身份验证

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

本文档可帮助您了解一些关键身份验证概念,以及从何处获得有关实现身份验证或排查身份验证问题的帮助。身份验证文档主要侧重于 Google Cloud 服务,但本页面上的身份验证使用场景列表和介绍性材料还包括其他 Google 产品的使用场景。

简介

身份验证是通过使用某种凭据确认身份的过程。身份验证的目的是证明您自称的身份。

Google 提供了许多 API 和服务,需要进行身份验证才能访问。Google 还提供了许多服务来托管客户编写的应用;这些应用还需要确定其用户的身份。

我想要… 信息
使用高级编程语言,通过我的应用向 Google Cloud 服务进行身份验证。 设置应用默认凭据,然后使用其中一个 Cloud 客户端库
向 Cloud Run 或 Cloud Functions 上运行的应用进行身份验证。 获取 OpenID Connect (OIDC) ID 令牌,并为其提供您的请求。
为访问 Google 或 Google Cloud 服务和资源的应用实现用户身份验证。 请参阅对应用用户进行身份验证,了解各个选项的比较情况。
在我的本地本地环境中试用一些 gcloud 命令或 Google Cloud REST API 调用。 使用登录凭据设置应用默认凭据。然后,您可以使用 curl 等命令行工具调用 REST API
获得有关其他身份验证使用场景的帮助。 请参阅身份验证使用场景页面。
查看 Google 在身份和访问权限管理空间中提供的产品列表。 请参阅 Google 身份和访问权限管理产品页面。

身份验证类型

访问大多数资源和应用都需要进行身份验证。本文档支持技术从业者创建具有以下目标之一的应用代码:

OAuth 2.0

Google API 会实现并扩展 OAuth 2.0 框架。OAuth 2.0 框架概述了各种身份验证“流程”或身份验证方法。通常,应用会将代表主帐号(用户或服务帐号)的凭据提供给称为“授权服务器”的中间模块。授权服务器以令牌进行响应,应用可以使用该令牌向服务进行身份验证并访问资源。该令牌包含一个或多个范围,反映了应用有权进行的访问。然后,应用会将该令牌提供给资源服务器,以获得对资源的访问权限。

Google Cloud 服务的授权

Google Cloud 服务使用 Identity and Access Management (IAM) 进行身份验证。IAM 按主帐号和资源提供精细的控制。向 Google Cloud 服务进行身份验证时,通常使用包含所有 Google Cloud 服务 (https://www.googleapis.com/auth/cloud-platform) 的范围。

OAuth 2.0 范围可提供第二层保护,如果您的代码在需要考虑令牌安全的环境(例如移动应用)中运行,则该范围会非常有用。在这种情况下,您可以使用更精细的范围来降低令牌被破解时的风险。OAuth 2.0 范围还用于授予对用户数据的访问权限

应用默认凭据 (ADC)

ADC 是 Cloud 客户端库和 Google API 客户端库使用的一种策略,可根据应用环境自动查找凭据并使用这些凭据向 Google Cloud API 进行身份验证。设置 ADC 并使用客户端库时,您的代码可以在开发或生产环境中运行,而无需更改应用向 Google Cloud 服务和 API 进行身份验证的方式。

如果您要编写需要使用 Google Cloud 服务的代码,则应尽可能使用 ADC。使用 ADC 可以简化开发过程,因为它允许您在各种环境中使用相同的身份验证代码。

您可以根据希望代码运行的位置来提供凭据,从而配置 ADC。在将凭据提供给 ADC 后,ADC 会自动查找凭据并在后台获取令牌,从而使身份验证代码无需修改即可在各种环境中运行。例如,相同版本的代码在开发工作站或 Compute Engine 上运行时可以向 Google Cloud API 进行身份验证。

术语

在讨论身份验证和授权时,请务必了解以下术语。

身份验证

身份验证是确定尝试访问资源的主帐号身份的过程。

授权

授权是确定尝试访问资源的主帐号或应用是否已获得相应访问权限级别授权的过程。

凭据

对于身份验证,凭据是一个数字对象,用于提供身份证明。密码、PIN 码和生物识别数据都可以用作凭据,具体取决于应用要求。例如,当您登录 Google 帐号时,请提供密码并满足双重验证要求,以证明该帐号实际上属于您且您没有被不法分子仿冒。

令牌有时称为凭据,但在本文档中,它们称为数字对象,用于证明调用方提供了适当的凭据,但它们不是凭据本身。

您需要提供的凭据类型取决于您要向其进行身份验证的对象。您可以在 Google Cloud 控制台中创建以下类型的凭据:

  • API 密钥

    与其他凭据不同,API 密钥不会标识主帐号。API 密钥会提供 Google Cloud 项目,以进行结算和配额计算。

    许多 Google API 不接受 API 密钥。如需详细了解 API 密钥,请参阅 API 密钥

  • OAuth 客户端 ID

    OAuth 客户端 ID 用于向 Google 标识应用。如果您想要访问最终用户拥有的资源,则此 ID 是必需的,也称为三足式 OAuth (3LO)。如需详细了解如何获取和使用 OAuth 客户端 ID,请参阅设置 OAuth 2.0

主帐号

主帐号是一种可被授予资源访问权限的身份。对于身份验证,Google API 支持两种类型的主帐号:用户帐号服务帐号

您是使用用户帐号还是服务帐号进行身份验证取决于您的使用场景。您可以在项目的不同阶段或不同的开发环境中同时或分别使用这两种主帐号。

用户帐号

用户帐号代表开发者、管理员或与 Google API 和服务进行交互的任何其他人员。

用户帐号通过 Google WorkspaceCloud Identity 作为 Google 帐号进行管理。它们也可以是由第三方身份提供方管理并与员工身份联合联合的用户帐号。

使用用户帐号时,您可以通过以下方式向 Google API 和服务进行身份验证:

服务帐号

服务帐号是指不代表真人用户的帐号。它们提供了一种在真人不直接参与(例如,应用需要访问 Google Cloud 资源)时管理身份验证和授权的方法。服务帐号由 IAM 管理。

以下列表提供了一些使用服务帐号向 Google API 和服务进行身份验证的方法(按照从最安全到最不安全的顺序)。

令牌

对于身份验证和授权,令牌是一个数字对象,显示调用方提供了交换为该令牌的适当凭据。该令牌包含有关发出请求的主帐号身份以及它们有权进行的访问类型的信息。

可以将令牌视为酒店密钥。在您入住酒店并向酒店登记处出示适当的证件时,您会收到一个密钥,可让您访问特定的酒店资源。例如,该密钥可让您进入您的房间和客梯,但无法进入任何其他房间或货梯。

除 API 密钥外,Google API 不直接支持凭据。您的应用必须获取或生成令牌并将其提供给 API。令牌有多种类型。如需了解详情,请参阅令牌类型

工作负载和员工

Google Cloud 身份和访问权限产品允许通过编程方式和真人用户访问 Google 服务和资源。Google 对编程访问使用“工作负载”一词,对用户访问使用“员工”一词。

借助工作负载身份联合,您可以提供对 Google 外部运行的工作负载的访问权限,而无需创建和管理服务帐号密钥。

借助员工身份联合,您可以使用外部身份提供方通过 IAM 对员工(一组用户,例如员工、合作伙伴和承包商)进行身份验证和授权,以便用户能够访问 Google Cloud 服务。

后续步骤