将敏感配置变量外部化为Config.groovy之外的.properties是否在Grails中提供了安全优势?

时间:2012-02-04 02:46:09

标签: grails

据我所知,在Grails中,默认配置变量存储在Config.groovy中,一旦部署,属性就包含在战争中。显然,如果您需要更改它们而不重新部署应用程序,这将导致问题。但是,我刚刚在Grails AWS插件文档中阅读了以下内容:

“根据亚马逊的推荐,您可以使用.properties文件来处理此插件的密钥和访问密钥。”

...

“有时,您仍然无权访问文件系统,但不希望在配置文件中打开您的凭据

(http://blanq.github.com/grails-aws/1.2.12.1/index.html)

在Config.groovy之外存储信用是否有某种安全优势?也许我错过了一些东西:/

3 个答案:

答案 0 :(得分:4)

有几个具体原因,您不希望直接在WAR中包含安全信息。

  1. 您可能正在与不应直接访问某些安全信息的外部开发人员或开发人员合作。
  2. 您可能正在处理只有少数人应该看到的敏感数据,甚至可能不是您自己。
  3. 您可能不会提前知道凭据。在其他人提供资源的环境中经常出现这种情况。
  4. 您可能希望构建单个WAR,并动态切换凭据,而无需重新编译整个应用程序,然后重新上载内容。
  5. 因此,它提供了一定程度的安全性,但在其他情况下也提供了很多便利。

答案 1 :(得分:1)

有时你甚至需要隐藏开发人员的一些信誉。例如,它可以是paypal密钥和外包团队(你从未见过)。因此,您可以将此配置存储在服务器(/etc/myapp/config.properties)上的某个位置,而无需将其访问权限提供给其他开发人员。

第二部分,关于'无权访问文件系统',意味着您可以在启动时,在命令行中指定此参数,而无需将其存储在任何位置。因此,即使任何有权访问服务器的人仍然无法查看凭据,至少在普通文件中

答案 2 :(得分:0)

我们使用外部属性文件来定义数据源详细信息,例如生产数据库用户名,密码,用户名等。

好处是 - 您不必签出代码并在生产服务器上安装Grails。您可以创建一个常见的war文件,上传并将其部署到生产服务器..