《数据库第16章SQLServer安全管理》由会员分享,可在线阅读,更多相关《数据库第16章SQLServer安全管理(31页珍藏版)》请在金锄头文库上搜索。
1、Copyright2008Copyright20081数据库第16章SQLServer安全管理Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望Copyright2008Copyright20082应知应知:vSQL SERVER 2000 的安全验证模式的安全验证模式v登录帐号,数据库用户的作用登录帐号,数据库用户的作用v角色的概念和作用角色的概念和作用应会:应会:v登录帐号和用户的创建以及权限设置和撤销登录帐号和用户的创建以及权限设置和撤销v角色创建和授权角色创建和授权应知应会应知
2、应会Copyright2008Copyright20083专业词汇专业词汇vAuthentication Mode 验证模式验证模式vSecurity 安全安全vLogin account 登录帐号登录帐号vUser 用户用户vRole 角色角色vObject permission 对象权限对象权限vStatement permission 语句权限语句权限vGrant 授权授权vRevoke 撤消撤消Copyright2008Copyright20084SQL Server 2000的安全机制的安全机制操作系统的安全性SQL Server服务器的安全性数据库的安全性数据库对象的安全性Copy
3、right2008Copyright20085SQL Server验证模式验证模式nSQL Server两种验证模式两种验证模式 1. 仅仅Windows 验证验证 2. SQL Server和和Windows的混合验证的混合验证n设置安全认证模式设置安全认证模式Copyright2008Copyright20086问题问题1 赵老师当了赵老师当了g99402班的班主任,他要能班的班主任,他要能查到全校的课程信息以及本班学生的选查到全校的课程信息以及本班学生的选课信息,如何让他有权查到这些信息。课信息,如何让他有权查到这些信息。?Copyright2008Copyright20087安全管理安
4、全管理一个用户要对某一个数据库进行操作一个用户要对某一个数据库进行操作 ,必须,必须同时满足两个条件:同时满足两个条件:1)能连接到能连接到SQL Server服务器(连接权)服务器(连接权)2)有执行该操作的权限(访问权)有执行该操作的权限(访问权)Copyright2008Copyright20088SQL Server登录帐户登录帐户管理管理n必须有合法的登录账号才能建立与必须有合法的登录账号才能建立与SQL Server的连接的连接一、一、使用使用SQL语言创建语言创建SQL Server登录帐户登录帐户1、语法:、语法:sp_addlogin 用户名用户名,密码密码,登录用户使登录用
5、户使用的默认数据库用的默认数据库【例】【例】创建一个登录帐户:名为创建一个登录帐户:名为logzhao,密码为,密码为01,使,使用的默认数据库为用的默认数据库为mydb1EXEC sp_addlogin logzhao,01,mydb1另可以使用企业管理器创建登录帐户另可以使用企业管理器创建登录帐户Copyright2008Copyright20089二、查看登录帐户二、查看登录帐户sp_helplogins三、修改登录帐户三、修改登录帐户sp_defaultdb, sp_defaultlauguage, sp_password四、删除登录帐户四、删除登录帐户1、语法:、语法:sp_drop
6、login 帐户名帐户名例:例: sp_droplogin logzhaoCopyright2008Copyright200810数据库用户管理数据库用户管理一、数据库用户名和登录名的关系一、数据库用户名和登录名的关系1、登录名是访问、登录名是访问SQL Server的通行证,但并不能访问服务的通行证,但并不能访问服务器中的数据库;器中的数据库;2、要访问特定的数据库必须要有用户名,用户名的信息存、要访问特定的数据库必须要有用户名,用户名的信息存放在该数据库的放在该数据库的sysusers表中,用户名没有密码;表中,用户名没有密码;3、数据库用户名是一个登录帐户在某个数据库中的映射;数据库用户
7、名是一个登录帐户在某个数据库中的映射;一个登录帐户可以同时与多个数据库发生关联;一个登录帐户可以同时与多个数据库发生关联;4、只有登录名创建完成后,才能为其创建数据库用户名。、只有登录名创建完成后,才能为其创建数据库用户名。Copyright2008Copyright200811二、使用二、使用SQL语句创建数据库用户语句创建数据库用户1、语法:、语法:sp_grantdbaccess 登录名登录名 ,用户名用户名 【例】【例】在数据库中创建用户在数据库中创建用户dbuserzhao,对应的登录帐,对应的登录帐号是号是logzhao。use mydb1 exec sp_grantdbacces
8、s logzhao, dbuserzhao 2、说明:、说明:(1)在执行本存储过程前,登录名必须已经存在;)在执行本存储过程前,登录名必须已经存在;(2)一般情况下,登录名和用户名相同,所以第二个)一般情况下,登录名和用户名相同,所以第二个参数通常省略;参数通常省略;(3)在执行本存储过程前,首先确认当前使用的数据)在执行本存储过程前,首先确认当前使用的数据库是要增加用户的数据库;库是要增加用户的数据库;Copyright2008Copyright200812三、使用三、使用SQL语句查看数据库用户语句查看数据库用户 sp_helpuser四、使用四、使用SQL语句删除数据库用户语句删除数据
9、库用户语法:语法:sp_revokedbaccess 用户名用户名例:例:sp_revokedbaccess dbuserzhao五、两个特殊数据库用户五、两个特殊数据库用户 1. dbo 2. guestCopyright2008Copyright200813一、权限一、权限(Permission)类型类型:权限有三种类型:默认权限、对象权限和语句权限。权限有三种类型:默认权限、对象权限和语句权限。1、默认权限:也称为暗指权限。当数据库用户被分配到某一、默认权限:也称为暗指权限。当数据库用户被分配到某一角色后,这些数据库用户就获得了该角色的默认权限。角色后,这些数据库用户就获得了该角色的默认
10、权限。2、对象权限:用户拥有对数据库对象的访问和操作权限。共、对象权限:用户拥有对数据库对象的访问和操作权限。共分为分为5种:种:(1)查询()查询(SELECT):拥有对某个表的访问权限。):拥有对某个表的访问权限。(2)插入()插入(INSERT):可以向表中插入数据。):可以向表中插入数据。(3)修改()修改(UPDATE):可以对表中的数据进行更新。):可以对表中的数据进行更新。(4)删除()删除(DELETE):可以删除表中的数据。):可以删除表中的数据。(5)执行()执行(EXECUTE):可以执行存储过程。):可以执行存储过程。权限管理权限管理Copyright2008Copyr
11、ight2008143、语句权限:通常授予需要在数据库中创建或修改对象、执、语句权限:通常授予需要在数据库中创建或修改对象、执行数据库和事务日志备份的用户。如果一个用户获得了某个行数据库和事务日志备份的用户。如果一个用户获得了某个语句的权限,该用户就具有了执行该语句的权力。共包含语句的权限,该用户就具有了执行该语句的权力。共包含9种种权限:权限:(1)BACKUP DATABASE:备份数据库;:备份数据库;(2)BACKUP LOG:备份事务日志;:备份事务日志;(3)CREATE DATABASE:创建新的数据库;:创建新的数据库;(4)CREATE DEFAULT:创建缺省;:创建缺省;
12、(5)CREATE PROCEDURE:创建存储过程;:创建存储过程;(6)CREATE FUNCTION:创建用户定义函数;:创建用户定义函数;(7)CREATE RULE:创建规则;:创建规则;(8)CREATE TABLE:创建表;:创建表;(9)CREATE VIEW:创建视图。:创建视图。Copyright2008Copyright200815二、权限的验证过程二、权限的验证过程:1、用户执行某项操作,相应的、用户执行某项操作,相应的SQL语句通过网络语句通过网络发送到发送到SQL Server服务器;服务器;2、SQL Server服务器收到服务器收到SQL语句,检查该用语句,检查
13、该用户是否具有对操作对象的权限权限及执行这些语户是否具有对操作对象的权限权限及执行这些语句的权限;句的权限;3、如果、如果SQL Server服务器权限验证通过,服务器权限验证通过,SQL Server系统执行相应的操作,否则,系统返回出系统执行相应的操作,否则,系统返回出错信息。错信息。Copyright2008Copyright200816三、管理权限:三、管理权限:1、管理权限的用户:、管理权限的用户:(1)系统管理员:有)系统管理员:有sa帐户或具有相同权限的用户;帐户或具有相同权限的用户;(2)数据库属主:当前数据库的拥有者;)数据库属主:当前数据库的拥有者;(3)对象的属主:当前对
14、象的拥有者;)对象的属主:当前对象的拥有者;(4)数据库用户:不属于以上用户的其它用户。)数据库用户:不属于以上用户的其它用户。2、权限的状态:、权限的状态:(1)授予权限:授予允许用户帐户执行某些操作的语句权限和)授予权限:授予允许用户帐户执行某些操作的语句权限和对象权限;对象权限;(2)禁止权限:禁止某些用户或角色的权限。)禁止权限:禁止某些用户或角色的权限。(3)撤消权限:废除以前授予或禁止的权限。)撤消权限:废除以前授予或禁止的权限。授予、禁止和撤消权限只能在当前数据库中进行。授予、禁止和撤消权限只能在当前数据库中进行。Copyright2008Copyright2008173、用、用
15、SQL语句授予语句授予语句语句权限:权限:(1)语法:)语法:grant 权限权限 to 用户用户(2)例:)例:grant create table,create view to dbuserzhao 4、用、用SQL语句禁止语句禁止语句语句权限:权限:(1)语法:)语法:deny 权限权限 to 用户用户(2)例:)例:deny create table to dbuserzhao Copyright2008Copyright2008185、用、用SQL语句授予语句授予对象对象权限权限(1)语法:)语法:grant 权限权限 ON 数据库对象数据库对象 TO 用户用户 WITH GRANT
16、 OPTION(2)例:)例: grant select on course to dbuserzhao6、用、用SQL语句禁止语句禁止对象对象权限权限(1)语法:)语法:deny 权限权限 ON 数据库对象数据库对象 TO 用户用户(2)例:)例: deny select on course to dbuserzhaoCopyright2008Copyright2008197、用、用SQL语句撤消对象权限:语句撤消对象权限:(1)语法:)语法:revoke 权限权限 on 数据库对象数据库对象 from 用户用户 例:例:revoke select on student from dbuse
17、rzhao 8、用、用SQL语句撤消语句权限:语句撤消语句权限:(1)语法:)语法:revoke 权限权限 from 用户用户 例:例:revoke create table from dbuserzhaoCopyright2008Copyright200820问题问题1解决方法解决方法解决赵老师能查询本班学生的选课信息解决赵老师能查询本班学生的选课信息Create view g99402xk asSelect sname,cno,gradefrom student,scWhere student.sno=sc.sno and student.clno=g99402步骤步骤1.创建创建g994
18、02班的选课信息视图班的选课信息视图Copyright2008Copyright200821步骤步骤2.把访问该视图的权限授予赵老师把访问该视图的权限授予赵老师步骤步骤3.验证赵老师能否访问视图(以验证赵老师能否访问视图(以logzhao登登录)录)grant select on g99402xk to dbuserzhaoSelect * from g99402xkCopyright2008Copyright200822 假如学校新增假如学校新增10个班主任,他们都要在学生表个班主任,他们都要在学生表中添加、修改和删除学生信息,要各个设置权中添加、修改和删除学生信息,要各个设置权限,方便吗?
19、限,方便吗?问题问题2?Copyright2008Copyright200823一、角色一、角色 SQL Server 2000中,通过对相同权限的用户中,通过对相同权限的用户进行分组,然后再对组进行授权的方式来管理用进行分组,然后再对组进行授权的方式来管理用户的权限。而组是通过角色来实现的。角色分为:户的权限。而组是通过角色来实现的。角色分为:服务器角色和数据库角色。服务器角色和数据库角色。 1、服务器角色:是服务器级的对象,只能包含、服务器角色:是服务器级的对象,只能包含登录名。登录名。2、数据库角色:是数据库级的对象,只能包含、数据库角色:是数据库级的对象,只能包含用户名。用户名。角色角
20、色Copyright2008Copyright200824二、固定服务器角色二、固定服务器角色 1、固定服务器角色及功能(、固定服务器角色及功能(sp_helpsrvrole可浏览固定服务器角色)可浏览固定服务器角色)角色功能sysadmin能够执行任何任务securityadmin负责系统的安全管理,能够管理和审核服务器登录名serveradmin能够配置服务器的设置setupadmin能够安装、修复processadmin能够管理SQL Server系统的进程diskadmin能够管理磁盘文件dbcreator能够创建和修改数据库bulkadmin能够执行大容量数据的插入数据操作Copyr
21、ight2008Copyright2008252、为登录帐户指定服务器角色、为登录帐户指定服务器角色(1)语法:)语法:sp_addsrvrolemember 登录名登录名,服务器角色名服务器角色名 sp_addsrvrolemember lily,sysadmin3、为登录帐户收回服务器角色、为登录帐户收回服务器角色(1)语法:)语法:sp_dropsrvrolemember 登录名登录名,服务器角色名服务器角色名 sp_dropsrvrolemember lily,sysadminCopyright2008Copyright200826三、数据库角色三、数据库角色1、固定数据库角色及功能、
22、固定数据库角色及功能角色功能db_owner数据库属主,在特定数据库内具有全部权限db_accessadmin能够添加、删除数据库用户和角色db_securityadmin可以管理全部权限、对象所有权、角色和角色成员资格db_ddladmin能够添加、删除和修改数据库对象db_backupoperator能够备份和恢复数据库db_datareader能够从任意表中读出数据db_datawriter能够对任意表插入、修改和删除数据db_denydatareader不允许从表中读数据db_denydatawriter不允许改变表中的数据 (另见(另见P242 特殊的数据库角色特殊的数据库角色pub
23、lic)Copyright2008Copyright2008272、为数据库角色添加成员、为数据库角色添加成员(1)语法:)语法: sp_addrolemember 角色名角色名,用户名用户名(2)例:)例:sp_addrolemember db_datareader,GUEST3、为数据库角色删除成员、为数据库角色删除成员(1)语法:)语法: sp_droprolemember 角色名角色名,用户名用户名(2)例:)例:sp_droprolemember db_datareader,GUEST4、查看固定数据库角色:、查看固定数据库角色:sp_helpdbfixedroleCopyright
24、2008Copyright200828步骤步骤1:创建班主任角色:创建班主任角色 use mydb1 EXEC sp_addrole m_role步骤步骤2:对角色授权:对角色授权步骤步骤3:创建各班主任登录:创建各班主任登录 sp_addlogin logteac1, 01 sp_addlogin logteac2, 02解决问题解决问题 grant select,delete,update,insert on student to m_roleCopyright2008Copyright200829步骤步骤5:使用户成为角色成员:使用户成为角色成员 sp_addrolemember m_r
25、ole,dbuser1 sp_addrolemember m_role,dbuser2步骤步骤6: 验证插入权限验证插入权限步骤步骤4:创建各登录对应的用户:创建各登录对应的用户 sp_grantdbaccess logteac1, dbuser1 sp_grantdbaccess logteac2, dbuser2 insert into student(sno,sname,ssex,clno,sdept)values (99002,holly,女女, g99402,IS)Copyright2008Copyright200830n删除登录、用户、角色删除登录、用户、角色 sp_droplogin sp_dropuser sp_droprole企业管理器管理角色(创建角色、为角色授企业管理器管理角色(创建角色、为角色授权、添加用户等)权、添加用户等)删除删除Copyright2008Copyright200831n登录管理登录管理使得可以连到数据库服务器使得可以连到数据库服务器n用户管理用户管理使得可以连到数据库使得可以连到数据库n权限管理权限管理对用户授权对用户授权n角色管理角色管理权限的集合权限的集合本章小结本章小结