【问题标题】:Splitting a mysql database for security拆分mysql数据库以确保安全
【发布时间】:2011-11-16 18:47:45
【问题描述】:

我多年来一直使用 sql(主要是 mysql),但没有达到专业标准,所以我正在寻找正确的方向。

我目前正在设计一个网络应用程序,它将在一组表格中收集用户的姓名/地址/电子邮件等,以及在另一组表格中收集其他个人信息。这些将最自然地驻留在一个数据库中,但我一直在考虑将用户联系信息拆分到单独服务器上的一个数据库中,并将所有其他信息拆分到另一个数据库/服务器中,理论上是黑客必须破坏这两个系统得到非常有用的东西。

我已经断断续续地搜索了几个星期,但到目前为止还没有发现这种类型的设计被讨论得太多。一般是这样做的吗?是不是矫枉过正?有没有一种设计方法可以解决它,还是我必须自己滚动它?

我确实找到了Is splitting databases a legitimate security measure?,我猜这是说这种方法可能有点矫枉过正。

【问题讨论】:

  • 当两个独立的数据库服务器可以入侵您的网络服务器并从那里提取数据库用户/通行证时,为什么还要入侵它们?
  • 感谢大家的回答。看起来我还有更多的安全阅读要做。

标签: mysql database-design security database-security


【解决方案1】:

我倾向于认为这是矫枉过正。

请查看我对这个问题的回答:Sharing users between 2 databases

请记住分别处理数据库设计数据访问 安全问题。数据访问安全不应导致不合逻辑 数据库设计中的选择。

【讨论】:

    【解决方案2】:

    恕我直言,这似乎是错误的。将数据拆分到 2 个 DB 只会增加复杂性,而不会带来合理的安全收益。

    我认为这是可以使用数据加密的地方。根据用户凭据生成加密密钥,并根据用户请求对敏感数据进行加密/解密。由于私人数据必须只显示给该用户,所以一切都应该没问题。

    【讨论】:

      【解决方案3】:

      这是我之前使用的一种方法:

      Server1:数据库 服务器2:SC

      DB 位于公众可以访问的网络域中,但无法访问 SC SC位于公众无法访问的网络域中,但可以访问SC

      数据库是您存储所有相关信息的地方,包括“真正重要的东西”。

      SC 在指定的时间间隔(我使用 5 秒)检查 DB 以查找它可能要监视的任何表中的任何新记录(有作业或计划任务)并加密重要信息。

      虽然我使用的是 SQL Server 2005 并且能够在两个域中工作(一个私有(内部)和一个公共(用​​于客户端访问),并且我刚刚共享的内容是精简的(删除了尽可能多的 MSSQL 专有部分) ),简化版本,我认为可以通过一些努力在 mysql 中重新创建类似的东西,特别是如果您可以将两个数据库托管在单独的物理机器上。

      虽然很多人也会认为这有点矫枉过正,但这个想法已经实现了。它的成本更高,并且在数据报告时间需要更多的工作,但客户很满意。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-13
        • 2012-09-21
        • 2022-01-12
        相关资源
        最近更新 更多