| sql server的安装有两个关于安全模式的选项。它们之间的差别在于由哪一个软件执行认证过程。认证是一个确认将要连接sql server的用户身份的过程。一旦执行了认证,sql server就能验证这个用户是否具有许可来连接一个被请求的资源,例如一个数据库。如果用户具有连接数据库的许可,那么sql server将允许连接请求成功,否则,连接失败。这个验证用户许可的过程还被称为授权。
· windows authentication(还被称为trusted authentication或者integrated security)使用进行连接请求过程的windows用户身份来执行对数据库的授权。在这种情况下,连接字符串不必提供显式的用户名和密码。asp.net以一个名为"aspnet"的本地用户来运行(或者在iis 6.0当中使用用户名"network service"),所以当使用windows authentication时,sql将会检查这个用户是否拥有使用数据库的许可。此时,所有的asp.net应用程序都用这个相同的用户运行,所以该安全模式对这些应用程序一视同仁。虽然可以在单独的asp.net进程中运行每一个应用程序(单独的用户运行每个程序),或者可以模拟进行连接请求的浏览器客户的windows用户身份,但是这些内容都超出了本书所要讲述的范围。不过,客户模拟的情况在web应用程序中是windows authentication最常见的使用方式。
· sql authentication针对在sql server内配置的用户来检查显式提供的用户名和密码(无需涉及操作系统)。在这种情况下,在asp.net进程中运行的每个应用程序都能以单独的证书来连接数据库,这样就把应用程序合理地隔离开了(应用程序a如果没有b的用户名和密码就不能连接至b的数据库)。这是用于部署的web应用程序的最常见认证模式,特别是在共享宿主的情况下。它的一个小缺点就是需要应用程序保留用于连接的用户账户的密码,并且如果该密码被恶意用户获取,那么将危及数据库的安全。但是,在本书后面将会看到,asp.net提供了一个安全的方式,将sql authentication密码以加密的格式保存在web.config文件中,这样就降低了密码被获取的风险。
· mixed mode是sql server的配置,它既允许windows authentication,也允许sql authentication。
在安装sql server或者sse时,要选择一种认证模式。在sql server中,有向导会在安全步骤中帮助选择,而在sse中,默认选择是windows authenti cation。如果要安装sql authentication,就必须显式地配置。本文使用的是windows authentication。
如果已经安装了sql server或者sse,就能通过打开regedit来查看所指定的认证模式(当然需要先备份),找到hkey_local_machine/software/microsoft/microsoft sql server并搜索loginmode。值为1的注册子键表示windows auth entication,而值2表示mixed authentication模式。
表3-1总结了这些模式之间的区别。
表3-1
|
windwos authentication |
sql authentication |
| 可替换名称 |
trusted authentication
integrated security
|
没有,但是mixed mode authen tication允许使用windows或者sql authentication |
| 典型环境 |
内部网 |
因特网 |
| 用户和认证过程列表的位置 |
windows |
sql server |
| sse安装 |
默认安装 |
需要指定安装 |
| 连接字符串 |
trusted_connection=true或者integrated security=true |
user=username;
password=password |
| asp.net web应用程序的用户 |
asp.net进程、aspnet(iis 5.x)或者network service(iis 6) |
sql用户 |
| 优势 |
较好的安全性;可以对用户在sql事件和windows事件中的活动进行跟踪 |
无需创建新账户即可在宿主机上部署;独立于操作系统
宿主的内部网站点只需一般技术
为应用程序提供更加灵活的方式以不同的证书来连接每个数据库 |
| 劣势 |
给予web应用程序windows证书有可能会将os中的权限范围设置过大 |
密码存储在web应用程序中(在windows认证中则不是)。确认密码保存在web.config文件中并已加密。
允许使用sa证书的web应用程序的低级操作。总是为asp.net web应用程序创建新的证书并只给予所需的权限 |
|