如何使用API-token在python google云库中授权

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

如何使用API-token进行授权? 我的代码

from google.auth.api_key import Credentials
from google.cloud.storage import Client

client = Client('my-project', Credentials('my-token'))
blobs = client.list_blobs('my-bucket')
for blob in blobs:
    print(blob.name)

加薪

google.api_core.exceptions.Unauthorized: 401 GET

如何正确执行此操作?

我无法使用 json 进行授权,因为它在 docker 容器中运行,并且在生产环境中我无法使用 json 挂载卷,只能在 envs 中挂载 API 令牌。

python python-3.x google-cloud-storage
1个回答
0
投票

您无法使用 API 密钥来验证(!)对 Google Cloud Storage 的请求。

Google Cloud Storage 需要 OAuth 来验证请求,并需要 IAM 来授权“事物”(用户、组、服务帐户等)。

此身份验证要求的例外情况是对于您无法强制执行 API 密钥要求的公共(未经身份验证)对象。

通常您不想使用 API 密钥,请参阅 Google 的 使用 API 密钥进行身份验证,以很好地解释为什么会这样。

可以授权在容器和生产环境中运行的应用程序,因为您通常在这些环境中将JSON密钥挂载为字符串。 Google 通常不鼓励生成密钥。

请参阅应用程序默认凭据 (ADC) 了解一般方法。

以下情况,有更具体的解决方案。如果您的生产系统是:

  1. Google Cloud 计算服务(Cloud Run、Compute Engine、Kubernetes Engine* 等),ADC 提供了一种从平台的元数据服务自动获取凭证的机制。
  2. Kubernetes Engine,有一种替代方案,“配置更困难但更易于使用”机制,称为 GKE 的工作负载身份联合
  3. off-GCP,但 AWS、Azure 等,您可以使用 Workload Identity Federation
© www.soinside.com 2019 - 2024. All rights reserved.