向 gcloud CLI 授权

如需访问 Google Cloud,您通常必须对 Google Cloud CLI 进行授权。本页面演示了可用的授权选项,并向您展示如何管理用于授权的账号。如果您使用的是 Compute Engine 实例或 Cloud Shell,则无需向 gcloud CLI 授权。

账号类型

如需授权 gcloud CLI 访问 Google Cloud,您可以使用用户帐号服务帐号

用户账号是一个 Google Cloud 账号,它允许最终用户向您的应用进行身份验证。对于大多数常见用例,尤其是使用 gcloud CLI 以交互方式使用时,最佳做法是使用用户帐号。

服务帐号是与您的 Google Cloud 项目(而非特定用户)关联的 Google Cloud 帐号。在使用 Cloud Functions、App Engine、Compute Engine 或 Google Kubernetes Engine 时,您可以使用可用的内置服务帐号。建议使用服务帐号在多台机器上运行 gcloud CLI 脚本。

选择授权类型

您必须授权 Google Cloud CLI 管理 Google Cloud 资源。Google Cloud CLI 和 Google Cloud 都使用 OAuth2 进行身份验证和授权。

选择以下其中一个授权类型:

类型 说明
用户账号 如果您从命令行使用 gcloud CLI,或使用 gcloud CLI 编写可在单台机器上使用的脚本,建议您使用此选项。
服务账号 如果您要在生产环境的机器部署过程中安装和设置 gcloud CLI,或者用于 Compute Engine 虚拟机实例(其中所有用户都有 root 访问权限),建议您选择此授权类型。

如需详细了解身份验证和 Google Cloud,请参阅身份验证概览

使用用户帐号授权

使用以下 gcloud CLI 命令,通过用户帐号授予访问权限:

命令 说明
gcloud init 授予访问权限并执行其他常见的设置步骤。
gcloud auth login 仅授予访问权限。

在授权期间,这些命令会从 Google Cloud 获取账号凭据并将其存储在本地系统上。指定的帐号将成为配置中的活跃帐号。gcloud CLI 使用存储的凭据访问 Google Cloud。对于单个 gcloud CLI 安装,您可以拥有任意数量的具有存储凭据的帐号,但一次只能有一个帐号处于活动状态。

运行 gcloud init

gcloud init 会授予访问权限并执行其他常见设置步骤gcloud init 使用基于网络的授权流程来验证用户帐号并授予访问权限。

如需授予访问权限并执行其他常见设置步骤,请执行以下操作:

  1. 运行 gcloud init

    gcloud init
    

    或者,为了防止此命令自动打开网络浏览器,请运行以下命令:

    gcloud init --console-only
    

    如果您是使用 ssh 在远程系统上运行该命令,并且无权访问该系统上的浏览器,那么 --console-only 标志会非常有用。然后,您必须在本地系统的浏览器中手动打开提供的网址以完成授权过程。

  2. 按照基于浏览器的授权流程操作,以便对账号进行身份验证并授予访问权限。

如需详细了解 gcloud init,请参阅初始化 gcloud CLI

运行 gcloud auth login

运行 gcloud auth login 仅向用户帐号授权。要在不执行其他设置步骤的情况下授予访问权限,请使用以下方法之一。

  • 如果您想在装有浏览器的机器上授权 gcloud CLI,请按以下步骤操作。

    1. 向 gcloud CLI 授权:

      gcloud auth login
      
    2. 按照基于浏览器的授权流程操作,以便对账号进行身份验证并授予访问权限。

  • 如果您想在没有浏览器的机器上授权 gcloud CLI,并且您可以在另一台装有浏览器的机器上安装 gcloud CLI,请使用 --no-browser 标志。

    1. 向 gcloud CLI 授权:

      gcloud auth login --no-browser
      
    2. 复制以 gcloud auth login --remote-bootstrap=" 开头的长命令。

    3. 将此命令粘贴到另一台可信机器的命令行上,该机器在本地安装有网络浏览器和 gcloud CLI 工具 372.0 或更高版本。

    4. 使用网络浏览器复制机器的长网址输出。

    5. 在“Enter the output of the above 命令”提示下将长网址粘贴回第一台机器,然后按 Enter 键完成授权。

  • 如果要在没有浏览器的机器上授权 gcloud CLI,并且不能在另一台带有浏览器的机器上安装 gcloud CLI,请使用 --no-launch-browser 标志。--no-launch-browser 标志可防止该命令自动打开网络浏览器。

    1. 向 gcloud CLI 授权:

      gcloud auth login --no-launch-browser
      
    2. 复制以 https://accounts.google.com/o/oauth2/auth... 开头的长网址

    3. 将此网址粘贴到另一台可信且装有网络浏览器的机器的浏览器中。

    4. 从安装了网络浏览器的机器上复制授权代码。

    5. 在提示“输入验证码”时,将授权代码重新粘贴到第一台机器上,然后按 Enter 键完成授权。

  • 如果您已有访问令牌,请使用以下方法之一将访问令牌传递给 gcloud CLI:

    • 将访问令牌存储在文件中,并通过 --access-token-file 标志设置其路径。
    • 将访问令牌存储在文件中,并在 auth/access_token_file 属性中设置其路径。
    • CLOUDSDK_AUTH_ACCESS_TOKEN 环境变量设置为访问令牌值。

