为 gcloud CLI 进行身份验证

本文档仅介绍 Google Cloud CLI 对Google Cloud 资源的身份验证。如果您需要使用 Cloud 客户端库或 Google API 客户端库对工作负载进行身份验证,请参阅应用默认凭据的工作方式

准备工作

如果您是 Google Cloud 新手,并且只想在本地开发环境中开始使用 gcloud CLI 命令,可以使用以下命令初始化 gcloud CLI

gcloud init

初始化会引导您完成身份验证流程,设置 gcloud CLI 配置,并授权 gcloud CLI 代表您执行操作。无需执行单独的身份验证步骤。

本文档的其余部分将介绍更复杂的场景,例如将 gcloud CLI 与不同的主账号类型搭配使用、适用于不同环境的适当身份验证方法、切换主账号以及管理存储的凭据。

身份验证方法

所有 gcloud CLI 命令都需要向 Google CloudAPI 进行身份验证。您可以通过以下方式进行身份验证:

  • 授权和存储凭据:适合在本地开发环境中使用。您可以使用 gcloud auth login 命令授权 gcloud CLI 代表主账号执行操作。完成初始身份验证后,此命令会将凭据存储在 gcloud CLI 配置目录中。gcloud CLI 会使用这些存储的凭据自动对后续命令进行身份验证,直到会话过期或您撤消授权。

  • 使用凭据文件进行身份验证:适用于在 Google Cloud外部运行的工作负载。您可以使用环境变量或 gcloud CLI 配置属性来指定用于自动身份验证的凭据文件。此文件可以是以下文件之一:

    • 工作负载身份联合凭据配置文件。

    • 服务账号密钥。

  • 提供访问令牌:适用于高度隔离的自动化工作流或共享机器上的无状态会话。您可以直接向 gcloud CLI 提供访问令牌,从而绕过凭据存储。为此,您可以将特定环境变量设置为原始访问令牌字符串,也可以将 gcloud CLI 指向包含访问令牌的文件。

完成身份验证后,您可以选择通过提供服务账号的电子邮件地址,让 gcloud CLI 模拟服务账号

您可以在单个环境中使用多种身份验证方法。不过,任何给定的 gcloud 命令都只能使用一个主账号。为了确定要使用哪个主账号,gcloud CLI 会遵循优先级顺序

无需进行身份验证的情况

在以下情况下,您无需对 gcloud CLI 进行身份验证:

  • 在您 初始化 gcloud CLI 后立即执行。身份验证和授权 gcloud CLI 代表您执行操作都包含在初始化过程中。如果您需要使用其他主账号访问不同的资源,或者需要重新验证主账号,则可能仍需再次进行身份验证。
  • 从公开 Compute Engine 元数据服务器的资源使用 gcloud CLI 时。 这包括 Compute Engine 虚拟机实例、Cloud Run 服务和 Cloud Build build 等资源。gcloud CLI 使用附加到虚拟机的服务账号进行身份验证,并且可以在已应用的任何 访问权限范围的限制范围内访问与该服务账号相同的资源。
  • 使用 Cloud Shell 时。gcloud CLI 会自动使用您登录 Google Cloud 控制台时所用的主账号进行身份验证。当您在新的 Cloud Shell 会话中首次运行 gcloud CLI 命令时,系统会提示您使用该主账号 为 Cloud Shell 提供授权

为任务选择合适的主账号

对于人工使用和自动化工作负载,有不同类型的主账号。 您需要使用的主账号类型会影响您的身份验证方式。

  • 用户账号:这些是供人类用户执行交互式工作的 Google 账号,例如执行临时管理任务、以非程序化方式配置 Google Cloud 服务、进行测试、实验和可观测性分析。

    您可以使用用户凭据(例如密码和一次性验证码)以用户账号身份进行身份验证。

  • 服务账号:这些账号是 Google Cloud 特有的账号,工作负载可以使用这些账号来访问服务或资源。您通常不会直接以服务账号身份进行身份验证。而是将服务账号附加到 Compute Engine 虚拟机等资源,或使用服务账号模拟功能。

  • 联合主账号:这些身份引用了外部身份提供方中的用户账号或服务账号。 Google Cloud支持两种类型的联合身份,这两种身份的名称相似:

像人类一样使用 gcloud CLI

对于交互式任务,您通常通过以下方式之一进行身份验证:

  • 用户账号

  • 使用员工身份联合的联合用户身份

用户账号

您如何使用用户账号向 gcloud CLI 进行身份验证,取决于您的设备上是否安装了 Web 浏览器。

我的设备有网络浏览器

如需在具有 Web 浏览器的设备上使用用户账号进行身份验证,请完成以下步骤:

  1. 运行以下命令以启动该进程:

    gcloud auth login
    
  2. 按照基于浏览器的流程操作,以便对 gcloud CLI 进行身份验证并授权其代表您访问资源,以供日后的命令使用。

gcloud auth login 命令会将访问凭据存储在您的主目录中。经过身份验证的主账号将成为活跃 gcloud CLI 配置中的活跃主账号。除非被替换,否则 gcloud CLI 会使用这些存储的凭据来访问 Google Cloud。

我的设备没有网络浏览器

如果您需要在没有网络浏览器的设备上使用 gcloud CLI,可以在另一台可信设备上使用您的用户账号进行身份验证。此流程因其他可信设备上安装的软件而异。

使用其他受信任的设备进行身份验证

选择另一部可信设备上可用的软件。

gcloud CLI 和网络浏览器

使用 --no-browser 标志在安装了网络浏览器和 gcloud CLI 的其他设备上完成身份验证过程:

  1. 在要使用 gcloud CLI 的原始设备上运行以下命令:

    Linux 和 macOS

    gcloud auth login \
        --no-browser
    

    Windows (PowerShell)

    gcloud auth login