Google API 客户端通常会识别GOOGLE_APPLICATION_CREDENTIALS
环境变量。如果找到,它应该指向一个 JSON 文件,其中包含服务帐户或用户的凭据。
可以从 GCP 网络控制台下载服务帐户凭据,如下所示:
{
"type": "service_account",
"project_id": "...",
"private_key_id": "...",
"private_key": "...",
"client_email": "...",
"client_id": "...",
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "..."
}
用户凭据通常可用,~/.config/gcloud/application_default_credentials.json
如下所示:
{
"client_id": "...",
"client_secret": "...",
"refresh_token": "...",
"type": "authorized_user"
}
这是官方 google rubygem检测通过环境 var 提供的凭据类型的示例。
我想使用两种类型的凭据对未配置的 gcloud 安装进行身份验证。在我们的例子中,我们碰巧将GOOGLE_APPLICATION_CREDENTIALS
变量和路径传递到 docker 容器中,但我认为这对于 docker 外部的全新安装也是一个有效的问题。
如果凭证文件是服务帐户类型,我可以这样做:
gcloud auth activate-service-account --key-file=${GOOGLE_APPLICATION_CREDENTIALS}
但是,我看不到任何方法来处理凭据属于真实用户的情况。
问题:
- 为什么官方 gcloud 工具不遵循其他 google API 客户端使用和使用
GOOGLE_APPLICATION_CREDENTIALS
时可用的约定? - 是否有隐藏方法可以激活用户凭据案例?