2012-01-17 67 views
3

我的Google App Engine应用程序包括我不想签入源代码管理(即Git)的特权凭证(如OAuth和cookie签名密钥)。使用Google App Engine管理版本控制之外的安全配置JDK

我曾考虑将这些文件作为系统属性或环境变量存储在appengine-web.xml文件中,但是该文件包含了许多其他我想要版本的内容。哪里可以存储“秘密”应用程序数据的好地方,以便我可以轻松地将其从源代码控制中排除?

+0

嗨@mustpax,你有没有找到办法做到这一点? – Jaap 2015-09-12 17:03:06

回答

0

把这些东西放到另一个文件/目录中,并用.gitignore排除它们。

+0

我已经了解'.gitignore'。我想找出围绕这一领域的最佳做法。我应该将这些东西存储在未版本化的Java文件中吗?有没有办法从'appengine-web.xml'包含另一个文件? – mustpax 2012-01-17 23:59:10

+0

我不知道这种情况下的最佳做法,但我会选择适合您最想存储的数据的文件格式。可能是您从应用程序加载的XML文件。 – copy 2012-01-18 17:35:25

1

我通常会将凭据存储在安全存储库(只能由超级用户访问的文件中),然后生成后生成脚本。在源代码控制中,我在属性文件中有一个虚拟密码,然后在生成后运行后构建脚本,并将虚拟密码替换为真实密码。这样密码就不在源代码控制中,而是在每次构建时显示出来。这确实取决于自动构建/部署过程,但它非常有效。

0

对于Java,我推荐使用spring-boot的策略externalized configuration。这个想法是一堆配置资源,其中最重要的是覆盖下面的配置资源。

  1. 命令行参数
  2. 系统性能
  3. 环境变量
  4. 本地配置文件(application.yml或application.properties)
  5. 配置文件在类路径

无。4通常位于用户主目录的隐藏文件夹中,例如~/.myapp/application.yml。只有用户可以读取该文件。

对于你的问题,非秘密的,版本控制的属性直接放在源代码中(上面的第5项)。秘密也可以放在5中,但是有虚拟值。真正的秘密在运行时从1,2,3或4覆盖虚拟值。

您可以使用spring-boot或按照相同的策略编写自己的代码。