以自动化方式验证gcloud服务帐户

时间:2019-01-15 21:10:22

标签: google-cloud-platform gcloud gsutil

总体目标:

我们希望能够将Circle CI作业中的Docker容器中的工件上传到Google Cloud中的存储桶。理想情况下,我们可以使用gsutil cp <artifact> <bucket>

完成此操作

问题:

我很难以自动方式对gcloud服务帐户进行身份验证,并且在任何地方都找不到有关此文档的文档。我读过的几乎每篇文章都请您遵循以下两种变体之一:

  1. 使用gsutil

    进行配置
    $ gsutil config -a
    

    但是,这提示了一系列需要与shell交互的问题:

    Backing up existing config file "/Users/<user>/.boto" to "/Users/<user>/.boto.bak"...
    This command will create a boto config file at
    /Users/<user>/.boto containing your credentials, based on your
    responses to the following questions.
    What is your google access key ID?
    
  2. 使用gcloud登录:

    $ gcloud auth login
    Your browser has been opened to visit:
    
        https://accounts.google.com/o/oauth2/auth?....
    

由于最终结果是Docker容器将对服务帐户进行身份验证以执行gsutil cp,因此交互式登录不是很好...

我在this example中具有凭据JSON设置,但是设置环境变量GOOGLE_APPLICATION_CREDENTIALS still 会提示Are you sure? [Y/n]消息,该消息无法自动绕过。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

从服务帐户Json文件配置Google Cloud SDK CLI的命令:

gcloud auth activate-service-account test@development-123456.iam.gserviceaccount.com --key-file=service_account.json

将电子邮件地址test@...替换为您的服务帐户电子邮件地址。 将Json文件名service_account.json替换为用于服务帐户凭据的文件名。

服务帐户的电子邮件地址位于服务帐户json文件中,为client_email

如果您想了解更多信息,我在Google凭据和OAuth上写了很多文章:

Google Cloud – Setting up Gcloud with Service Account Credentials