1、安全管理概述安全管理概述登录帐户登录帐户数据库用户数据库用户角色角色权限管理权限管理SQL Server的安全管理模型中包括的安全管理模型中包括SQL Server登录、登录、数据库用户、权限和角色数据库用户、权限和角色4个主要方面个主要方面。nSQL Server登录登录:要想连接到:要想连接到SQL Server服务器实例,服务器实例,必须拥有相应的登录账户和密码必须拥有相应的登录账户和密码。SQL Server的身份认的身份认证系统验证用户是否拥有有效的登录账户和密码,从而证系统验证用户是否拥有有效的登录账户和密码,从而决定是否允许该用户连接到指定的决定是否允许该用户连接到指定的SQL
2、Server服务器实服务器实例。例。SQL Server的安全管理模型中包括的安全管理模型中包括SQL Server登录、登录、数据库用户、权限和角色数据库用户、权限和角色4个主要方面个主要方面。n数据库用户数据库用户:通过身份认证后,用户可以连接到:通过身份认证后,用户可以连接到SQL Server服务器实例。但是,这并不意味着该用户可以访服务器实例。但是,这并不意味着该用户可以访问到指定服务器上的所有数据库。问到指定服务器上的所有数据库。在每个在每个SQL Server数数据库中,都存在一组据库中,都存在一组SQL Server用户账户。登录账户要用户账户。登录账户要访问指定数据库,就要将
3、自身映射到数据库的一个用户访问指定数据库,就要将自身映射到数据库的一个用户账户上,从而获得访问数据库的权限账户上,从而获得访问数据库的权限。SQL Server的安全管理模型中包括的安全管理模型中包括SQL Server登录、登录、数据库用户、权限和角色数据库用户、权限和角色4个主要方面个主要方面。n权限:权限:权限规定了用户在指定数据库中所能进行的操作。权限规定了用户在指定数据库中所能进行的操作。n角色:角色:类似于类似于Windows的用户组,角色可以对用户进行的用户组,角色可以对用户进行分组管理。可以对角色赋予数据库访问权限,此权限将分组管理。可以对角色赋予数据库访问权限,此权限将应用于
4、角色中的每一个用户。应用于角色中的每一个用户。使用使用sp_addlogin存储过程可以创建新的登录账户。存储过程可以创建新的登录账户。语法:语法:sp_addlogin 登录名称登录名称,登录密码登录密码,数据库名数据库名 示例:使用示例:使用sp_addlogin创建创建SQL Server登录账户登录账户Wang,密码为密码为123456,默认数据库为,默认数据库为SchoolInfo。解决方案:解决方案:sp_addlogin Wang,123456,SchoolInfo 通过通过SQL Server的身份验证并不代表用户就能够访问的身份验证并不代表用户就能够访问SQL Server中
5、的数据,要访问某个具体的数据库,还必须使登录账中的数据,要访问某个具体的数据库,还必须使登录账户成为某数据库的用户。户成为某数据库的用户。使用使用sp_grantdbaccess存储过程创建数据库用户。存储过程创建数据库用户。语法:语法:sp_grantdbaccess 登录名登录名 示例:使用示例:使用sp_grantdbaccess为为SchoolInfo数据库数据库创建数据库用户创建数据库用户Wang。解决方案:解决方案:sp_grantdbaccess Wang 利用角色,利用角色,SQL Server管理者可以将某些用户设置为某管理者可以将某些用户设置为某一角色,一角色,对一个角色授
6、予、拒绝或废除的权限也适用于该角色对一个角色授予、拒绝或废除的权限也适用于该角色的的任何成员任何成员,这样只需对角色进行权限设置便可以实现对所有这样只需对角色进行权限设置便可以实现对所有用户权限的设置用户权限的设置,大大减少了管理员的工作量。,大大减少了管理员的工作量。sp_addrole存储过程的功能是创建存储过程的功能是创建SQL Server角色,角色,语法:语法:sp_addrole 数据库角色名数据库角色名示例:使用示例:使用sp_addrole创建数据库角色创建数据库角色NewRole。解决方案:解决方案:sp_addrole NewRole sp_addrolemember存储过
7、程的功能是向角色中添加用户,存储过程的功能是向角色中添加用户,语法如下:语法如下:sp_addrolemember 数据库角色名数据库角色名,数据库用户名数据库用户名示例:使用示例:使用sp_addrolemember为为数据库角色数据库角色NewRole添添加成员加成员Wang。解决方案:解决方案:sp_addrolemember NewRole,Wang 权限决定了用户在数据库中可以进行的操作。可以对数据权限决定了用户在数据库中可以进行的操作。可以对数据库用户或角色设置权限。库用户或角色设置权限。权限的种类:权限的种类:SELECTINSERTUPDATEDELETE设置权限包括:设置权限
8、包括:n授予权限:授予用户、组或角色的语句权限和对象权限,使授予权限:授予用户、组或角色的语句权限和对象权限,使数据库用户在当前数据库中具有执行活动或处理数据的权限。数据库用户在当前数据库中具有执行活动或处理数据的权限。n拒绝权限:包括删除以前授予用户、组或角色的权限,停用拒绝权限:包括删除以前授予用户、组或角色的权限,停用从其他角色继承的权限,确保用户、组或角色将来不继承更从其他角色继承的权限,确保用户、组或角色将来不继承更高级别的组或角色的权限。高级别的组或角色的权限。n废除权限:废除以前授予或拒绝的权限。废除类似于拒绝,废除权限:废除以前授予或拒绝的权限。废除类似于拒绝,因为二者都是在同
9、一级别上删除已授予的权限。但是,废除因为二者都是在同一级别上删除已授予的权限。但是,废除权限是删除已授予的权限,并不妨碍用户、组或角色从更高权限是删除已授予的权限,并不妨碍用户、组或角色从更高级别继承已授予的权限。级别继承已授予的权限。基本语法如下:基本语法如下:GRANT ALL|权限权限 ,.n ON 表表|视图视图|存储过程存储过程 TO 安全账户安全账户|角色角色 ,.n WITH GRANT OPTION 示例示例1:使用使用GRANT语句为语句为Wang授予查询表授予查询表SC的权限。的权限。解决方案:解决方案:GRANT SELECT ON SC TO Wang示例示例2:使用使
10、用GRANT语句为语句为NewRole角色授予更新表角色授予更新表SC的权的权限。限。解决方案:解决方案:GRANT SELECT,UPDATE ON SC TO NewRole注注:当授予当授予UPDATE或或DELETE权限时,需要与权限时,需要与SELECT配合,配合,否则权限无效,而否则权限无效,而INSERT不受不受SELECT影响。影响。示例示例3:使用使用GRANT语句为语句为Wang授予更新表授予更新表SC的的Score字段字段权限。权限。解决方案:解决方案:GRANT SELECT,UPDATE(Score)ON SC TO Wang示例示例4:使用使用GRANT语句为语句为
11、NewRole角色授予查询、更新表角色授予查询、更新表SC的权限的权限,并允许该角色将此权限再授予其他用户或角色。并允许该角色将此权限再授予其他用户或角色。解决方案:解决方案:GRANT SELECT,UPDATE ON SC TO NewRole WITH GRANT OPTION基本语法如下:基本语法如下:REVOKE ALL|权限权限 ,.n ON 表表|视图视图|存储过程存储过程FROM 安全账户安全账户,.n示例示例:使用使用REVOKE语句废除语句废除NewRole角色授予查询、更新角色授予查询、更新表表SC的权限。的权限。解决方案:解决方案:REVOKE SELECT,UPDAT
12、E ON SC FROM NewRole基本语法如下:基本语法如下:REVOKE ALL|权限权限 ,.n ON 表表|视图视图|存储过程存储过程FROM 安全账户安全账户,.n示例示例:使用使用REVOKE语句废除语句废除NewRole角色授予查询、更新角色授予查询、更新表表SC的权限的权限,如果其授予此权限给其他用户或角色,也将废如果其授予此权限给其他用户或角色,也将废除其他用户或角色拥有的此权限。除其他用户或角色拥有的此权限。解决方案:解决方案:REVOKE SELECT,UPDATE ON SC FROM NewRole CASCADE注:假设注:假设A和和B同时授予同时授予C对表的对
13、表的SELECT权限,此时权限,此时A废除了废除了C的的SELECT权限,但权限,但B并没有废除,因此,并没有废除,因此,C仍然对表有仍然对表有SELECT权限。权限。基本语法如下:基本语法如下:DENY ALL|权限权限 ,.n ON 表表|视图视图|存储过程存储过程TO 安全账户安全账户,.n示例示例:使用使用DENY语句废除语句废除NewRole角色授予查询、更新表角色授予查询、更新表SC的权限。如果其授予此权限给其他用户或角色,也将拒的权限。如果其授予此权限给其他用户或角色,也将拒绝其他用户或角色拥有的此权限。绝其他用户或角色拥有的此权限。解决方案:解决方案:DENY SELECT,UPDATE ON SC TO NewRole CASCADE注:只有注:只有sa才有权限使用才有权限使用DENY语句。语句。