1、第16章 SQL Server安全管理,SQL Server 2000的安全机制 SQL Server登录帐户管理 数据库用户管理 角色管理 权限管理,应知: SQL SERVER 2000 的安全验证模式 登录帐号,数据库用户的作用 角色的概念和作用应会: 登录帐号和用户的创建以及权限设置和撤销 角色创建和授权,应知应会,专业词汇,Authentication Mode 验证模式 Security 安全 Login account 登录帐号 User 用户 Role 角色 Object permission 对象权限 Statement permission 语句权限 Grant 授权 Re
2、voke 撤消,SQL Server 2000的安全机制,操作系统的安全性 SQL Server服务器的安全性 数据库的安全性 数据库对象的安全性,SQL Server验证模式,SQL Server两种验证模式1. 仅Windows 验证2. SQL Server和Windows的混合验证设置安全认证模式,问题1,赵老师当了g99402班的班主任,他要能查到全校的课程信息以及本班学生的选课信息,如何让他有权查到这些信息。,?,安全管理,一个用户要对某一个数据库进行操作 ,必须同时满足两个条件: 能连接到SQL Server服务器(连接权) 有执行该操作的权限(访问权),SQL Server登录
3、帐户管理,必须有合法的登录账号才能建立与SQL Server的连接 一、使用SQL语言创建SQL Server登录帐户 1、语法:sp_addlogin 用户名,密码,登录用户使用的默认数据库【例】创建一个登录帐户:名为logzhao,密码为01,使用的默认数据库为mydb1EXEC sp_addlogin logzhao,01,mydb1,另可以使用企业管理器创建登录帐户,二、查看登录帐户sp_helplogins 三、修改登录帐户 sp_defaultdb, sp_defaultlauguage, sp_password 四、删除登录帐户1、语法:sp_droplogin 帐户名例:sp_
4、droplogin logzhao,数据库用户管理,一、数据库用户名和登录名的关系1、登录名是访问SQL Server的通行证,但并不能访问服务器中的数据库;2、要访问特定的数据库必须要有用户名,用户名的信息存放在该数据库的sysusers表中,用户名没有密码;3、数据库用户名是一个登录帐户在某个数据库中的映射;一个登录帐户可以同时与多个数据库发生关联;4、只有登录名创建完成后,才能为其创建数据库用户名。,二、使用SQL语句创建数据库用户1、语法:sp_grantdbaccess 登录名 ,用户名【例】在数据库中创建用户dbuserzhao,对应的登录帐号是logzhao。use mydb1
5、exec sp_grantdbaccess logzhao, dbuserzhao2、说明:(1)在执行本存储过程前,登录名必须已经存在; (2)一般情况下,登录名和用户名相同,所以第二个参数通常省略;(3)在执行本存储过程前,首先确认当前使用的数据库是要增加用户的数据库;,三、使用SQL语句查看数据库用户sp_helpuser 四、使用SQL语句删除数据库用户语法:sp_revokedbaccess 用户名例:sp_revokedbaccess dbuserzhao五、两个特殊数据库用户1. dbo2. guest,一、权限(Permission)类型:权限有三种类型:默认权限、对象权限和语
6、句权限。1、默认权限:也称为暗指权限。当数据库用户被分配到某一角色后,这些数据库用户就获得了该角色的默认权限。2、对象权限:用户拥有对数据库对象的访问和操作权限。共分为5种:(1)查询(SELECT):拥有对某个表的访问权限。(2)插入(INSERT):可以向表中插入数据。(3)修改(UPDATE):可以对表中的数据进行更新。(4)删除(DELETE):可以删除表中的数据。(5)执行(EXECUTE):可以执行存储过程。,权限管理,3、语句权限:通常授予需要在数据库中创建或修改对象、执行数据库和事务日志备份的用户。如果一个用户获得了某个语句的权限,该用户就具有了执行该语句的权力。共包含9种权限
7、: (1)BACKUP DATABASE:备份数据库; (2)BACKUP LOG:备份事务日志; (3)CREATE DATABASE:创建新的数据库; (4)CREATE DEFAULT:创建缺省; (5)CREATE PROCEDURE:创建存储过程; (6)CREATE FUNCTION:创建用户定义函数; (7)CREATE RULE:创建规则; (8)CREATE TABLE:创建表; (9)CREATE VIEW:创建视图。,二、权限的验证过程:1、用户执行某项操作,相应的SQL语句通过网络发送到SQL Server服务器;2、SQL Server服务器收到SQL语句,检查该用户
8、是否具有对操作对象的权限权限及执行这些语句的权限;3、如果SQL Server服务器权限验证通过,SQL Server系统执行相应的操作,否则,系统返回出错信息。,三、管理权限:1、管理权限的用户:(1)系统管理员:有sa帐户或具有相同权限的用户;(2)数据库属主:当前数据库的拥有者;(3)对象的属主:当前对象的拥有者;(4)数据库用户:不属于以上用户的其它用户。2、权限的状态:(1)授予权限:授予允许用户帐户执行某些操作的语句权限和对象权限;(2)禁止权限:禁止某些用户或角色的权限。(3)撤消权限:废除以前授予或禁止的权限。授予、禁止和撤消权限只能在当前数据库中进行。,3、用SQL语句授予语
9、句权限:(1)语法:grant 权限 to 用户(2)例:grant create table,create view to dbuserzhao 4、用SQL语句禁止语句权限:(1)语法:deny 权限 to 用户(2)例:deny create table to dbuserzhao,5、用SQL语句授予对象权限(1)语法:grant 权限 ON 数据库对象 TO 用户 WITH GRANT OPTION(2)例:grant select on course to dbuserzhao6、用SQL语句禁止对象权限(1)语法:deny 权限 ON 数据库对象 TO 用户(2)例:deny s
10、elect on course to dbuserzhao,7、用SQL语句撤消对象权限:(1)语法:revoke 权限 on 数据库对象 from 用户例:revoke select on student from dbuserzhao8、用SQL语句撤消语句权限:(1)语法:revoke 权限 from 用户例:revoke create table from dbuserzhao,问题1解决方法,解决赵老师能查询本班学生的选课信息,Create view g99402xk as Select sname,cno,grade from student,sc Where student.sn
11、o=sc.sno and student.clno=g99402,步骤1.创建g99402班的选课信息视图,步骤2.把访问该视图的权限授予赵老师,步骤3.验证赵老师能否访问视图(以logzhao登录),grant select on g99402xk to dbuserzhao,Select * from g99402xk,假如学校新增10个班主任,他们都要在学生表中添加、修改和删除学生信息,要各个设置权限,方便吗?,问题2,?,一、角色SQL Server 2000中,通过对相同权限的用户进行分组,然后再对组进行授权的方式来管理用户的权限。而组是通过角色来实现的。角色分为:服务器角色和数据库
12、角色。1、服务器角色:是服务器级的对象,只能包含登录名。2、数据库角色:是数据库级的对象,只能包含用户名。,角色,二、固定服务器角色1、固定服务器角色及功能(sp_helpsrvrole可浏览固定服务器角色),2、为登录帐户指定服务器角色 (1)语法: sp_addsrvrolemember 登录名,服务器角色名sp_addsrvrolemember lily,sysadmin3、为登录帐户收回服务器角色 (1)语法:sp_dropsrvrolemember 登录名,服务器角色名sp_dropsrvrolemember lily,sysadmin,三、数据库角色1、固定数据库角色及功能,(另见
13、P242 特殊的数据库角色public),步骤1:创建班主任角色use mydb1EXEC sp_addrole m_role,步骤2:对角色授权,步骤3:创建各班主任登录,sp_addlogin logteac1, 01sp_addlogin logteac2, 02,解决问题,grant select,delete,update,insert on student to m_role,步骤5:使用户成为角色成员sp_addrolemember m_role,dbuser1sp_addrolemember m_role,dbuser2,步骤6: 验证插入权限,步骤4:创建各登录对应的用户,sp_grantdbaccess logteac1, dbuser1sp_grantdbaccess logteac2, dbuser2,insert into student(sno,sname,ssex,clno,sdept) values (99002,holly,女, g99402,IS),删除登录、用户、角色sp_droplogin sp_dropusersp_droprole,企业管理器管理角色(创建角色、为角色授权、添加用户等),删除,登录管理使得可以连到数据库服务器 用户管理使得可以连到数据库 权限管理对用户授权 角色管理权限的集合,本章小结,