为 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 Run 函数、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 使用基于 Web 的授权流程来对用户账号执行身份验证并授予访问权限。

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

  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” 上述命令的输出”,然后按 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 命令可以 使用存储在 Google Cloud 中的凭据文件 本地文件系统此凭据可以是具有权限的用户凭据 一个用于模拟服务账号的凭据配置文件 工作负载身份联合,也就是 服务账号密钥。

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

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

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

    转到“服务账号”

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

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

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

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

  4. 运行以下命令,使用用户身份授权 gcloud CLI gcloud auth login

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

    gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
    
  6. 如需默认停止在 gcloud CLI 中使用被冒充的服务账号凭据,请使用 gcloud CLI 配置命令取消设置该标志:

    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 提供用户凭据,请运行 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

后续步骤