要访问 Trusted Cloud,您通常必须向 Google Cloud CLI 授权。本页面演示了可用的授权选项,并向您展示如何管理用于授权的账号。如果您使用的是 Compute Engine 实例或 Cloud Shell,则无需向 gcloud CLI 授权。
账号类型
如需向 gcloud CLI 授予访问Trusted Cloud的权限,您可以使用用户账号或服务账号。
用户账号是一种 Trusted Cloud 账号,允许最终用户向您的应用进行身份验证。在大多数常见用例中,特别是以交互方式使用 gcloud CLI 时,最佳做法是使用用户账号。
服务账号是与您的Trusted Cloud 项目关联的 Trusted Cloud 账号,它并不代表某个特定用户。您可以在使用 Cloud Run functions、App Engine、Compute Engine 或 Google Kubernetes Engine 时使用可用的内置服务账号。建议使用服务账号在多台机器上运行 gcloud CLI 脚本。
选择授权类型
您必须向 Google Cloud CLI 授权,才能管理 Trusted Cloud资源。Google Cloud CLI 和 Trusted Cloud 都使用 OAuth2 进行身份验证和授权。
选择以下其中一个授权类型:
类型 | 说明 |
---|---|
用户账号 | 如果您要通过命令行使用 gcloud CLI,或者您要使用 gcloud CLI 编写脚本以便在单台机器上使用,建议您选择此授权类型。 |
服务账号 | 如果您要在生产环境下的机器部署过程中安装和设置 gcloud CLI,或者用于 Compute Engine 虚拟机实例(其中所有用户都有 root 访问权限),建议您选择此授权类型。 |
如需详细了解身份验证和 Trusted Cloud,请参阅身份验证概览。
使用用户账号进行授权
本部分介绍了如何使用员工身份联合登录 gcloud CLI。
在登录 gcloud CLI 之前,您必须通过运行以下命令在配置中设置core/universe_domain
属性:
gcloud config set universe_domain s3nsapis.fr
基于浏览器的 gcloud CLI 登录
如需使用基于浏览器的登录流程登录 gcloud CLI,请执行以下操作:
创建登录配置文件。
如需创建登录配置文件,请运行以下命令。您可以选择添加
--activate
标志,以将该文件激活为 gcloud CLI 的默认文件。 然后,您就可以运行gcloud auth login
,而无需每次都指定配置文件路径。gcloud iam workforce-pools create-login-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --output-file=LOGIN_CONFIG_FILE_PATH
替换以下内容:
WORKFORCE_POOL_ID
:员工池 IDPROVIDER_ID
:提供方 IDLOGIN_CONFIG_FILE_PATH
:您指定的配置文件的路径,例如login.json
该文件包含 gcloud CLI 用于启用基于浏览器的身份验证流程的端点,并将受众群体设置为在员工身份池提供方中配置的 IdP。该文件不含机密信息。
输出类似于以下内容:
{ "type": "external_account_authorized_user_login_config", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "auth_url": "https://auth.cloud.s3nscloud.fr/authorize", "token_url": "https://sts.s3nsapis.fr/v1/oauthtoken", "token_info_url": "https://sts.s3nsapis.fr/v1/introspect", }
gcloud auth login
自动使用此配置文件,您可以运行gcloud config unset auth/login_config_file
来取消设置此文件。使用基于浏览器的身份验证登录。
如需使用基于浏览器的登录身份验证来验证身份,您可以使用以下方法之一:
-
如果您在创建配置文件时使用了
--activate
标志,或者使用gcloud config set auth/login_config_file
激活了配置文件,gcloud CLI 会自动使用配置文件:gcloud auth login
-
如需通过指定配置文件的位置进行登录,请运行以下命令:
gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
-
如需使用环境变量来指定配置文件的位置,请将
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
设置为配置文件的路径。
-
如需停止使用登录配置文件,请执行以下操作:
-
如果您在创建配置文件时使用了
--activate
标志,或者使用gcloud config set auth/login_config_file
激活了配置文件,则必须运行以下命令以取消设置:gcloud config unset auth/login_config_file
-
清除
CLOUDSDK_AUTH_LOGIN_CONFIG_FILE
环境变量(如果已设置)。
gcloud CLI 无头登录
如需使用无头流登录 gcloud CLI,请执行以下操作:
OIDC
让用户登录您的 IdP 应用并获取 OIDC 令牌。
如需了解如何获取令牌,请参阅 IdP 的 OIDC 文档。
将 IdP 返回的 OIDC 令牌保存在本地机器上的安全位置。
通过运行以下命令生成配置文件:
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \ --subject-token-type="urn:ietf:params:oauth:token-type:id_token" \ --credential-source-file="PATH_TO_OIDC_ID_TOKEN" \ --workforce-pool-user-project="WORKFORCE_POOL_USER_PROJECT" \ --output-file="config.json"
替换以下内容:
WORKFORCE_POOL_ID
:员工池 IDPROVIDER_ID
:提供方 IDPATH_TO_OIDC_TOKEN
:OIDC IdP 凭据文件的路径WORKFORCE_POOL_USER_PROJECT
:与员工池用户项目关联的项目编号
主账号必须具有此项目的 serviceusage.services.use
权限。
运行该命令时,它会生成一个 OIDC IdP 配置文件,具有以下格式:
{
"type": "external_account",
"audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID",
"subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
"token_url": "https://sts.googleapis.com/v1/token",
"workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
"credential_source": {
"file": "PATH_TO_OIDC_CREDENTIALS_FILE"
}
}
SAML
让用户登录您的 IdP 应用并获取 SAML 断言。
如需了解如何从 IdP 获取 SAML 断言,请参阅 IdP 的 SAML 文档。
将 IdP 返回的 SAML 响应保存到本地机器上的安全位置,然后存储该路径,如下所示:
SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
如需生成配置文件,请运行以下命令:
gcloud iam workforce-pools create-cred-config \ locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \ --subject-token-type="urn:ietf:params:oauth:token-type:saml2" \ --credential-source-file="SAML_ASSERTION_PATH" \ --workforce-pool-user-project="PROJECT_ID" \ --output-file="config.json"
替换以下内容:
WORKFORCE_PROVIDER_ID
:您在本指南前面部分创建的员工提供方 ID。WORKFORCE_POOL_ID
:您在本指南前面部分创建的员工池 ID。SAML_ASSERTION_PATH
:SAML 断言文件的路径。PROJECT_ID
:项目 ID
生成的配置文件类似于以下内容:
{ "type": "external_account", "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID", "subject_token_type": "urn:ietf:params:oauth:token-type:saml2", "token_url": "https://sts.googleapis.com/v1/token", "credential_source": { "file": "SAML_ASSERTION_PATH" }, "workforce_pool_user_project": "PROJECT_ID" }
如需使用令牌交换登录 gcloud
,请运行以下命令:
gcloud auth login --cred-file="config.json"
然后,gcloud
会以透明方式将您的 IdP 凭据交换为临时的 Trusted Cloud 访问令牌,以便您对 Trusted Cloud进行其他 gcloud
调用。
输出类似于以下内容:
Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID
/subject/USER_ID
].
如需列出凭据账号和您当前活跃的账号,请运行以下命令:
gcloud auth list
使用服务账号进行授权
gcloud auth login
命令可以使用存储在本地文件系统中的凭据文件,通过服务账号授权访问。此凭据可以是具有模拟服务账号权限的用户凭据、工作负载身份联合的凭据配置文件,也可以是服务账号密钥。
使用服务账号模拟功能授权服务账号
如需授权 gcloud CLI 使用模拟的服务账号,请执行以下操作:
在 Trusted Cloud 控制台中,前往“服务账号”页面。
选择现有账号,或点击创建服务账号来创建一个新账号。
-
如需获得模拟服务账号所需的权限,请让您的管理员为您授予服务账号的 Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。此预定义角色包含
iam.serviceAccounts.getAccessToken
权限,模拟服务账号需要此权限。 通过运行
gcloud auth login
,使用您的用户身份向 gcloud CLI 授权。如需设置 gcloud CLI 以默认使用服务账号提供的身份和访问权限,请使用 gcloud CLI 配置命令:
gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL
如需停止默认使用 gcloud CLI 中的模拟服务账号凭据,请使用 gcloud CLI 配置命令取消设置该标志:
gcloud config unset auth/impersonate_service_account
使用工作负载身份联合对服务账号进行授权
如需使用工作负载身份联合提供的外部凭据通过服务账号向 gcloud CLI 授权,请执行以下操作:
在 Trusted Cloud 控制台中,前往“服务账号”页面。
选择现有账号,或点击创建服务账号来创建一个新账号。
按照受支持的身份提供方的说明,为工作负载身份联合创建凭据配置文件。
如需激活您的服务账号,请运行带有
--cred-file
标志的gcloud auth login
:gcloud auth login --cred-file=CONFIGURATION_FILE
将 CONFIGURATION_FILE 替换为工作负载身份联合的凭据配置文件的路径。
使用服务账号密钥向服务账号授权
如需使用服务账号密钥通过服务账号向 gcloud CLI 授权,请执行以下操作:
在 Trusted Cloud 控制台中,前往“服务账号”页面。
选择现有账号,或点击创建服务账号来创建一个新账号。
如需创建服务账号密钥,请参阅 IAM 说明中的创建服务账号密钥。
如需激活您的服务账号,请运行带有
--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 多长时间后需要重新进行身份验证。例如,您可以强制拥有更高权限的用户比普通用户更频繁地重新进行身份验证。
如需了解详情,请参阅设置 Trusted 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
后续步骤
- 如需详细了解身份验证和 Trusted Cloud,请参阅身份验证概览。
- 如需详细了解如何自定义 gcloud CLI,请参阅 gcloud CLI 属性。
- 如需详细了解如何管理 gcloud CLI 属性的命名集,请参阅 gcloud CLI 配置。