我是Google Cloud的新手。我正在尝试访问Google存储桶以上传文件。我使用Google Storage对象在Python中以编程方式访问存储桶。我可以使用“ key.json”对存储对象进行身份验证。但是我不确定应用程序何时将在云中运行,它将如何安全地访问“ key.json”文件?还有没有一种方法可以使用python中的访问令牌来验证存储对象?
谢谢!
答案 0 :(得分:1)
但是我不确定应用程序何时将在云中运行 安全地访问“ key.json”文件?
查看下面我写的详细信息。选择环境后,您可能根本不需要使用服务帐户JSON文件,因为元数据服务器可用于为您的代码提供凭据。这是最好的情况,也是安全的。我在personal website上写了许多文章,展示了如何创建,管理和存储Google凭据和机密。
还有一种方法可以使用访问令牌对存储对象进行身份验证 在python中?
所有访问均通过OAuth访问令牌进行。以下链接显示了使用元数据服务器的详细信息,我将在下面详细介绍。
Authenticating applications directly with access tokens
要考虑三个项目:
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。