在不使用 gcloud 实用程序的情况下从 docker 容器访问 GCP 云存储桶

问题描述

我有一个需要访问 GCP 存储桶的 docker 文件。我不想使用 SA 和 gcloud 实用程序对 GCP 进行身份验证(gcloud auth activate-service-account <<gcp account>> --key-file=<<serviceaccount>>.json 由于安全暴力。

我想使用不同的身份验证方法以符合安全要求。

有人可以帮忙吗?

解决方法

您可以尝试API 身份验证来访问 GCP 存储桶,而不是使用“gsutil”和客户端库身份验证。

要使用 OAuth 2.0 向 Cloud Storage XML APIJSON API 发出请求,请在每个需要身份验证的请求的 Authorization 标头中包含您的应用程序的访问令牌。您可以从 OAuth 2.0 Playground 生成访问令牌。

Authorization: Bearer OAUTH2_TOKEN

使用对象资源的列表方法。

GET /storage/v1/b/example-bucket/o HTTP/1.1

Host: www.googleapis.com

Authorization: Bearer’ ya29.AHES…….gSwg’

要授权来自命令行的请求或用于测试,您可以使用带有以下语法的 curl 命令:

curl -H "Authorization: Bearer OAUTH2_TOKEN "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o"

对于本地测试,您可以使用“gcloud auth application-default print-access-token”命令生成令牌。

由于管理和刷新访问令牌的复杂性以及直接处理加密应用程序时的安全风险,我们强烈建议您使用经过验证的 client library

Cloud storage authentication 了解更多信息。