6-3 SQL Server数据库的安全机制
    Microsoft SQL Server是一个高性能、多用户的关系型数据库管理系统。它是专为客户机,服务器计算环境设计的,是当前最流行的数据库服务器之一。它的内置数据复制功能、强大的管理工具和开放式的系统体系结构为基于事务的企业级管理方案提供了一个卓越的平台。
6.3.1SQL Server的安全体系结构
    在Windows操作系统上,SQL Server的安全体系中包括操作系统的安全管理机制,同时拥有自身的安全技术。
SQL Server数据库管理系统、Windows操作系统和网络技术一起构成数据库系统的安全体系。SQL Server的安全体系结构如图6-5所示。
Windows(指Windows NT、Windows 2000及更高版本的windows网络操作系统)用户或其他系统下的用户要想获得对SQL Server数据库的访问,必须通过以下四道安全防线。   
1)操作系统的安全防线。用户需要一个有效的登录账户,才能对网络系统进行访问。
2) SQL Server的身份验证防线。SQL Server通过登录账户来创建附加安全层,一旦用户登录成功,将建立与SQL Server的一次连接。
3) SQL Server数据库身份验证安全防线。当用户与SQL Server建立连接后,还必须成为数据库用户(用户ID必须在数据库系统表中),才有权访问数据库。
4) SQL Server数据库对象的安全防线。用户登录到要访问的数据库后,要使用数据库内的对象,必须得到相应权限。
4层安全防线中,第一层涉及网络操作系统安全技术,本章不再讨论。后三层综合起来,便形成了SQL Server的安全管理。
6.3.2 Server的安全管理
安全管理数据库管理系统必须提供的功能,其中包含两个层次,一是对用户是否有权限登录到系统及如何登录的管理;二是对用户能否使用数据库中的对象并执行相应操作的管理。
SQL Server的安全管理主要包括以下4个方面。
数据库登录管理。
数据库用户管理。
数据库角管理。
数据库权限管理。
1.数据库登录管理 
访问SQL Server的第一步必须建立到SQL Server的连接,建立连接是通过登录IE实现的。登录ID是账户标识符,用来控制对任何SQL Server系统的访问权限,SQL Server只    有在首先验证了指定的登录ID及密码有效后,才完成连接。这种登录验证称为身份认证。
SQL Server提供了两种身份认证,Windows身份认证和SQL Server身份认证,由这两种身份认证派生出两种身份认证模式,Windows身份认证模式和混合模式。
1)Windows身份认证。Windows身份认证使用Windows操作系统的内置安全机制,也就是使用Windows的用户或组账号控制用户对SQL Server的访问。
在这种模式下,用户只需通过Windows的认证,就可以连接到SQL Server,而SQL Server本身不再需要管理一套登录数据。Windows身份认证采用了Windows安全特性的许多优点,包括加密口令、口令期限、域范围的用户账号及基于Windows的用户管理等,从而实现了SQL Server与Windows登录安全的紧密集成。
在网络环境中,如果连接客户机和服务器的所有通信协议都是信任连接协议(即Named    pipes和TCP/IP)时,应采用Windows认证模式。在这种认证模式下'系统只是使用Windows    认证进程来确认用户信息。
Windows认证模式的优点是,密码一次性访问,不必再记住SQL Server密码。缺点在于,只有通过多协议网库( Multi Protocol Net Library,MPNL)或命名管道(Named Pipes,NP)通信协议才是可用的,因此可能出现因网络原因而阻止Windows认证模式的使用。
2)混合身份认证。两种身份认证派生出实际使用的第二种身份验证模式:混合模式。在混合模式下,如果用户在登录时提供了SQL Server登录ID,则系统将使用SQL server身份认证,如果没有提供SQL Server登录ID而提供的是请求Windows身份认证,则使用Windows身份验证。
系统使用哪种模式可以在安装过程中或使用SQL Server的企业管理器指定。SQL Server的默认身份认证模式是Windows身份认证模式,这也是建议使用的一种模式。
对SQL Server数据库登录的管理,通常有两种方法,一种是通过企业管理器(SQL Server  Enterprise Manager)来实现;一种是通过系统存贮过程sp来实现。这两种方法同样适用于管理用户、角和权限。所有的登录账号信息存储在master数据库的系统表sysxlogins中。
SQL Server有一个默认登录账号(System Administrator,SA),它拥有SQL Server系统的全部权限,可以执行所有的操作。此外,Windows系统的管理员Administrator也拥有SQL Server系绕的全部权限,对应账号分别为Builtin/Administrator和Administratoror
2.数据库用户管理
登录ID成功地进行了身份验证后,只是建立了到SQL Server的连接,要实现对数据库及数据库对象的访问,可通过两种途径来实现,一种是登录ID必须与相应数据库中的用户ID相关联才能访问数据库,另一种是如果登录ID不能与任何数据库用户ID关联,但此数据库启用了Guest客户,则可以与Guest客户相关联。后一种方法不提倡采用,因为任何没有数据库限的用户都可通过Guest客户获取数据库的访问权限,这样降低了安全性。
SQL Server数据库用户,用于管理对指定数据库使用的对象,控制对数据库及数据库对象的访问权限。一般地,登录ID与数据库用户ID是相同的(建议这样做,便于管理)。一个登录ID可以与多个数据库用户相关联。用户信息均存储在数据库的系统表sysusers中。
权限的分配是通过数据库用户ID实现的,根据用户的性质合理分配最小权限。在权配上要充分利用Windows“组”和SQL Server的“角”。
组是Windows系统中的一个概念,把用户编成逻辑组,并分配一定权限,有助于管理用户和实现安全。具体做法是将每个域中的用户指派到windows全局组,将各个域中的全局组放入Windows本地组,授予Windows本地组登录到SQL Server的权限,最后将该本地组与具定权限的数据库用户或角相关联。这样从Windows系统及SQL Server两方面授权,有助于安全。
3.数据库角管理
数据库角是指为管理相同权限的用户而设置的用户组,也就是说,同一角下的用户权限都是相同的。
在SQL Server数据库中,把相同权限的一组用户设置为某一角后,当对该角进行权限设置时,这些用户就自动继承修改后的权限。这样,只要对角进行权限管理,就可以实现对属于该角的所有用户的权限管理,极大地减少了工作量。
需要指出的是,一个用户可以同时属于不同的角,也就是说'一个用户可以同时个角中的权限,但这些权限不能冲突,否则只能拥有最小的权限。
SQL Server数据库的角通常可以分为3类,数据库服务器角、数据库角和应用程序角。前两种是系统预定义的。服务器角的作用域在服务器范围内,是独立于数据库的管理特权分组,主要实现SA、数据库创建者及安全性管理员职能。具有服务器角的用户必须绝对可靠,并且人员要少。数据库角在数据库级别上定义,提供数据库层管理特权的分组,主要实现数据库的访问、备份与恢复及安全性等职能。用户定义的数据库角只适用于数据库级别,通过用户定义的角可以轻松地管理数据库中的权限。
4.数据库权限管理
设置用户对数据库的操作权限称为授权,SQL Server中未授权的用户将无法访问或存取数据
库数据。SQL Server通过权限管理指明哪些用户被批准使用哪些数据库对象和Transact-SQL语句。
SQL Server中的权限可授予用户安全账户或用户安全账户所属的组或角。SQL Server中权限可识别4类用户,不同类型的用户形成不同层次。
1)系统管理员(SA):服务器层权限,在服务器的所有数据库中对任何用户对象有全部  权限。
2)数据库拥有者(DBO):数据库层权限,在其拥有的数据库中对任何用户对象有全部权限。
sql server两种身份验证模式3)数据库对象拥有者:数据库对象层。
4)数据库对象的一般用户:数据库对象用户层。
在应用系统开发过程中,要根据实际情况把用户分出层次,分别授予权限。在授予权限时,要注意SQL Server的3类权限,对象权限、语句权限、暗示权限,根据实际情况及权限特点合埋授予。
1)对象权限:对象权限( SELECT、UPDATE、INSERT、DELETE、EXEC、DRI)管理由哪些数据库用户来使用哪些数据库对象,是处理数据或执行过程时需要的权限类别,由数据库对象拥有者授予、废除或撤消。在授予对象权限时,要非常细心地为用户、用户组及角授予权限,尤其是工作于较大的、复杂的安全体系和敏感数据中。用户必须只授予在其工作范围之内的权限,而禁止其在工作范围之外的所有活动(最小权限),以确保数据安全。
2)语句权限:指允许对数据库对象(包括表、视图)进行查询、添加、修改和删除( CREATE  DATABASE、CREATE DEFAULT、CREATE RULE、CREATE TABLE、CREATE VIEW、CREATE PROCEDURE、CREATE FUNCTION、BACKUP DATABASE、BACKUP LOG)等操作。
语句权限是针对数据库的,只能由SA或数据库拥有者授予。合理使用语句权限,是确保系统安全的一个重要方面。
3)暗示权限:暗示权限控制那些只能由预定义系统角的成员或数据库对象所有者执行 的活动。 
权限管理主要针对对象权限和语句权限,通帝权限有3种状态,即授予权限、撤消权限、拒绝访问。对权限的管理可通过如下方式进行。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。