代码之家  ›  专栏  ›  技术社区  ›  pc1oad1etter

哪种DBMS适合在“野外”安装时保持模式私有

  •  0
  • pc1oad1etter  · 技术社区  · 15 年前

    我明白,如果不控制安装它的计算机,我将不得不接受一些风险——一个拥有正确工具和知识的坚定的人可以直接查看内存并提取信息。

    此场景在其他DBMS中是否安全?在这种情况下,大多数商业产品如何保护其模式?大多数产品会使用嵌入式数据库吗?


    编辑:我假设(可能是错误的)一些产品依赖于用户从未直接接触过的数据库。当然,我从来没有见过他们,因为他们的设计方式让用户不需要——可能是使用嵌入式数据库。

    6 回复  |  直到 15 年前
        1
  •  6
  •   Sergio Acosta    15 年前

    据我记忆所及,没有任何商业产品 “保护”

    考虑以下几点:

    • 毕竟,唯一能够保护RDBMS中任何内容的人是数据库服务器管理员。你想保护模式不受此人攻击吗?

    • 如果我是一名服装设计师 我的数据

    • 您真的需要保护您的关系设计吗?真的那么有趣吗?你发明了值得隐藏的东西吗?我真的不这么认为。如果你有,我提前道歉。


    我不关心我使用的产品的大多数数据库内部。这是另一个原因,我认为他们中的大多数人没有采取任何行动来保护他们。他们中的大多数人都没有那么有趣。

    一方面,我坚信用户不需要知道或关心数据库的内部结构。但在同一层面上,作为一名开发人员,我认为保护他们是不值得的。对用户隐藏它们,是的。保护它们不受直接访问,在大多数情况下,不是因为我认为保护您的模式是错误的。这是因为我认为这是一件非常困难的事情,不值得你作为一名开发人员花费时间。

    风险 涉及的对 成本

    当前的数据库引擎,嵌入式的或服务器式的,并不是为了容易隐藏数据库的模式而设计的,因此,对于大多数人来说,这样做的开发成本远远大于所涉及的风险。

    但你的情况可能不同。

        2
  •  2
  •   David    15 年前

    大多数商业产品不保护其模式。他们分为两大阵营之一:

    或者他们正在为产品的关键组件(如工资单系统)使用企业级数据库,在这种情况下,不会试图隐藏模式/数据。在大多数情况下,客户都需要对数据库进行控制—配置数据库的备份方式,创建群集环境,等等。

        3
  •  1
  •   bgiles    15 年前

    你想解决什么问题?没有什么能阻止DBA*对标准数据库做任何他想做的事情,正如其他人指出的那样,干扰站点特定的需求(如备份和数据库升级)是非常有害的。您最多可以加密数据库的内容,但即使这样,您也必须为应用程序提供一个解密密钥,以便实际运行,而一个有动机且怀有敌意的DBA可能会破坏它。

    毫无疑问,军方和情报机构都有数据库,甚至连模式都是高度机密的,但我不知道他们是否受到技术手段的保护,或者仅仅是持枪的大个子。

    (*)DBA或系统管理员能够修改pg_hba.conf等文件。

        4
  •  0
  •   recursive    15 年前

    大多数商业产品是如何销售的 在这种情况下保护它们的模式

    我不相信大多数商业产品会做任何事情来保护它们的模式。

        5
  •  0
  •   MaD70    15 年前

    当某个嵌入式DBMS用户可以物理访问运行该DBMS的机器时,该用户如何阻止该用户修改其存储(非嵌入式硬件上下文中的文件)? Security through obscurity 这是一个冒险的提议。

        6
  •  0
  •   Bob Aman    15 年前

    这种想法将面临与DRM相同的问题。你不能阻止客户访问,你只会给你的客户带来普遍的痛苦。不要这样做。

    SQLite将其整个数据库格式封装到一个文件中,您可以在适当的位置对其进行加密和解密。当然,缺陷在于用户现在就需要使用数据库的密钥,而唯一的方法是你把它交给他们,可能是在编译时硬编码(由于模糊性带来的安全性)或电话回家方案(这是一个坏主意的全部原因)。另外,现在他们会恨你,因为你阻止了任何有用备份系统的尝试,而且他们的启动性能很差。

    如果它对您来说真的那么重要,那么请改为使用托管应用程序。