【问题标题】:Recommended approach to externalize "secret" configuration in app engine在应用引擎中外部化“秘密”配置的推荐方法
【发布时间】:2014-10-13 13:23:42
【问题描述】:

我计划在应用程序引擎(python,如果它有区别的话)上使用JWT implementation,这将要求我有一个秘密字符串来对数据进行签名。在某些时候,我希望在公共存储库中提供源(包括配置文件)。在不公开值的情况下,将该秘密字符串外部化的最佳方法是什么?

我能想到 3 个选项,但没有一个看起来很棒:

  1. 在 GAE 控制台中设置环境变量。 (不存在)
  2. 保留私有内容的单独存储库并在部署时与脚本混合。 (看起来很笨重)
  3. 创建我自己的“环境变量”实体并将数据保存在数据存储中。 (看不到手动将数据放入数据存储区的控制台屏幕)

目前选项#3 似乎是最合理的。有没有更好或推荐的方法来解决我在这里尝试做的事情?

【问题讨论】:

    标签: python google-app-engine configuration


    【解决方案1】:

    您确实想将秘密与数据分开。如果您要签署数据,我真的会推荐#1(或真正的混合体)。您可以在 app.yaml 中定义 environment_variables 部分:https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Defining_environment_variables

    env_variables:
       APPLICATION_SECRET: 'secret_goes_here'
    

    然后,您需要禁止应用程序的代码下载作为保护您的秘密的额外步骤:https://cloud.google.com/appengine/docs/python/tools/uploadinganapp#Python_Downloading_source_code

    最后,如果您真的不想使用环境变量,您可以使用类似于为 Google API 客户端库完成的 client_secrets.json 的方法:https://developers.google.com/api-client-library/python/guide/aaa_client_secrets

    【讨论】:

    • 谢谢,这正是我正在寻找的建议。我也没有意识到 env 部分存在于 yaml 中。
    • 没问题,只要确保在GAE中限制访问源代码并禁止代码下载即可。
    猜你喜欢
    • 2014-09-12
    • 2016-10-12
    • 2018-09-03
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2016-10-01
    相关资源
    最近更新 更多