0

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

提前致谢!

4

2 回答 2

0

但我不确定应用程序何时会在云中运行,它将如何安全地访问“key.json”文件?

查看我在下面写的详细信息。选择环境后,您可能根本不需要使用服务帐户 JSON 文件,因为元数据服务器可用于为您的代码提供凭据。这是最好的情况和安全的。在我的个人网站上,我写了许多文章来展示如何创建、管理和存储 Google 凭据和机密。

还有一种方法可以在 python 中使用访问令牌来验证存储对象吗?

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

使用访问令牌直接验证应用程序

有三个项目需要考虑:

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

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

这意味着您的代码正在您的桌面上运行,甚至在 AWS 等其他云中运行。您有责任提供授权方法。主要有两种方法: 1)Service Account JSON 密钥文件;2) 谷歌 OAuth 用户授权。

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

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

身份验证入门

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

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

存储和检索实例元数据

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

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

于 2019-10-29T14:15:25.247 回答
-1

最佳实践是使用 OAuth 2.0 访问存储桶。如果您使用的是 Python 程序,请尝试使用服务帐户来访问存储 API。

https://cloud.google.com/storage/docs/authentication

于 2019-10-29T09:47:56.603 回答