我们拥有存储在某个配置文件中的数据库的登录凭据,该配置文件已检入codebase存储库。通常我们会在开发环境中拥有开发凭据,并且会签入。在生产中部署时,可以手动将其替换为生产登录凭据。
我想知道保持安全的最佳做法是什么。我们做得对吗?
答案 0 :(得分:2)
是的,确保您的生产凭据不受源代码管理。
锁定生产用户帐户,以便只有该用户可以查看/更改配置文件,例如在unix上,权限应该是
-rw -------
即使是它所在的目录也应该禁止未经授权的用户使用。
限制对生产服务器的访问:尽可能少的用户帐户,审核,物理访问限制,例如锁定的服务器机房等。
编辑:为了澄清,我建议保持凭证不受源代码控制的理由通常是,特别是在大型公司中,开发团队不允许知道/使用生产凭证。在某些地方,开发人员甚至登录到生产数据库可能会被解雇。特别是如果他们打破了一些东西!
此外,其他团队/部门的开发人员可能拥有源代码控制访问权限,这可能会严重影响生产数据库。当然,如果你是一个3人开发组织,这不是一个问题。
答案 1 :(得分:1)
考虑使用可使用JNDI访问的DataSource
,而不是让应用创建自己的数据库连接。这会完全从应用程序中删除凭据,并将问题转移到如何保护JNDI中的DataSource
?这通常使问题更容易解决。例如,如果您的应用程序部署到的应用程序服务器上配置了DataSource
,那么它的安全性已经被用于保护应用服务器的身份验证系统保护。
答案 2 :(得分:0)
如果您的存储库是内部的,并且不与任何不能访问这些凭据的人共享,那么您的方法就可以了。
然而,事情可能会发生变化,在这些问题上,偏执是值得的。我通常做的是在源代码控制中保留一个空的框架配置文件(具有不同的扩展名或其他东西),然后让源代码控制忽略正确的配置文件。这样,在从源代码控制部署新版本时,它不会被覆盖。
此外,Brians建议尽可能限制事情是好建议!