使用python中的访问令牌对Google Storage对象进行身份验证

时间:2019-10-29 07:50:21

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

Authenticating applications directly with access tokens

要考虑三个项目:

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

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

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

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

指定GOOGLE_APPLICATION_CREDENTIALS

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

Getting Started with Authentication

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

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

Storing and retrieving instance metadata

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

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

答案 1 :(得分:0)

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

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