理解SQL Server的安全模式

SQL Server有三种安全模式，参考登录模式：

> > 标准安全模式

> > WINDOWS NT 集成安全模式

> > 混合安全模式

以下就是关于这三种模式的描述。

标准安全模式

标准安全模式是缺省的登录模式。当你使用标准安全模式时，SQL Server自己来决定谁有权限来访问这个服务器。如果你使用了这种配置，你必须为所有的进程建立能访问服务器的登录ID号。

当你在运行Internet Infornation和Active Server Page的系统上使用标准安全模式时，你必须建立一个和sa帐户不同的登录ID号。如果INTERNET用户运行以sa帐户的身份来登录，那么他就有权限来改变你的数据库内的所有的数据。这是及其危险的。为了解决这个问题，你必须建立一个限制了权限的用户（权限的分配我们会在后面的章节讨论，“用户组，用户，和权限”）。

你可以为INTERNET的登录用户取任何的名字。例如，你可以把他命名为WEBUSER。 为了建立这个新的登录ID号，你可以在SQL Enterprise Manager的菜单中选择Manage|Lodins。管理登录的对话框就会出现。然后，从Login Name的下拉式框中选择New User。然后输入你的INTERNET用户所使用的名字。你还需要输入一个密码， 这个密码是INTERNET用户访问你的服务器时认证所使用的。在你说明了这些信息以后，点击Add，一个新的登录ID号就会被加入。

集成安全模式

集成安全模式是SQL Server的另一种可用的安全模式。使用了集成安全模式以后，你的安全认证工作就全部有WINDOWS NT来完成。也就是说，所有的WINDOWS NT帐户都可以访问SQL Server。

使用集成安全模式的好处就是你不必要费心去维护两个系统的安全。 你只需要在NT 的安全框架内建立一个有合适的权限的新用户就可以了。 一旦建立了一个WINDOWS NT 的用户，这个帐户会自动地映射成为SQL Server在SQL Secure Manager 中的一个登录ID号。 （要知道任何做，见后面的“SQL Secure Manager”）。

你需要进行几步操作来激活这种安全模式：

> 在SQL Server按照以后，选择开始|程序|SQL65|SQL Enterprise Manager

> 选择Server|SQL Server|Configure|来打开服务器选项配置的对话框（见图3.7）。 然后点击安全选项的一页（见图3.8）。

> 图3.8 服务器配置的菜单选项

> 选择WINDOWS NT集成模式。

> 对于缺省域的选择，你要说明你的SQL Server用户在哪一个域内存在，如果你不是一个域的成员，你可以SQL Server所在的WINDOWS NT 服务器的名字。

> 对于缺省登录帐户的选择，就是指你要使用的缺省登录帐户。缺省登录帐户是给那些没有一个有效的登录帐户的用户使用的。

> 如果需要的话，你可以选择配置主机名和用户名的选项。在你选择上以后，在运行存储过程Sp_who时，这个选项会显示你的机器名。

> 你有必要设置映射选项。 这些选项可以使你能够重新分配无效的字符（*，-，#，/）。

> 在这些合适的选项都被选择了以后，退出SQL Server，重新启动服务器。

> 图3.8 SQL配置的安全模式选项

分配用户名

如果你决定使用集成安全模式，一定要非常小心地分配你的用户名。先确定一种命名习惯，然后坚持使用它。 有很多的字符（例如：－，＃，@, *, /, \）是SQL Server所不支持的字符，但是WINDOWS NT 却支持。SQL Server允许你把这些字符映射成一些它可以接收的字符。从以往的实践来看，你最好取一些简单的，没有SQL Server不接收的字符的名字，例如，John Propeller可以命名为PropellerJ，但是，SQL Server会需要你把Propeller-J映射成Propeller_J。 因为连字符号（－）会造成错误（参考图3.8）。

混合安全模式

混合安全模式有标准安全模式和集成安全模式两种模式的好处。 你可以把WINDOWS NT的帐户和SQL Server的帐户混在一起用。你可以直接在SQL Server中添加用户，也可以在通过SQL Secure Manager给WINDOWS NT的用户组赋予权限（见以后的章节“SQL Secure Manager”）。

混合安全模式和集成安全模式的唯一不同就是在NT用户的帐户上。使用集成安全模式，一个用户必须拥有一个帐户，而且要成为一个有权限访问SQL Server数据库的用户组的成员，才能服务器数据库。 在这种模式下，你不能直接为SQL Server添加登录ID号。但是，在混合模式下，你可以直接为SQL Server添加登录ID号。 在NT的用户数据库内的帐户和任何在SQL Server中添加的登录ID号一样都有权限访问数据库。因为混合安全模式的在维护NT登录帐户时的灵活性，我们推荐使用它。