google api客户端通常识别
GOOGLE_APPLICATION_CREDENTIALS
环境变量。如果找到,它将指向一个JSON文件,该文件具有服务帐户或用户的凭据。
可以从GCP Web控制台下载服务帐户凭据,如下所示:
{
"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"
}
下面是一个官方的谷歌rubygem的例子
detecting the type of credentials provided via the environment var
.
我想用这两种类型的凭证验证未配置的gcloud安装。在我们的案例中,我们刚好路过
Google应用程序凭证
变量和路径进入Docker容器,但我认为这对于Docker外部的干净安装也是一个有效的问题。
如果凭据文件是服务帐户类型,我可以这样做:
gcloud auth activate-service-account --key-file=${GOOGLE_APPLICATION_CREDENTIALS}
但是,我看不出任何方法来处理凭证属于真实用户的情况。
问题:
-
为什么官方的gCloud工具不遵循其他google api客户机使用和使用的惯例?
Google应用程序凭证
什么时候可以?
-
是否存在将激活用户凭据案例的隐藏方法?