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



我正在开发一个类似CMDB的应用程序,在那里我必须存储我们的安全凭据(服务器用户名和密码…)

我正在寻找在有这些限制的情况下安全存储它们的最佳方法:

  • 大多数用户将无法访问所有凭据(取决于用户角色)
  • 我们不希望所有密码都用同一个密钥加密(已经尝试过了:当用户离开公司时,更改密钥很痛苦…)
  • 事实上,我们不希望任何私钥硬写在应用程序源中,甚至不希望存储在任何地方(在我们以前的版本中,私钥存储在我们的耳朵之间…)
  • 我们需要实现密码强度审计(即从脚本中解析解密的密码)
  • 决不能再出现我们无法访问凭据的情况(丢失密钥…)=>我们不希望未经授权的人查看凭据,但我们也不想丢失凭据=>解决此限制的方法可以是定期导出到物理储物柜

我不是在问应用程序(https,…)或数据库(没有公共访问,…)本身的安全问题,而是只问存储端(甚至可能不在数据库中…?加密文件或其他什么…):有可能阻止某人读取解密的凭据吗?

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

您要求做的事情的一般情况是不可能的。所有类型的现代密码学都是机械优势。也就是说,他们用一个小秘密来保护一个大秘密。如果你不能保证这个小秘密的安全,就没有安全可言。如果你希望能够逐个密码地给某人提供密码,那么你实际上是在给他们提供访问有问题物品所需的秘密——密码。

这个问题就是为什么存在联合身份系统(Kerberos/Active Directory等)系统——允许中央机器在不向所述用户暴露机密的情况下对用户进行身份验证。但是,使用联合身份系统需要在要登录的系统和身份服务之间进行协作。

最新更新