Security 使用Google App Engine JDK在版本控制之外管理安全配置

Security 使用Google App Engine JDK在版本控制之外管理安全配置,security,google-app-engine,configuration,Security,Google App Engine,Configuration,我的GoogleAppEngine应用程序包括我不想签入源代码管理(即Git)的特权凭证(如OAuth和cookie签名密钥) 我曾考虑将它们作为系统属性或环境变量存储在appengine web.xml文件中,但是该文件包含许多我确实希望版本的其他内容。哪里是存储“机密”应用程序数据的好地方,以便我可以轻松地将其从源代码管理中排除?将这些内容放入另一个文件/目录,并使用将其排除。gitignore我通常做的事情将凭据存储在安全的存储库中(只有超级用户才能访问的文件,我可以信任该文件)然后有一个

我的GoogleAppEngine应用程序包括我不想签入源代码管理(即Git)的特权凭证(如OAuth和cookie签名密钥)


我曾考虑将它们作为系统属性或环境变量存储在
appengine web.xml
文件中,但是该文件包含许多我确实希望版本的其他内容。哪里是存储“机密”应用程序数据的好地方,以便我可以轻松地将其从源代码管理中排除?

将这些内容放入另一个文件/目录,并使用
将其排除。gitignore
我通常做的事情将凭据存储在安全的存储库中(只有超级用户才能访问的文件,我可以信任该文件)然后有一个构建后脚本。在源代码管理中,我在属性文件中有一个伪密码,然后生成后脚本在生成后运行,并用真实密码替换伪密码。这样一来,密码就不在源代码管理中,而是在每次构建时显示出来。这确实取决于自动构建/部署过程,但它非常有效。

对于Java,我推荐spring boot的策略。这个想法是一堆配置源,上面的配置源覆盖下面的配置源

  • 命令行参数
  • 系统属性
  • 环境变量
  • 本地配置文件(application.yml或application.properties)
  • 类路径上的配置文件
  • 编号4通常位于用户主目录中的隐藏文件夹中,例如
    ~/.myapp/application.yml
    。只有用户才能读取该文件

    对于您的问题,非机密的、版本控制的属性直接放在源代码中(上面的第5条)。机密也可以放在5中,但带有伪值。实际机密在运行时从1、2、3或4覆盖虚拟值


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

    我已经知道
    .gitignore
    。我想找出这方面的最佳做法。我应该将这些内容存储在一个未版本的Java文件中吗?是否有方法包含来自
    appengine web.xml
    的另一个文件?我不知道这种情况下的最佳做法,但我会选择最适合您要存储的数据的文件格式。可能是从应用程序加载的XML文件。您好@mustpax,您找到方法了吗?