所以我想知道是否有一种方法可以通过访问令牌来验证 gcloud 实用程序命令? 例如。如果我通过 gcloud auth print-access-token 获得访问令牌,然后在另一台计算机上执行 gcloud auth ${access_token}
这可能吗?
可以通过三种方式直接使用访问令牌,如此处概述,我总结如下:
声明
CLOUDSDK_AUTH_ACCESS_TOKEN
环境变量,请参阅https://cloud.google.com/sdk/docs/authorizing
--access-token-file
标志,请参阅 https://cloud.google.com/sdk/gcloud/reference#--access-token-file。
--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
并学到了一些相关的东西。
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
在此 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))
要向其他人或设备提供长期运行的访问权限,您可以使用 IAM 提供对其帐户的访问权限,以执行您需要他们执行的功能(通过他们执行自己的 gcloud 身份验证)。
如果这不是一个选项,您可以创建一个服务帐户,导出该服务帐户的密钥,并向他们提供可以通过在执行 gcloud 命令之前设置
GOOGLE_APPLICATION_CREDENTIALS
变量从控制台/终端进行身份验证的密钥。例如
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
资源