google-cloud-platform - 使用 python 中的访问 token 验证 Google Storage 对象

标签 google-cloud-platform google-cloud-functions google-cloud-storage

我是 Google Cloud 新手。我正在尝试访问谷歌存储桶来上传文件。我使用 Google Storage 对象在 Python 中以编程方式访问存储桶。我可以使用“key.json”来验证存储对象。但我不确定应用程序何时在云中运行它将如何安全地访问“key.json”文件?还有一种方法可以使用 python 中的访问 token 来验证存储对象吗?

提前致谢!

最佳答案

But I am unsure when the application will run in cloud how will it access 'key.json' file securely ?

查看我在下面写的详细信息。选择环境后,您可能根本不需要使用服务帐户 JSON 文件,因为元数据服务器可用于为您的代码提供凭据。这是最好的情况并且安全。在我的personal website ,我撰写了许多文章,介绍如何创建、管理和存储 Google 凭据和 secret 。

Also is there a way to authenticate storage object using access token in python ?

所有访问均通过 OAuth 访问 token 进行。以下链接显示了使用元数据服务器的详细信息,我将在下面详细介绍。

Authenticating applications directly with access tokens

需要考虑三项:

  1. 我的代码未在 Google Cloud 中运行
  2. 我的代码在 Google Cloud 的“计算”类型服务上运行,可以访问元数据服务器
  3. 我的代码在 Google Cloud 中运行,无法访问元数据服务器。

1) 我的代码未在 Google Cloud 中运行

这意味着您的代码正在桌面上运行,甚至在另一个云(例如 AWS)中运行。您有责任提供授权方法。主要有两种方法:1)服务帐户 JSON key 文件; 2) Google OAuth 用户授权。

服务帐户 JSON key 文件 这就是您现在使用的 key.json。凭据存储在文件中并用于生成 OAuth 访问 token 。您必须保护该文件,因为它包含您的 Google Cloud secret 。您可以直接在代码中指定 key.json 或通过环境变量 GOOGLE_APPLICATION_CREDENTIALS

Google OAuth 用户授权 此方法要求用户登录 Google 帐户,请求 Cloud Storage 的 OAuth 范围。最终结果是一个 OAuth 访问 token (就像服务帐户),用于授权访问 Cloud Storage。

Getting Started with Authentication

2) 我的代码在 Google Cloud 中的“计算”类型服务上运行,可以访问元数据服务器

注意“元数据”服务器这个词。对于 Google Cloud 计算服务,Google 提供了一个元数据服务器,为在该计算服务(Compute Engine、Cloud Functions、Cloud Run 等)上运行的应用程序提供凭据。如果您的代码使用 Google SDK 客户端库,这些库将自动为您选择凭据。元数据服务器可以被禁用(通过角色/范围删除拒绝访问),因此您需要评估您正在运行的内容。

Storing and retrieving instance metadata

3) 我的代码在 Google Cloud 中运行,无法访问元数据服务器。

这与#1 类似。不过,现在您只能使用服务帐户,除非这是可以向用户提供 Google 帐户授权服务的网络服务器类型的服务。

关于google-cloud-platform - 使用 python 中的访问 token 验证 Google Storage 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603211/

相关文章:

mysql - 在启动默认 SQL 代理连接时更改默认 MySQL 或 PostgreSQL 端口号

javascript - Firebase 函数无法在应用程序中使用 oncall 函数,返回内部错误

firebase - 如何从云函数向客户端返回错误代码 'auth/email-already-exists'?

Android gsutil 工具不工作

firebase - 连接到 Firebase 存储桶

google-cloud-platform - 使用来自上一步的 Json 对象的云工作流 firestore 连接器在 Firestore 中插入数据时出现问题,这是一个云函数

node.js - 云任务 - 创建任务 - 错误 : No connection established, 代码:14

ruby-on-rails - 如何为查询定义命名空间

database - 在哪里存储和检索 Google Cloud Functions API 的数据?

google-cloud-storage - 通过FTP自动上传远程文件到Google云存储?