我正在收听第19期播客,Joel和Jeff正在争论在同一台计算机上运行SQL Server和IIS安装的问题。我必须说,听起来像是Jeff向Joel低头了,但我猜不出谁是谁。
各自的优缺点是什么?哪个更好?
通常我会分别运行它们(Joel的偏好),但我可以理解Jeff的观点,认为这两个组件更接近彼此。
我正在收听第19期播客,Joel和Jeff正在争论在同一台计算机上运行SQL Server和IIS安装的问题。我必须说,听起来像是Jeff向Joel低头了,但我猜不出谁是谁。
各自的优缺点是什么?哪个更好?
通常我会分别运行它们(Joel的偏好),但我可以理解Jeff的观点,认为这两个组件更接近彼此。
@MarkR
将 SQL Server 移到另一个盒子可以增强安全性,这与暴露的攻击面有关。
Web 服务器容易受到来自互联网的恶意访问。尽管我们希望这种事情永远不会发生,但是一些漏洞可以通过穿过防火墙的畸形请求被利用。
利用这些漏洞可能导致任意代码执行。
如果 Web 服务器以此方式受到攻击,那么在该计算机上运行的其他任何内容都变得容易受到攻击,攻击软件可以在特权上下文中运行。受攻击的机器的攻击面更广泛了。
如果 SQL Server 安装在同一台机器上,则任何数据库都很容易被攻击。
现在,如果 SQL Server 安装在单独的机器上,则只能通过公共接口访问它本身。数据库的攻击面仅限于该接口。因此,要损坏数据库,您现在必须先损坏 Web 服务,然后再损坏 SQL Server。这比将它们放在同一台机器上要困难得多。
进一步推广这个原则,这也是使用存储过程的论据。如果 Web 服务器只能使用存储过程访问数据库服务器,则接口(因此攻击面)会受到巨大限制。如果 Web 服务器能够对数据库服务器执行任意 SQL,则攻击面将比必要的更大,数据面临的风险也大大增加。
在数据很有价值的系统中,尽管这些风险相对较小,但它们确实存在,并确定此类风险的业务影响是解决方案设计的重要方面。
将它们部署在同一台机器上:
如果应用程序不需要冗余并且不需要扩展,则将它们放置在同一台机器上是明确的优势 - 维护起来要容易得多。
我认为安全性的论点没有任何影响 - 我没有看到分离它们的任何安全好处。 Web服务器需要具有足够的访问权限才能查看和修改所有或大部分数据,因此,如果完全受损,SQL服务器也将受到影响。