【问题标题】:How should I handle private key files in Google AppEngine for service accounts?我应该如何处理 Google AppEngine 中服务帐户的私钥文件?
【发布时间】:2018-06-17 23:09:30
【问题描述】:

我需要在我的 Google AppEngine 项目(称为 Home)中使用另一个 Google AppEngine 项目(称为 Away)的服务帐户才能访问其 Firestore数据库。为此,我能找到的所有文档都告诉我从 Away 下载服务帐户的私钥并将其存储为“in a location accessible to your application”。我找不到任何地方可以准确地记录这意味着什么。

作为部署Home的一部分,我是否需要将.json 私钥文件上传到Google AppEngine 服务器?如何在 Google AppEngine 的环境中安全地做到这一点?我在任何地方都找不到有关此的文档。

或者,有没有办法在 Python 中使用 JSON 字符串而不是文件来创建 Firestore 客户端?这样我就可以将 JSON 私钥存储在 Home 上的数据存储区中。

【问题讨论】:

    标签: python security google-app-engine deployment google-cloud-firestore


    【解决方案1】:

    通常,GAE 中“您的应用程序可访问”的文件意味着该文件是应用程序代码的一部分并在部署期间与应用程序代码一起上传。

    您可以在Preparing to make an authorized API call中找到使用.json私钥文件的示例:

    如果使用 JSON 文件:

    from oauth2client.service_account import ServiceAccountCredentials
    
    scopes = ['https://www.googleapis.com/auth/sqlservice.admin']
    
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        '/path/to/keyfile.json', scopes=scopes)
    

    /path/to/keyfile.json 相对于相应的 GAE 服务目录(包含服务的 .yaml 文件的目录)

    【讨论】:

    • 这是我们最终使用的方法。我们将密钥文件放在被 git 忽略的 secrets/ 目录中。这确实意味着任何正在部署的人都需要确保下载他们自己的证书文件……但我们通过限制谁可以部署来解决这个问题。
    • @dan-cornilescu 或@staunch,部署后的实际路径是什么?我尝试了keyfile.json/keyfile.json,但这些都不起作用。
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多