在app引擎中外部化“秘密”配置的推荐方法

时间:2014-10-13 13:23:42

标签: python google-app-engine configuration

我打算在app引擎上使用JWT implementation(python,如果它有所不同),这将要求我有一个秘密字符串来签署数据。在某些时候,我希望在公共存储库中提供源(包括配置文件)。什么是外部化该秘密字符串的最佳方法,而不公开该值?

我可以想到3种选择,但似乎没有一种选择:

  1. 在GAE控制台中设置环境变量。 (不存在)
  2. 保留私人内容的单独回购,并在部署时与脚本混合使用。 (似乎笨重)
  3. 创建我自己的"环境var"实体并将数据保存在数据存储区中。 (不要看控制台屏幕以手动将数据放入数据存储区)
  4. 现在选项#3似乎是最合理的。对于我在这里尝试做什么,是否有更好的或推荐的方法?

1 个答案:

答案 0 :(得分:2)

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

中定义environment_variables部分
env_variables:
   APPLICATION_SECRET: 'secret_goes_here'

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

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