GCP中能否通过服务账号导出的OAuth access token登录gcloud?
问题结论
可以仅通过服务账号的OAuth access token在另一台机器运行gcloud命令,不需要持有完整的服务账号JSON密钥文件,但需要注意access token的时效限制。
具体实现方式
你可以通过以下两种常用方式配置使用:
- 临时单次使用(命令行传参)
gcloud原生支持直接传入access token执行命令,有两种参数可选:- 直接传递token值:命令后追加
--access-token <你的access_token内容> - 从本地文件读取token:命令后追加
--access-token-file <存储token的本地文件路径>
示例:
gcloud storage ls --access-token-file ./sa-access-token.txt - 直接传递token值:命令后追加
- 持久化配置(无需每次传参)
如果你需要在一段时间内频繁使用,可以通过以下两种方式全局配置,后续直接执行gcloud命令即可自动调用token:- 设置环境变量:
export CLOUDSDK_AUTH_ACCESS_TOKEN="你的access_token内容" - 写入gcloud本地配置:
gcloud config set auth/access_token_file ./sa-access-token.txt
- 设置环境变量:
注意事项
- 标准OAuth access token默认有效期只有1小时,到期后会直接失效,且你仅持有access token的情况下无法自动刷新,到期后必须重新获取新的token替换才能继续使用
- access token在有效期内拥有对应服务账号的全部权限,传输、存储过程中要做好保密,避免泄露引发安全风险
- 该方案不需要执行
gcloud auth activate-service-account等依赖服务账号JSON密钥的认证命令,完全可以仅靠access token实现gcloud操作
内容的提问来源于stack exchange,提问作者Mithrand1r
相关产品推荐
相关产品推荐

