[NextPage]
数据库里是否需要加密。如果我们希望能够获得最高的安全性,我就会选择使用内置的或者第三方的加密软件。如果数据对于安全性要求不是那么高,我就会选择根本不加密,或者选择低级别一些的加密方法。
最后,我还需要决定使用什么样的连接来访问数据库。如果加密是必须的,或者/而且访问是通过客户服务器软件来进行(如同问题里描述的那样),那么我就需要使用VPN和一个应用层的代理。而且,我可能会考虑在我的Web服务器和数据库之间,设置一个应用服务器。
对于上面这些问题的答案帮助我设计数据库访问的环境。
搭建系统
我假设在ESpigle问题中所描述的数据的敏感程度不是非常高,所以使用IIS和SQLServer是可以被接受的。具体如图A所示:
所示的网络通信中,80端口的HTTP或者1443只被允许到达Web服务器。然后Web服务器通过1433端口,通过TCP协议同SQL服务器进行通信。另一种方法,是使用微软的ISA服务器作为转换代理,并允许它控制与SQL服务器的通信。
无论你选择哪一种,都有一系列问题需要考虑,以确保你的SQLServer数据库的安全。这些问题在网上可以查到,它们包括了比如保护你的Windows服务器,保护IIS,保护SQLServer,处理Web服务器同SQLserver的通信问题,这包含了认证、协议等等方面的问题。幸运的是微软在MBSA(MicrosoftBaselineSecurityAnalyzer)提供了一些帮助。
最后,你的开发人员和数据库管理员还需要把一系列标准和程序融合到应用代码和数据库中,以把安全风险降到最低。
最佳方案和可接受的风险
本篇文章讲述了在一个看起来很简单的问题背后的一些复杂之处,“怎样才能最好地让网络应用通过web服务器访问数据库?”也许还有资金的压力,但最终,会归结为在可承受的风险程度和投入之间的平衡问题。这是每一个面对这个问题的人都需要考虑的。