设置安全
如果你期望得到如同Windows NT一样的安全性或更好的话,我倒是有些好消息可以告诉你。Windows 2000拥有更多的安全选项,更有粒度的安全性,更坚固的应用程序安全性。同时,IIS还提供一些新的安全向导帮助你设置站点的安全。
首先要在在Windows 2000布下的第一道防线和Windows NT一样-设置文件和文件夹的NTFS权限。如果你准备为某些用户设定一些特别的权限,比如读写特定的文件和文件夹,或者执行特别的应用程序,就需要设置NTFS的安全性。在设置权限的时候要注意,WEB默认的匿名用户仍然是IUSR_machinename,这和在Windows NT中是一样的。
Windows 2000提供了两个向导用来设置证书和分配证书信任列表(Certificate Trust Lists--CTL)。要运行Web Server Certificate Wizard 可用以下步骤:
选择站点>属性>切换到Directory Security面板>点击Server Certificate。
向导程序会提出一些关于证书设置的问题,比如证书的名称,WEB服务器的地址。最后会生成证书请求文件,将这个文件及送到权威的认证机构才可以得到最终的认证证书。
当证书安装到站点后,可以通过运行CTL向导分配给它一个CTL。操作步骤如下:
选择站点>属性>切换到Directory Security面板>点击EDIT。
权限向导(Permission Wizard)通过给定两种情况来设置权限,它用来设定虚路径或站点(WEB Site)是一个开放的站点可由任意人访问,还是一个安全站点,只能由Windows 2000中的账户(Account)所有人访问。调用权限向导的方法如下:
选择站点或虚路径>选择ISM的Action菜单中的All Task选项>选择Permission Wizard
对于一个公共站点,读权限对每一个访问者都是开放的,而管理员拥有完全控制的权限;这些权限的设置可在未来重新设置并覆盖现有的权限设置,也可以和现有的文件和文件夹的权限联合使用。安全站点有着同样的选项,匿名用户不能访问站点,只有那些合法的Windows 2000账户可以访问站点。
如果使用Permission Wizard设置WEB站点,确保NTFS权限和向导提供的权限互相不冲突,并记住要让NTFS权限覆盖向导提供的权限,记住,你可以从NTFS获得更多的控制。
如果ASP程序需要提供授权访问,可以使用IIS提供的认证协议。该协议名为Digest认证,它将用户的登录信息进行哈希(Hashing—散列法)变换再传输到网络上去。由于哈希变换是单向的,无法将它还原回原始的信息,因此没有必要进行解码的工作,而信息相对就安全的多。这种方法目前还有一些限制,就是它只能应用在IE 5.x或以上的浏览器中。只要你使用了合适的浏览器,还是有办法进行加密传输的。
其它一些Windows 2000和IIS 5.0中的有关安全性的变化可能会影响到ASP应用程序出现预想外的问题。在Windows NT中从ASP页面中初始化一个COM进程(through the use of ASP components),如果是一个进程内组件它会以SYSTEM运行,如果是一个进程外的组件它会以IWAM_machinename 运行。因此,在Windows NT中组件比WEB页的用户更多的权利来访问计算机和它的资源。
在Windows 2000中,用户通过叫做伪装(Cloaking)的进程访问ASP应用,无论进程内还是进程外组件运行在这个安全环境中。因此,如果访问ASP页面例示了一个组件,该组件进行一些操作,如存取文件或系统资源,而访问者以匿名用户的身份,这时候你会发现组件的进程会因为安全限制被禁止。
对于NT来说Windows 2000提供了更安全的进程,但是如果没有注意到ASP应用使用了外部进程,并针对不同的用户(这些用户应该具有不同的权限)进行广泛的测试,未来在最终的生产环境中可能会产生难以预料的结果。最起码你要进行完全的测试以保证新的安全特性不会产生意外的结果。
当设置完IIS 5.0的安全后,就可以将ASP应用的页面,脚本,图像文件和其他一些素材拷贝到试验环境中。这也包括了ASP应用所涉及的组件,也包括了将MTS包移植到COM+的应用。
如果你的应用中包括了第三方提供的ASP组件,那么我们建议你延缓包含这些组件的ASP应用的移植工作,直到厂商提供相应的版本或者由厂商提供证明以确保现有组件不会在Windows 2000下造成任何问题。
在下一个部分中,我们将详细的讲述有关将MTS迁移到COM+中的若干问题。并提供一个样例文件。
图3 Throttling and Tracking ASP
<HTML>
<HEAD>
<TITLE>Throttling and Logging CPU</TITLE>
</HEAD>
<BODY>
<%
Dim iisAdminObj
Dim iisDirObj
' Access IIsWebServer object for Development
Set iisAdminObj = GetObject("IIS://localhost/W3SVC/1")
iisAdminObj.CpuAppEnabled = True
' enable throttling
iisAdminObj.CpuLimitsEnabled = True
' change logging
iisAdminObj.CpuEnableKernelTime = True
iisAdminObj.CpuEnableActiveProcs = True
iisAdminObj.CpuEnablePageFaults = True
' save data back to metabase
iisAdminObj.SetInfo
%>
</BODY>
</HTML>