本文档仅介绍 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支持两种类型的联合身份,这两种身份的名称相似:
-
员工身份联合:允许人类用户使用由外部身份提供方管理的身份登录 Google Cloud 。如果贵组织已设置单点登录 (SSO),您可以使用此类身份向 Google Cloud进行身份验证。
您的身份提供方必须支持 OpenID Connect (OIDC) 或 SAML 2.0,才能使用员工身份联合。
-
工作负载身份联合:使在 Google Cloud 外部运行的工作负载能够操作 Google Cloud 资源。
您可以将工作负载身份联合与以下工作负载搭配使用:使用 X.509 客户端证书进行身份验证;在 Amazon Web Services (AWS) 或 Azure 上运行;使用本地 Active Directory;使用部署服务(例如 GitHub 和 GitLab);以及使用支持 OpenID Connect (OIDC) 或安全声明标记语言 (SAML) V2.0 的任何身份提供方。
-
像人类一样使用 gcloud CLI
对于交互式任务,您通常通过以下方式之一进行身份验证:
用户账号
使用员工身份联合的联合用户身份
用户账号
您如何使用用户账号向 gcloud CLI 进行身份验证,取决于您的设备上是否安装了 Web 浏览器。
我的设备有网络浏览器
如需在具有 Web 浏览器的设备上使用用户账号进行身份验证,请完成以下步骤:
运行以下命令以启动该进程:
gcloud auth login按照基于浏览器的流程操作,以便对 gcloud CLI 进行身份验证并授权其代表您访问资源,以供日后的命令使用。
gcloud auth login 命令会将访问凭据存储在您的主目录中。经过身份验证的主账号将成为活跃 gcloud CLI 配置中的活跃主账号。除非被替换,否则 gcloud CLI 会使用这些存储的凭据来访问 Google Cloud。
我的设备没有网络浏览器
如果您需要在没有网络浏览器的设备上使用 gcloud CLI,可以在另一台可信设备上使用您的用户账号进行身份验证。此流程因其他可信设备上安装的软件而异。
使用其他受信任的设备进行身份验证
选择另一部可信设备上可用的软件。
gcloud CLI 和网络浏览器
使用 --no-browser 标志在安装了网络浏览器和 gcloud CLI 的其他设备上完成身份验证过程:
在要使用 gcloud CLI 的原始设备上运行以下命令:
Linux 和 macOS
gcloud auth login \ --no-browserWindows (PowerShell)
gcloud auth login