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

问题描述 投票:3回答:3

我的Google App Engine应用程序包含我不想签入源控件(即Git)的特权凭据(如OAuth和cookie签名密钥)。

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

security google-app-engine configuration
3个回答
1
投票

我通常做的是将凭证存储在一个安全的存储库(一个只有我可以信任的超级用户可访问的文件)中,然后有一个构建后的脚本。 在源代码控制中,我在属性文件中有一个虚拟密码,然后在构建之后运行后构建脚本,并将虚拟密码替换为真实密码。 这样,密码不在源代码控制之下,而是出现在每次构建时。 这取决于自动构建/部署过程,但它非常有效。


0
投票

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

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

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

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

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


0
投票

将这些内容放入另一个文件/目录中,并使用.gitignore将其排除。

© www.soinside.com 2019 - 2024. All rights reserved.