Security 使用Google App Engine JDK在版本控制之外管理安全配置
我的GoogleAppEngine应用程序包括我不想签入源代码管理(即Git)的特权凭证(如OAuth和cookie签名密钥)Security 使用Google App Engine JDK在版本控制之外管理安全配置,security,google-app-engine,configuration,Security,Google App Engine,Configuration,我的GoogleAppEngine应用程序包括我不想签入源代码管理(即Git)的特权凭证(如OAuth和cookie签名密钥) 我曾考虑将它们作为系统属性或环境变量存储在appengine web.xml文件中,但是该文件包含许多我确实希望版本的其他内容。哪里是存储“机密”应用程序数据的好地方,以便我可以轻松地将其从源代码管理中排除?将这些内容放入另一个文件/目录,并使用将其排除。gitignore我通常做的事情将凭据存储在安全的存储库中(只有超级用户才能访问的文件,我可以信任该文件)然后有一个
我曾考虑将它们作为系统属性或环境变量存储在
appengine web.xml
文件中,但是该文件包含许多我确实希望版本的其他内容。哪里是存储“机密”应用程序数据的好地方,以便我可以轻松地将其从源代码管理中排除?将这些内容放入另一个文件/目录,并使用将其排除。gitignore
我通常做的事情将凭据存储在安全的存储库中(只有超级用户才能访问的文件,我可以信任该文件)然后有一个构建后脚本。在源代码管理中,我在属性文件中有一个伪密码,然后生成后脚本在生成后运行,并用真实密码替换伪密码。这样一来,密码就不在源代码管理中,而是在每次构建时显示出来。这确实取决于自动构建/部署过程,但它非常有效。对于Java,我推荐spring boot的策略。这个想法是一堆配置源,上面的配置源覆盖下面的配置源
~/.myapp/application.yml
。只有用户才能读取该文件
对于您的问题,非机密的、版本控制的属性直接放在源代码中(上面的第5条)。机密也可以放在5中,但带有伪值。实际机密在运行时从1、2、3或4覆盖虚拟值
您可以使用spring boot,也可以按照相同的策略编写自己的代码。我已经知道
.gitignore
。我想找出这方面的最佳做法。我应该将这些内容存储在一个未版本的Java文件中吗?是否有方法包含来自appengine web.xml
的另一个文件?我不知道这种情况下的最佳做法,但我会选择最适合您要存储的数据的文件格式。可能是从应用程序加载的XML文件。您好@mustpax,您找到方法了吗?