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"
}
以下是Google官方的rubygem detecting the type of credentials provided via the environment var的示例。
我想使用两种类型的凭证对未配置的gcloud安装进行身份验证。在我们的情况下,我们碰巧将GOOGLE_APPLICATION_CREDENTIALS
变量和路径传递到Docker容器中,但是我认为这对于在docker外部进行全新安装也是一个有效的问题。
如果凭据文件是服务帐户类型,则可以执行以下操作:
gcloud auth activate-service-account --key-file=${GOOGLE_APPLICATION_CREDENTIALS}
但是,我看不到任何方法来处理凭据属于真实用户的情况。
问题:
GOOGLE_APPLICATION_CREDENTIALS
?答案 0 :(得分:0)
正如您指出的那样, <div id="total" class="mr-5">Total tests: <script type="text/javascript"> myfunction(); </script></div>
<div id="failed" class="mr-5">Failed tests:</div>
<div id="passed" class="mr-5">Passed tests:</div>
<span id="runTime" class="float-right"><div class="mr-5">Run Time:</div></span>
命令行工具(CLI)不使用应用程序默认凭据。它具有用于管理自己的凭据的独立系统。
gcloud
专为客户端库而设计,以简化凭据连接,而gcloud CLI并非库。即使在客户端代码中,最佳实践也不是依赖于此环境变量,而是显式提供凭据。
要回答第二个问题,可以通过获取用户凭据
GOOGLE_APPLICATION_CREDENTIALS
命令。 (请注意,这与gcloud auth login
不同)除了保存实际凭据,这还将在当前配置中设置gcloud auth application-default login
属性:
account
gcloud config list
可以具有许多配置,每个配置具有不同的凭据。见
gcloud
您可以创建多个配置,一个使用用户帐户,另一个使用服务帐户,并通过提供gcloud config configurations list
参数来同时使用它,例如
--configuration
类似地,您也可以通过使用gcloud compute instances list --configuration MY_USER_ACCOUNT_CONFIG
标志来切换使用哪些凭据,在这种情况下,它将使用相同的配置,并且只会换出该帐户。
答案 1 :(得分:-1)
当GOOGLE_APPLICATION_CREDENTIALS
指向具有用户凭据而非服务帐户凭据的文件时,我已经找到了一种对新gcloud进行身份验证的方法。
cat ${GOOGLE_APPLICATION_CREDENTIALS}
{
"client_id": "aaa",
"client_secret": "bbb",
"refresh_token": "ccc",
"type": "authorized_user"
}
gcloud config set auth/client_id aaa
gcloud config set auth/client_secret bbb
gcloud auth activate-refresh-token user ccc
这使用了未记录的auth activate-refresh-token
子命令-这不是理想的方法-但确实可以。
与gcloud auth activate-service-account --key-file=credentials.json
配对,这使得初始化gcloud成为可能,而与$GOOGLE_APPLICATION_CREDENTIALS
上可用的凭据类型无关。