我见过这样的设置,其中受密码保护的数据库与以纯文本形式保存所述数据库凭据的应用程序位于同一服务器上。
这样的设置相对于简单的未受保护的数据库有什么好处?
除了一些混淆之外,必须同时为这些凭据配置数据库和应用程序似乎只会增加复杂性,而不是真正的安全性。有权访问服务器的攻击者总是可以在应用程序的配置文件中找到凭据。
编辑: 我说的是只在同一台机器上可见的数据库,而不是暴露在外面。
我见过这样的设置,其中受密码保护的数据库与以纯文本形式保存所述数据库凭据的应用程序位于同一服务器上。
这样的设置相对于简单的未受保护的数据库有什么好处?
除了一些混淆之外,必须同时为这些凭据配置数据库和应用程序似乎只会增加复杂性,而不是真正的安全性。有权访问服务器的攻击者总是可以在应用程序的配置文件中找到凭据。
编辑: 我说的是只在同一台机器上可见的数据库,而不是暴露在外面。
如果您可以安全地访问保存明文凭据的应用程序配置文件,则密码保护数据库是有意义的。当您仅限制对应用程序帐户的读取访问权限时,攻击者需要 root 访问权限才能查看密码。如果他破坏了任何其他(特权较低的)帐户,他将无法访问数据库。
这是一种洋葱保护(也称为“分层安全”或“深度防御”,例如,在 SANS 的“分层安全:为什么有效”白皮书中)。如果攻击者可以访问机器,他就无法获得完整的数据库访问权限。应用程序应该具有仅限于所需表的受限访问,并且不需要写入的所有内容都应该是只读的。任何更高的访问权限都应该需要一个从未在应用程序中使用过的不同密码。
这样做的好处是,拥有对数据库的网络访问权限但没有对服务器的文件系统访问权限的攻击者将无法实际登录数据库。
这是否提供额外的安全性将取决于您的威胁场景和您的安全目标。我知道至少有两种情况可以增加安全性: