多账号:CLI 与 ADC 隔离
验证:未记录
- 适用版本
- 未记录
- 验证范围
- 尚未登记验证记录。
每个终端显式选择 CLI configuration 与应用 ADC。
推荐做法#
- configuration 管 account/Project 等 CLI 属性;ADC 文件单独保存和选择。
- 并行终端用 CLOUDSDK_ACTIVE_CONFIG_NAME,避免全局 activate 相互影响。
- 用户 ADC 含 refresh token,保存在仓库外;分别核对 CLI 与应用目标。
常用操作#
export CLOUDSDK_ACTIVE_CONFIG_NAME='REPLACE_CONFIGURATION'
export GOOGLE_APPLICATION_CREDENTIALS='/absolute/path/to/approved-adc.json'
gcloud config list
gcloud auth list --filter=status:ACTIVE容易踩的坑#
application-default login 会覆盖默认 ADC,不是每个 gcloud configuration 一份。 多账号应用须明确选择各自凭据文件;不要把切 CLI 配置当作切 SDK 身份。
- 撤销默认 ADC 不会自动清理另存的凭据文件;切身份不等于切应用 Project。
配置说明与完整示例(按需展开)
前置:CLI 与 ADC。本篇为 CLI 和应用分别选择身份。
gcloud CLI 使用命名 configuration 切换账号和项目;应用 ADC 需要另外选择凭据文件。 切换 configuration 不会切换本地 ADC,也不会修改 GOOGLE_APPLICATION_CREDENTIALS。
CLI 可保存多个账号凭据,每个 configuration 选择账号及 Project;只有 gcloud auth application-default login 会覆盖默认 ADC 文件。
1. 为 gcloud CLI 配置账号#
首次配置两个账号时,将下面的示例邮箱和项目 ID 换成自己的值;create 会激活新配置,已有配置直接使用后面的 activate:
gcloud config configurations create personal
gcloud auth login personal@example.com
gcloud config set project PERSONAL_PROJECT_ID
gcloud config configurations create work
gcloud auth login work@example.com
gcloud config set project WORK_PROJECT_ID日常切换或仅对单条命令指定配置:
gcloud config configurations list
gcloud config configurations activate personal
# 类似 aws --profile work,只让这一条命令使用 work 配置
gcloud --configuration=work storage lsconfiguration 保存账号、项目、区域等 CLI 属性,不是各自独立的 ADC 文件。并行终端需要独立选择 CLI 配置时,可在各终端设置 CLOUDSDK_ACTIVE_CONFIG_NAME=work 等值,避免全局激活状态互相影响。gcloud 配置
2. 为应用分别保存 ADC#
多个用户 ADC 可以分别保存,再用环境变量选择。 以下是 macOS/Linux、未自定义 CLOUDSDK_CONFIG 时的示例;每次登录会覆盖默认 ADC,因此登录后立即保存到对应文件。浏览器中确认选择正确账号,不必创建 SA 或长期 SA 密钥:
mkdir -p "$HOME/.config/gcp-adc"
chmod 700 "$HOME/.config/gcp-adc"
gcloud auth application-default login personal@example.com
cp "$HOME/.config/gcloud/application_default_credentials.json" \
"$HOME/.config/gcp-adc/personal.json"
chmod 600 "$HOME/.config/gcp-adc/personal.json"
gcloud auth application-default login work@example.com
cp "$HOME/.config/gcloud/application_default_credentials.json" \
"$HOME/.config/gcp-adc/work.json"
chmod 600 "$HOME/.config/gcp-adc/work.json"3. 在当前终端选择配置#
切换到工作环境时,在当前终端分别选择 CLI 配置和应用凭据:
export CLOUDSDK_ACTIVE_CONFIG_NAME=work
export GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcp-adc/work.json"若只想指定某一次应用运行,可以用 GOOGLE_APPLICATION_CREDENTIALS="$HOME/.config/gcp-adc/personal.json" python app.py(将 app.py 换成自己的程序)。应用的目标项目仍按应用自身配置指定,不能把选凭据等同于选项目。这些用户 ADC 文件含 refresh token,应保存在仓库外;默认 ADC 的撤销命令不会自动清理另存的副本。CLI 与 ADC 独立、ADC 查找规则