【问题标题】:Should SQL Server be on the same machine as your IIS installation? [closed]SQL Server 是否应该与您的 IIS 安装在同一台机器上? [关闭]
【发布时间】:2010-09-21 10:48:42
【问题描述】:

我正在收听第 19 期播客,Joel 和 Jeff 正在争论在与您的 IIS 安装相同的机器上运行 SQL Server。我不得不说,这听起来像是 Jeff 对 Joel 弃牌了,但话又说回来,我只是在猜测哪个是哪个。 ;)

各有什么优缺点?哪个更好?

我通常单独运行它们(Joel 的偏好),但我可以看到 Jeff 的观点,即两者之间的距离更近。

【问题讨论】:

    标签: sql-server iis windows-server-2003


    【解决方案1】:

    对于非常敏感的站点,在它们之间使用防火墙的独立服务器的优势可能很有用,但它带来了许多问题。

    1. 拆分 IIS 上的查询性能 - 由于需要通过网络传递数据,SQL 服务器运行速度可能非常慢,即使服务器相距 2 英尺,DNS 仍然可能是一个因素,因此可能需要做一些工作才能获得一个应用程序也可以拆分。
    2. 管理。这可能很明显,但它的 2 个服务器、2 个 Windows 许可证和所涉及的管理以及穿越防火墙的复杂性。

    拆分服务器建议:

    1. 在服务器之间安装千兆 LAN。
    2. 优化查询以作为存储过程运行
    3. 优化查询以仅返回最少量的数据。
    4. 确保服务器间寻址使用 IP 地址或有效的 DNS 查找。
    5. 为 SQL 负载提供足够的临时结果。

    【讨论】:

      【解决方案2】:

      出于安全目的,最好将 Web 和数据库机器分开,最好在两者之间设置防火墙。 Web 服务器向整个世界公开。不幸的是,有些人以窃取或破坏这些服务器上包含的信息为乐。

      然后是性能方面。众所周知,SQL Server 喜欢内存。 IIS 也是如此,尤其是当网站大量使用缓存和会话信息时。所以你在这里也有潜在的冲突。为 SQL Server 配备一台专用机器显然比让一台机器完成所有负载要好。

      然后,分离允许更容易地识别调整的需要和调整单个硬件组件的能力。

      总而言之,一台足够强大的机器可以在实时环境中同时满足 IIS 和 SQL Server 的需求不一定比针对每台服务器的特定要求指定的两台机器便宜 . (Jeff Atwood 在其中一个播客中提到,升级一台机器的成本与购买第二台机器的成本相同)

      【讨论】:

        【解决方案3】:

        @MarkR

        将 SQL Server 移动到另一个盒子确实增强了安全性,这与暴露的攻击面有关。

        Web 服务器暴露于来自 Internet 的恶意访问。人们希望它永远不会发生,但已经存在(并且将来可能存在)漏洞,可以通过穿越防火墙的格式错误的请求加以利用。

        利用其中一个漏洞可能导致任意代码能够执行。

        如果网络服务器以这种方式受到威胁,那么在该机器上运行的任何其他东西现在都容易受到攻击,并且漏洞利用软件可能会在特权环境中运行。受感染机器的攻击面要大得多。

        如果 SQL Server 安装在同一台机器上,任何数据库都容易受到攻击。

        现在,如果 SQL Server 安装在单独的计算机上,则只能通过其公共接口访问它本身。数据库的附加表面仅限于该接口。因此,要破坏数据库,您现在必须首先破坏 Web 服务,然后是 SQL Server。这比将它们放在同一台机器上要困难得多。

        进一步扩展原理,这也是使用存储过程的一个论据。如果 Web 服务器只能使用存储过程访问数据库服务器,则接口以及攻击面都会受到极大限制。如果 Web 服务器能够对数据库服务器执行任意 SQL,那么攻击面会再次变得更大,并且对数据的风险也会大大增加。

        在数据有价值的系统中,这些风险虽然相对较小,但却非常真实,确定此类风险的业务风险是解决方案设计的一个重要方面。

        【讨论】:

          【解决方案4】:

          将它们放在同一台机器上:

          • 减少它们之间的延迟 - 因此,如果您有很多简单的查询,这可以提高性能
          • 让您的开发和性能测试更容易,因为您可以使用单个机器(或 VM)来完成它

          如果应用程序不需要冗余并且不需要横向扩展,那么将它们放在同一个盒子上是绝对的胜利 - 它更容易维护。

          我认为安全论点没有任何意义——我认为将它们分开没有任何安全优势。 Web 服务器需要对数据库有足够的访问权限才能查看和修改全部或大部分数据,因此,如果它被完全破坏,SQL 框也会被有效地破坏。

          【讨论】:

          • 您可以让 10 个 Web 服务器访问一个数据库,每个服务器具有不同的权限。因此,如果您的 1 台 Web 服务器遭到入侵,那么只有 10% 的数据会遭到破坏。如果您有 100 台服务器,那么只有 1% 的数据会损坏。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-11
          • 1970-01-01
          • 2011-09-01
          • 1970-01-01
          相关资源
          最近更新 更多