代码之家  ›  专栏  ›  技术社区  ›  James Healy

我可以使用服务帐户和用户凭据验证gcloud cli吗?

  •  3
  • James Healy  · 技术社区  · 6 年前

    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}
    

    但是,我看不出任何方法来处理凭证属于真实用户的情况。

    问题:

    1. 为什么官方的gCloud工具不遵循其他google api客户机使用和使用的惯例? Google应用程序凭证 什么时候可以?
    2. 是否存在将激活用户凭据案例的隐藏方法?
    2 回复  |  直到 6 年前
        1
  •  0
  •   cherba    6 年前

    gcloud

    GOOGLE_APPLICATION_CREDENTIALS

    gcloud auth login
    

    gcloud auth application-default login account

     gcloud config list
    

    gcloud config configurations list
    

    --configuration

    gcloud compute instances list --configuration MY_USER_ACCOUNT_CONFIG
    

    --account

        2
  •  -1
  •   James Healy    6 年前

    GOOGLE_APPLICATION_CREDENTIALS

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

    推荐文章