【问题标题】:Authenticate Google Storage object with access token in python在 python 中使用访问令牌对 Google Storage 对象进行身份验证
【发布时间】:2019-10-29 07:50:21
【问题描述】:

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

提前致谢!

【问题讨论】:

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


    【解决方案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)Service Account JSON 密钥文件; 2) Google OAuth 用户授权。

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

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

    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 帐户授权服务的网络服务器类型的服务。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-02-03
        • 2017-04-11
        • 2014-10-30
        • 2023-01-29
        • 2022-01-28
        • 2014-02-11
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多