使用服务帐号授权

gcloud auth login 命令可以使用存储在本地文件系统中的凭据文件来授权服务帐号进行访问。此凭据可以是有权模拟服务帐号的用户凭据、用于工作负载身份联合的凭据配置文件或服务帐号密钥。

使用服务帐号模拟向服务帐号授权

如需授权 gcloud CLI 使用模拟的服务帐号凭据,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往“服务帐号”页面。

    转到“服务账号”

  2. 选择现有账号,或点击创建服务账号来创建一个新账号。

  3. 为了确保主账号具有模拟服务账号的必要权限,请让您的管理员为主账号授予服务账号的 Service Account Token Creator (roles/iam.serviceAccountTokenCreator) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

    此预定义角色包含 iam.serviceAccounts.getAccessToken 权限,模拟服务账号需要此权限。

    您的管理员也可以使用自定义角色或其他预定义角色为主账号授予此权限。

  4. 运行 gcloud auth login,使用您的用户身份向 gcloud CLI 授权。

  5. 如需将 gcloud CLI 设置为默认使用服务帐号提供的身份和访问权限,请使用 gcloud CLI config 命令

    gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
    
  6. 要停止通过 gcloud CLI 默认使用模拟的服务帐号凭据,请使用 gcloud CLI config 命令取消设置该标志:

    gcloud config unset auth/impersonate_service_account
    

使用工作负载身份联合向服务帐号授权

如需使用工作负载身份联合提供的外部凭据通过服务帐号向 gcloud CLI 授权,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往“服务帐号”页面。

    转到“服务账号”

  2. 选择现有账号,或点击创建服务账号来创建一个新账号。

  3. 按照受支持身份提供方的说明为工作负载身份联合创建凭据配置文件

  4. 如需激活您的服务帐号,请运行带有 --cred-file 标志的 gcloud auth login

    gcloud auth login --cred-file=CONFIGURATION_FILE
    

    CONFIGURATION_FILE 替换为工作负载身份联合的凭据配置文件的路径。

使用服务帐号密钥授权服务帐号

如需使用服务帐号密钥向 gcloud CLI 授权,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往“服务帐号”页面。

    转到“服务账号”

  2. 选择现有账号,或点击创建服务账号来创建一个新账号。

  3. 如需创建服务帐号密钥,请参阅 IAM 说明创建服务帐号密钥

  4. 如需激活您的服务帐号,请运行带有 --cred-file 标志的 gcloud auth login

    gcloud auth login --cred-file=KEY_FILE
    

    KEY_FILE 替换为服务帐号密钥文件的路径。

列出账号

如需列出其凭据存储在本地系统上的账号,请运行 gcloud auth list

gcloud auth list

gcloud CLI 会列出帐号并显示哪个帐号处于活跃状态:

Credentialed accounts:
 - user-1@gmail.com (active)
 - user-2@gmail.com

切换当前使用的账号

如需切换活跃账号,请运行 gcloud config set

gcloud config set account ACCOUNT

其中 [ACCOUNT] 是帐号的完整电子邮件地址。

要切换账号,您也可以创建一个单独的配置(指定了其他账号)并在配置之间切换:

gcloud config configurations activate CONFIGURATION

如果您想要在每次调用时切换 gcloud CLI 使用的帐号,请使用 --account 标志替换活跃帐号。

设置已获授权的会话时长

作为管理员,您可以控制不同用户可在多长时间内访问 gcloud CLI,而无需重新进行身份验证。例如,您可以强制拥有已提升权限的用户比普通用户更频繁地重新进行身份验证。

如需了解详情,请参阅设置 Google Cloud 服务的会话时长

撤消账号的凭据

如果您想禁止特定帐号通过 gcloud CLI 进行访问,您可以撤消凭据。您无需撤消凭据即可在帐号之间切换。

如需撤消凭据,请运行 gcloud auth revoke

gcloud auth revoke ACCOUNT

如需撤消所有机器对 gcloud CLI 的所有访问权限,请从有权访问您帐号的应用列表中移除 gcloud CLI

使用凭据文件

查找凭据文件

如需查找凭据文件的位置,请运行 gcloud info

gcloud info

gcloud CLI 会显示安装相关信息。 凭据文件存储在用户配置目录中:

User Config Directory: [/home/USERNAME/.config/gcloud]

设置应用默认凭据

gcloud CLI 支持使用 gcloud auth application-default 命令组管理应用默认凭据 (ADC)。如需将用户凭据提供给 ADC,请运行 gcloud auth application-default login

gcloud auth application-default login

这些凭据不供 gcloud CLI 使用。如需了解设置 ADC 的更多方法,请参阅设置应用默认凭据

unset GOOGLE_APPLICATION_CREDENTIALS
gcloud config unset auth/impersonate_service_account
gcloud auth application-default login

后续步骤