我有一个连接到数据库服务器的应用程序服务器.我希望能够为用户提供安装程序,并且在适度的舒适度下,相信数据库架构是安全的.
我明白,在不控制安装它的计算机的情况下,我必须接受一些风险 - 拥有正确工具和知识的坚定的人可以直接查看内存并提取信息.
最初我认为我的重点领域只是将凭证添加到安装程序,而不必在十六进制编辑器中轻松查看.
然而,当我开始研究时,我了解到对于PostGreSQL,即使我以静默方式安装数据库并且不向用户提供凭据 - 他们也可以简单地更改基于文本的配置文件(pg_hba.conf),以及重新启动服务器,无需凭据即可完全访问数据库.
这种情况是否在其他DBMS中得到保护?在这种情况下,大多数商业产品如何保护其模式?大多数产品会使用嵌入式数据库
编辑:我认为(可能错误的是)某些产品依赖于用户从未直接触及的数据库.我当然永远不会看到它们,因为它们是以用户不需要的方式设计的 - 可能使用嵌入式数据库.
据我记忆,没有商业产品可以"保护"他们的架构.您希望架构受到什么保护?
请考虑以下几点:
毕竟,唯一可以保护RDBMS中任何内容的人是数据库服务器管理员.你想要保护架构免受这个人的侵害吗?
如果我是客户并且我的架构中有我的数据,我不仅会喜欢,而且希望能够直接查看和使用它.
你真的需要保护你的关系设计吗?真的那么有趣吗?你发明了一些值得藏的东西吗?我真的不这么认为.如果你有,我会提前道歉.
编辑:附加评论:
我不关心我使用的产品的大多数数据库内部.这是另一个原因,我认为他们中的大多数都没有采取任何行动来保护他们.他们中的大多数都不是那么有趣.
一方面,我坚信用户不需要知道或关心数据库的内部.但在同一级别,作为开发人员,我认为不值得尝试保护他们.从用户那里隐藏它们,是的.保护他们免受直接访问,在大多数情况下,没有.而不是因为我认为保护您的架构是错误的.这是因为我认为这是一件非常困难的事情,作为开发人员,你不值得花时间.
但最后,与任何与安全相关的主题一样,唯一正确的答案是所涉及的风险与实施安全措施的成本之间的关系.
当前的数据库引擎(嵌入式或服务器式)不是为了容易隐藏数据库的模式而设计的,因此,对于大多数人来说,这样做的开发成本远大于所涉及的风险.
但你的情况可能会有所不同.