You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gcloud与ADC凭证是否可互换?能否双向转换凭证文件?

GCP认证文件application_default_credentials.json与credentials.db的双向转换

先明确两个文件的定位:

  • credentials.db是gcloud CLI的本地SQLite数据库,存储了多个用户/服务账号的认证凭证,供gcloud命令行工具使用。
  • application_default_credentials.json(简称ADC文件)是应用默认凭证的单文件存储,通常对应单个账号,供Terraform、GCP SDK等非CLI工具使用。

一、从credentials.db生成application_default_credentials.json

有两种常用方法:

方法1:通过gcloud命令直接生成

如果已经用gcloud auth login登录了目标账号,可直接让gcloud生成对应ADC文件:

  1. 确认并切换到目标账号:
    gcloud auth list
    gcloud config set account your-account@example.com
    
  2. 生成ADC文件(会覆盖当前默认路径下的ADC文件):
    gcloud auth application-default login
    
    默认生成路径:
    • Linux/macOS: ~/.config/gcloud/application_default_credentials.json
    • Windows: %APPDATA%\gcloud\application_default_credentials.json

方法2:直接从SQLite数据库提取

如果不想重新触发登录流程,可直接从credentials.db中提取凭证并保存为ADC文件:

  1. 查询目标账号的凭证内容:
    sqlite3 ~/.config/gcloud/credentials.db "SELECT value FROM credentials WHERE account_id='your-account@example.com';"
    
  2. 将查询输出的JSON内容写入ADC文件:
    sqlite3 ~/.config/gcloud/credentials.db "SELECT value FROM credentials WHERE account_id='your-account@example.com';" > ~/.config/gcloud/application_default_credentials.json
    

二、从application_default_credentials.json导入到credentials.db

根据ADC文件对应的账号类型(用户账号/服务账号),选择不同的导入方式:

情况1:ADC文件是用户OAuth2凭证

直接用gcloud登录命令导入:

gcloud auth login --cred-file=path/to/application_default_credentials.json

执行后,该凭证会被添加到credentials.db中,可通过gcloud auth list查看。

情况2:ADC文件是服务账号密钥

如果ADC文件是服务账号的JSON密钥,用激活服务账号的命令导入:

gcloud auth activate-service-account --key-file=path/to/application_default_credentials.json

注意事项

  • 凭证有效期:用户类型的凭证有短期有效期,gcloud和ADC工具都会自动刷新,但手动导出的凭证如果未配置刷新机制,可能会过期失效。
  • 多账号管理:credentials.db支持多账号存储,而ADC文件默认只对应单个账号,切换ADC账号需要重新生成或替换文件。
  • 权限一致性:导入/导出的凭证权限取决于原账号的权限,确保操作时使用的账号有足够的权限完成对应任务。

内容的提问来源于stack exchange,提问作者x-yuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:02:40