如何在服务器上的gcloud上使用GOOGLE_APPLICATION_CREDENTIALS?


11

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

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

Google Cloud库(例如pythonjava)会自动使用环境变量GOOGLE_APPLICATION_CREDENTIALS向Google Cloud进行身份验证。但不幸的是,此命令行似乎对无效gcloudgcloud在保持文件系统完好无损的情况下使用哪种干净方法?

$ 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.

请随时在Google Public Issue Tracker上打开功能请求,并提及您的用例:issuetracker.google.com
卡姆兰(Kamran),

1
我创建了问题38098801-永

Answers:


20

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

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

也有可能(尽管比较繁琐)来覆盖大多数设置,以便不需要通过gcloud config set ...和/或对其进行预配置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目录。

1

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

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

参考

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


我认为OP正在询问如何进行身份验证,而不必激活将凭据存储在其他位置的服务帐户凭据。我认为您只能--account=在激活凭据后才能使用。
David Xia

1

1)在GCP IAM中创建一个ServiceAccount。选中“提供新的私钥”复选框,然后选择JSON作为文件类型。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.