如何在服务器上将 GOOGLE_APPLICATION_CREDENTIALS 与 gcloud 结合使用?

如何在服务器上将 GOOGLE_APPLICATION_CREDENTIALS 与 gcloud 结合使用?

在 GCE 之外以非交互方式使用gcloud服务帐户命令行的最简单方法是什么?最好不要在文件系统中堆满凭证文件,这就是它的gcloud auth activate-service-account --key-file=...作用。

使用服务帐户有很多用例gcloud。例如,在服务器上,我想在运行我的应用程序之前测试是否正确设置并具有所需的权限。或者,我想运行一些设置脚本或 cron 脚本,使用命令GOOGLE_APPLICATION_CREDENTIALS行执行一些检查。gcloud

Google Cloud 库(例如PythonJava 语言) 自动使用环境变量GOOGLE_APPLICATION_CREDENTIALS向 Google Cloud 进行身份验证。但不幸的是,此命令行似乎对 没有任何影响。在保持文件系统完好的情况下gcloud使用 的干净方法是什么?gcloud

$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:

  $ gcloud auth login

to obtain new credentials, or if you have already logged in with a
different account:

  $ gcloud config set account ACCOUNT

to select an already authenticated account to use.

答案1

gcloud一般不使用GOOGLE_APPLICATION_CREDENTIALS环境变量。它只有一些命令来方便在 中设置这些应用程序默认凭据gcloud auth application-default [login|revoke|print-access-token...]

默认情况下,gcloud其配置存储在 ${HOME}/.config/gcloud 中。可以通过设置CLOUDSDK_CONFIG环境变量来覆盖该位置。

也可以(虽然比较繁琐)覆盖大多数设置,这样就不需要通过gcloud config set ...and/or进行预先配置gcloud auth activate-service-account。对于每个设置,都可以指定环境变量。

例如,您尝试使用服务帐户密钥文件的等效命令是:

$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
    gcloud alpha pubsub topics publish testtopic hello

请注意,由于它需要缓存访问令牌,因此这仍将缓存凭据CLOUDSDK_CONFIG,因此不必在每次调用时刷新它。

对于您的用例,我认为最好的选择是

  1. 设置CLOUDSDK_CONFIG为某个临时目录
  2. gcloud auth activate-service-account --key-file=...
  3. ... 用来gcloud做你的工作...
  4. 删除临时CLOUDSDK_CONFIG目录。

答案2

1) 在 GCP IAM 中创建 ServiceAccount。勾选“提供新私钥”,并选择 JSON 作为文件类型。

2)将 JSON 文件下载到您的服务器,然后输入: gcloud auth activate-service-account --key-file serviceaccount.json

3)通过运行来验证凭据是否已应用gcloud auth list

答案3

你看过这个--account选项了吗?喜欢

$gcloud --account="foo" ...

参考

关于“最好不要用凭证文件弄乱文件系统”,我不确定是否可以实现。

答案4

如果你已经有了 env-var 和 json 键,只需运行:

gcloud auth activate-service-account --key-file=$GOOGLE_APPLICATION_CREDENTIALS

这将激活 gcloud/gsutil 的服务帐户

相关内容