如何在数据库中存储安全凭证

时间:2012-07-24 17:24:42

标签: database security passwords credentials cmdb

我正在开发类似CMDB的应用程序,我必须存储我们的安全凭证(服务器用户名和密码......)。

我正在寻找安全存储它们的最佳方法:

  • 大多数用户无权访问所有凭据(取决于用户角色)
  • 我们不希望所有密码都使用相同的密钥进行加密(已经尝试过:当用户离开公司时,更改密钥会很痛苦......)
  • 事实上,我们不希望任何私钥难以在应用程序源中编写,甚至不存储在任何地方(在我们以前的版本中,私钥存储在我们耳中......)
  • 我们需要实现密码强度审核(即从脚本解析解密的密码)
  • 不能再有任何我们无法访问我们的凭据的情况(丢失密钥,...)=>我们不希望未经授权的人看到它们,但我们也不想让它们松散=>这种约束的解决方案可以定期导出到物理储物柜......

我不是要求应用程序(https,...)或数据库(没有公共访问,......)安全问题本身,而只是关于存储方面(甚至不能在数据库中......?加密)文件或其他东西...):是否有可能阻止某人,甚至访问应用程序代码或数据库内容(最糟糕的情况),能够读取解密的凭据?

我知道我要求一些神奇的解决方案,但我想知道它是否存在; o)

1 个答案:

答案 0 :(得分:2)

您要求做的一般情况是不可能的。所有类型的现代密码学都是mechanical advantage。也就是说,他们使用一个小秘密来保护更大的秘密。如果你不能保守小秘密,那就没有安全感了。如果您希望能够通过密码将密码密码提供给某人,那么您实际上是在向他们提供秘密 - 密码 - 他们需要访问相关项目。

这就是为什么存在联合身份系统(Kerberos / Active Directory /等)系统的原因 - 允许中央机器对用户进行身份验证而不向所述用户泄露秘密。但是,使用联合身份系统需要系统与登录系统和身份服务之间的合作。