我是谷歌云的新手。我正在尝试访问谷歌存储桶来上传文件。我使用 Google Storage 对象在 Python 中以编程方式访问存储桶。我可以使用“key.json”对存储对象进行身份验证。但我不确定应用程序何时会在云中运行,它将如何安全地访问“key.json”文件?还有一种方法可以在 python 中使用访问令牌来验证存储对象吗?
提前致谢!
我是谷歌云的新手。我正在尝试访问谷歌存储桶来上传文件。我使用 Google Storage 对象在 Python 中以编程方式访问存储桶。我可以使用“key.json”对存储对象进行身份验证。但我不确定应用程序何时会在云中运行,它将如何安全地访问“key.json”文件?还有一种方法可以在 python 中使用访问令牌来验证存储对象吗?
提前致谢!
但我不确定应用程序何时会在云中运行,它将如何安全地访问“key.json”文件?
查看我在下面写的详细信息。选择环境后,您可能根本不需要使用服务帐户 JSON 文件,因为元数据服务器可用于为您的代码提供凭据。这是最好的情况和安全的。在我的个人网站上,我写了许多文章来展示如何创建、管理和存储 Google 凭据和机密。
还有一种方法可以在 python 中使用访问令牌来验证存储对象吗?
所有访问均通过 OAuth 访问令牌进行。以下链接显示了使用元数据服务器的详细信息,我将在下面详细介绍。
有三个项目需要考虑:
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 帐户授权服务的网络服务器类型的服务。
最佳实践是使用 OAuth 2.0 访问存储桶。如果您使用的是 Python 程序,请尝试使用服务帐户来访问存储 API。