我打算在app引擎上使用JWT implementation(python,如果它有所不同),这将要求我有一个秘密字符串来签署数据。在某些时候,我希望在公共存储库中提供源(包括配置文件)。什么是外部化该秘密字符串的最佳方法,而不公开该值?
我可以想到3种选择,但似乎没有一种选择:
现在选项#3似乎是最合理的。对于我在这里尝试做什么,是否有更好的或推荐的方法?
答案 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