如何仅使用访问令牌通过 gcloud 进行身份验证?

问题描述 投票:0回答:2

所以我想知道是否有一种方法可以通过访问令牌来验证 gcloud 实用程序命令? 例如。如果我通过 gcloud auth print-access-token 获得访问令牌,然后在另一台计算机上执行 gcloud auth ${access_token}

这可能吗?

google-cloud-platform gcloud
2个回答
5
投票

可以通过三种方式直接使用访问令牌,如此处概述,我总结如下:

  1. 声明

    CLOUDSDK_AUTH_ACCESS_TOKEN
    环境变量,请参阅https://cloud.google.com/sdk/docs/authorizing

  2. --access-token-file
    标志,请参阅 https://cloud.google.com/sdk/gcloud/reference#--access-token-file

  3. --access-token-file
    的配置,请参阅https://cloud.google.com/sdk/gcloud/reference/config/set并搜索
    access_token_file

实践经验

我使用 Google Cloud SDK 413.0.0 和 Python 客户端尝试了一些东西

google-storage-client
并学到了一些相关的东西。

1.选项适用于
gcloud
,但不适用于所有客户

以下所有选项均适用于使用凭据设置

gcloud
CLI。

  • export CLOUDSDK_AUTH_ACCESS_TOKEN=<access token>
  • gcloud config set auth/access_token_file $(pwd)/my-access-token.txt
  • gcloud storage ls <bucket> --access_token_file=$(pwd)/my-access-token.txt

2. Python 客户端不尊重上面列出的选项

在此 github 问题中,请求 Google 的 Python 库支持 CLOUDSDK_AUTH_ACCESS_TOKEN

但是,他们可以像这样直接使用访问令牌:

# Example on using a temporary GCP access token. # # To acquire a token from some location, run # # gcloud auth print-access-token # # To use it with python libraries like google-cloud-storage, first create a # credentials object to pass to the client. # import getpass from google.cloud import storage from google.oauth2.credentials import Credentials # import an access token # - option 1: read an access token from a file with open("my-access-token.txt") as f: access_token = f.read().strip() # - option 2: read an access token from user input access_token = getpass.getpass("Enter access token: ") # setup a storage client using credentials credentials = Credentials(access_token) storage_client = storage.Client(credentials=credentials) # test the storage client by trying to list content in a google storage bucket bucket_name = "something" # don't include gs:// here blobs = list(storage_client.list_blobs(bucket_name)) print(len(blobs))
    

1
投票
我认为 Gcloud 身份验证令牌默认在 60 分钟内过期。

要向其他人或设备提供长期运行的访问权限,您可以使用 IAM 提供对其帐户的访问权限,以执行您需要他们执行的功能(通过他们执行自己的 gcloud 身份验证)。

如果这不是一个选项,您可以创建一个服务帐户,导出该服务帐户的密钥,并向他们提供可以通过在执行 gcloud 命令之前设置

GOOGLE_APPLICATION_CREDENTIALS

 变量从控制台/终端进行身份验证的密钥。

例如

export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
资源

  • 使用 Google Cloud 控制台授予 IAM 角色
  • 创建和管理服务帐户
  • 身份验证入门 - 设置环境变量
© www.soinside.com 2019 - 2024. All rights reserved.