数据库安全及访问控制.ppt

上传人:牧羊曲112 文档编号:5985576 上传时间:2023-09-11 格式:PPT 页数:55 大小:524KB
返回 下载 相关 举报
数据库安全及访问控制.ppt_第1页
第1页 / 共55页
数据库安全及访问控制.ppt_第2页
第2页 / 共55页
数据库安全及访问控制.ppt_第3页
第3页 / 共55页
数据库安全及访问控制.ppt_第4页
第4页 / 共55页
数据库安全及访问控制.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《数据库安全及访问控制.ppt》由会员分享,可在线阅读,更多相关《数据库安全及访问控制.ppt(55页珍藏版)》请在三一办公上搜索。

1、SQL Server,第16章数据库安全及访问控制,16.1 SQL Server安全认证模式与设置 16.2 SQL Server登录账户的管理 16.3 数据库访问权限的建立与删除 16.4 角色管理 16.5 数据库权限管理,第16章数据库安全及访问控制,16.1 SQL Server安全认证模式与设置,16.1.1 用户安全认证模式 16.1.2 设置安全认证模式,16.1 SQL Server安全认证模式与设置,SQL Server作为DBMS,采用了三个层次的安全控制策略:1、用户首先登录到数据库服务器上(是服务器合法用户)2.然后使服务器用户(login)成为某个数据库的合法用户

2、,从而能够访问数据库。3.让数据库用户在数据库中具有一定的权限(数据操作权、创建对象权等),16.1.1 用户安全认证模式,安全帐户认证是用来确认登录SQL Server的用户的登录帐号和密码的正确性,由此来验证其是否具有连接SQL Server的权限。SQL Server 提供了两种确认用户的认证模式:(一)Windows NT认证模式。(二)混合认证模式。,(一)Windows NT认证模式,SQL Server数据库系统通常运行在Windows NT服务器平台上,而NT作为网络操作系统,本身就具备管理登录、验证用户合法性的能力,因此Windows NT认证模式正是利用了这一用户安全性和帐

3、号管理的机制,允许SQL Server也可以使用NT的用户名和口令。在这种模式下,用户只需要通过Windows NT的认证,就可以连接到SQL Server,而SQL Server本身也就不需要管理一套登录数据。,需要注意的是:登录前必须将Windows NT账号加入到SQL Server 中,才能采用Windows NT账号登录到SQL Server上。,(二)混合认证模式,混合认证模式允许用户使用Windows NT安全性或SQL Server安全性连接到SQL Server。在这种方式下,对于可信连接用户的连接请求,系统将采用Windwos NT/2003认证模式,而对于非可信连接用户则

4、采用SQL Server认证模式。采用SQL Server模式认证时,系统检查是否已经建立了该用户的登录标识以及二者的口令是否相同。通过认证后,用户应用程序才可连接到SQL Server服务器,否则系统将拒绝用户的连接请求。,SQL Server对登录标识的认证过程可用下图表示:,无论采用以上哪种认证模式,在用户连接到SQL Server后,他们的操作完全相同。比较起来,两种认证模式各有优劣:(1)Windows认证更为安全。(2)SQL Server认证管理较为简单,它允许应用程序的所有用户使用同一登录标识。为了便于用户帐户的集中管理,在Windows NT/2003平台下,最好选用Wind

5、ows认证模式。,16.1.2 设置安全认证模式,其主要过程如下:1.打开SSMS,用右键单击要设置认证模式的服务器,从快捷菜单中选择“属性(properties)”选项,则出现SQL Server属性对话框。2.在SQL Server属性对话框中选择安全性选项。3.在安全性选项栏中,身份验证中可以选择要设置的认证模式,同时审核级别中还可以选择跟踪记录用户登录时的哪种信息,例如登录成功或登录失败的信息等。4.在启动服务帐户中设置当启动并运行SQL Server时默认的登录者中哪一位用户。,16.2 SQL Server登录账户的管理,16.2.1 Windows NT登录帐户建立与删除 16.

6、2.2 SQL Server登录账户建立与删除,系统内置已有的登录帐号:SQL Server有三个默认(内置)的用户登录帐号:即sa、builtinadministrators和guest。Sa:SQL Server验证模式的系统管理员帐号;builtinadministrators:是一个windows组帐号,表示所有windows系统管理员(Administrator)组中的用户都可以登录到SQL Server;Guest:是来宾帐号。,16.2.1 Windows NT登录帐户建立与删除,1、建立其他新的Windows NT/2003账户 操作步骤如下:以Administrators登录

7、到Windows 2003;选择“开始”“设置”“控制面板”“管理工具”“计算机管理”;在计算机管理窗口,选择“本地用户和组”,单击右键,在快捷菜单上单击“新用户”,进入如下图界面;在“新用户”对话框中输入新用户名和密码(这里用户名是meng,密码是1111);单击【确定】按钮,一个新的Windows NT/2003账户建立成功。,2.将Windows NT/2003账户加入到SQL Server中 方法一:使用系统存储过程 在SQL Server中,授予Windows NT/2003用户或用户组连接SQL Server服务器的权限。其语法格式为:sp_grantlogin loginame=

8、login 其中,login是Windows NT/2003用户或用户组名称,其格式为“域用户名称”。对于本地用户或组,则域名即为本地计算机名,其格式为“计算机名用户名称”。方法二:使用,例:将新建的Windows NT账户meng用系统存储过程添加到SQL Server系统中。EXEC sp_grantlogin ZUFE-MXHmeng-ZUFE-MXH是计算机名,meng是Windows 2003用户,例:将Windows NT账户deng用方法添加到SQL Server系统中。,3.用新建Windows 2003用户登录SQL Server 如果想用新建Windows 2003用户登录

9、SQL Server,首先将登录的默认数据库选择成用户自己建立的数据库(如果默认数据库是master,新建用户登录权限限制不起作用)。在建立访问该数据库权限的基础上,然后可以在Windows 2003中选择“开始”“关机”,注销原来的账户,用新的账户(比如meng)登录Windows 2003。登录成功后,启动SSMS就可以新的用户自动进入SQL Server。,4.废除Windows NT用户和SQL Server的连接 系统存储过程sp_grantlogin所添加的登录标识均存储在SQL Server的syslogins系统表中。以系统管理员身份调用系统存储过程sp_revokelogin

10、或从ssms中能够将它们从syslogin系统表中删除,这时在登录窗口中被删除的登录标识也将不再存在(需要刷新界面)。方法一:使用系统存储过程 语法格式:sp_revokelogin loginame=login 参数说明:login是待删除的SQL Server服务器登录标识。方法二:使用ssms,16.2.2 SQL Server登录账户建立与删除,在Windows NT/2003环境下,如果要使用SQL Server登录标识登录SQL Server,首先应将SQL Server的认证模式设置为混合模式。设置成混合认证模式后,可以使用系统存储过程或ssms创建SQL Server登录标识。

11、,1.创建SQL Server登录标识方法一:使用系统存储过程语法格式:sp_addlogin loginame=login,passwd=password,defdb=database,deflanguage=language,sid=sid,encryptopt=encryption_option,参数说明:Login为注册标识或SQL Server用户名,长度为1到128个字符,其中可以包括字母、符号和数字,但不能是空字符串,不能包含,不能与现有登录标识同名;Passwd为口令,默认口令是NULL(即不需要口令),用户可以在任何时候使用;Database指定用户在注册时连接到的默认数据库

12、,如果没有指定默认数据库,则默认数据库是master;sid 是新建登录标识的安全标识号,一般由系统自动建立。encryption_option说明登录标识口令是否需要加密存储到系统表中,其数据类型为varchar(20),它有以下三种取值:NULL:默认设置,口令加密存储;skip_encryption:要求不要加密口令。skip_encryption_old:所提供的口令被SQL Server前期版本加密,这种取值主要用于早期版本数据库的升级。language说明用户注册到SQL Server时使用的默认语言代码。,例:创建SQL Server登录账户wang。EXEC sp_addlog

13、in loginame=wang,passwd=1234-新建登录标识wangEXEC sp_addlogin loginame=wang1,passwd=1234,defdb=stu方法二:使用ssmsselect*from sys.syslogins,2用新建SQL server登录用户登录SQL Server首先设置安全认证模式成混合模式,再将登录的默认数据库选择成用户自己建立的数据库,在建立该用户访问该数据库权限的基础上,启动ssms,先断开原来的连接,再重新连接,然后选择SQL server身份认证,输入新的用户名和密码即可用新用户身份访问SQL Server。,3、删除SQL se

14、rver 登录标识如果管理员要禁止某个用户连接SQL server 服务器,则可调用系统存储过程sp_droplogin或使用ssms将其登录标识从系统中删除。方法一:使用系统存储过程语法格式:sp_droplogin loginame=login参数说明:login为存储在syslogin系统表中的SQL server登录标识。删除标识也就是删除该用户在syslogin表中的对应记录。方法二:使用ssms删除步骤类似上述Windows账户删除。,16.3 数据库访问权限的建立与删除 在数据库中,一个用户或工作组取得合法的登录帐号,只表明该帐号通过了Windows NT认证或者SQL Serv

15、er认证,但不能表明其可以对数据库数据和数据库对象进行某种或者某些操作,只有当他同时拥有了数据库访问权限后,才能够访问数据库。,16.3.1 建立用户访问数据库的权限 16.3.2 删除用户访问数据库的权限,建立用户访问数据库的权限方法一:使用系统存储过程语法格式:sp_grantdbaccess loginame=login,name_in_db=name_in_db将登录账号用户或组添加到当前数据库,使该用户能够具有在当前数据库中执行活动的权限。参数说明:login是登录标识名称或Windows NT/2003用户或用户组名称。name_in_db是在数据库中为login参数指定登录标识所

16、创建的用户名称,它可以与登录名称不同,也可以相同。省略该参数时,所创建的数据库用户名称与login相同。,例:将上述建立的Windows 用户“ZUFE-MXHmeng”添加到“教学管理”数据库,并取名MANAGER。USE 教学管理GOEXEC sp_grantdbaccess ZUFE-MXHmeng,MANAGERGO注意:sa不能添加到数据库中;只有sysadmin固定服务器角色、db_accessadmin和db_owner固定数据库角色成员才能执行sp_grantdbaccess;不能从用户定义的事务中执行sp_grantdbaccess。方法二:使用ssms,16.3.2 删除用

17、户访问数据库的权限方法一:使用系统存储过程语法格式:sp_revokedbaccess name_in_db=name_in_db参数说明:name_in_db是在数据库中指定登录标识所创建的用户名称。例16-11删除windows账户“ZUFE-MXHmeng”名为“MANAGER”访问“教学管理”数据库的访问权限。USE 教学管理GOEXEC sp_revokedbaccess MANAGERGO方法二:使用ssms。,16.4 角色管理,角色是一个强大的工具,可以将用户集中到一个单元中,然后对该单元应用权限。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权

18、限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。管理员和数据库拥有者在设置访问权限时,应首先建立角色,并将访问权限集中授予角色,之后将需要拥有这一权限的用户加入到角色中,这些用户即继承角色的访问权限。需要撤消用户的访问权限时,将用户从角色中删除即可。,16.4.1 固定服务器角色,1、查看固定服务器角色,2、添加固定服务器角色成员,3、删除固定服务器角色成员,4、用T-SQL进行固定服务器角色成员管理,在SQL Server中使用以下两个存储过程来添加或删

19、除固定服务器角色成员:sp_addsrvrolemember loginame=login,rolename=role sp_dropsrvrolemember loginame=login,rolename=role 其中,login为登录标识名称,可以为SQL Server登录标识或Windows NT用户帐户。role为固定服务器角色名称。,例如:sp_addsrvrolemember ZUFE-MXH meng,sysadmin go sp_dropsrvrolemember ZUFE-MXH meng,sysadmin go,16.4.2 固定数据库角色,1、查看固定数据库角色2、添

20、加固定数据库角色成员3、删除固定数据库角色成员,4、用T-SQL进行数据库角色成员管理,在SQL Server中使用以下两个存储过程来添加或删除固定数据库角色成员和用户自定义数据库角色:sp_addrolemember rolename=role,membername=security_account sp_droprolemember rolename=role,membername=security_account其中,role为固定服务器角色名称或当前数据库中自定义角色名称。security_account为待添加或删除的SQL Server登录标识、其他角色或Windows NT/20

21、03用户帐户。当添加时,如果当前数据库中没有建立Windows NT/2003用户帐户安全帐户,数据库用户帐户被自动建立。删除时,security_account必须为当前数据库的一个有效用户帐户。sp_addrolemember Db_owner,wang,5应用程序角色建立与删除,前面介绍的标准角色对访问控制实现在数据库一级,它决定用户能够访问的数据库及其对象。下面介绍另一种访问控制方法应用程序角色。它不同于标准角色,它不是根据用户,而是根据用户所运行的应用程序决定当前连接能否访问数据库对象。使用应用程序角色的直接原因有以下两个方面:第一、限制访问数据库所使用的应用程序,提高系统安全性。例

22、如,在一个财务系统中,用户添加到数据库中的数据不希望任何非法用户通过其他任何途径进行访问,而只允许通过财务系统自身检验后的合法用户访问,这时使用应用程序角色就能达到这一目的。第二、提高SQL Server服务器的运行性能。因为应用程序角色只允许指定的应用程序运行,这能避免用户在SQL Server服务器上运行其他程序,从而提高数据库系统的运行性能。,(1)建立应用程序角色 SQL Server中,只有固定服务器角色sysadmin成员、固定数据库角色db_owner和db_securityadmin成员才能运行以下存储过程创建或删除应用程序角色:sp_addapprole rolename=r

23、ole,password=passwordsp_dropapprole rolename=role例如、在教学管理数据库中建立应用程序角色查询,其口令为123。USE 教学管理GOEXEC sp_addapprole 查询,123GO,(2)激活和使用应用程序角色 建立应用角色后,SQL Server数据库应用程序可以调用系统存储过程sp_setapprole激活角色。其语法格式为:sp_setapprole rolename=role,password=Encrypt N password|password,encrypt=encrypt_style其中,Encrypt N选项要求应用程序在

24、向SQL Server传递应用程序角色口令之前,将其加密。encrypt_style说明加密方式,它有以下两种取值:none:用明文方式传递,这时默认方式;odbc:使用ODBC规范定义的Encrypt加密函数对角色口令进行加密,例如,在一个客户端应用程序中可以执行以下语句激活前面创建的应用程序角色查询。USE 教学管理GOEXEC sp_setapprole 查询,123,odbcGO,应用程序角色与标准角色相比,二者之间存在以下差别:(1)应用程序角色不包含任何成员,而标准角色则拥有自己的成员。(2)默认时,应用程序角色是无效的,只有当数据库应用程序执行系统存储过程sp_approle,并

25、为应用程序角色提供正确的口令后才激活应用程序角色。而标准角色一直保持有效。(3)应用程序角色激活后,应用程序角色所拥有的访问权限才起作用。这时,它屏蔽掉标准角色中的访问权限。也就是说,应用程序角色激活后,无论连接用户是否拥有对数据库的访问权限,SQL Server只根据应用程序角色的访问权限判断应用程序能否操作指定的数据库。(4)在运行应用程序所建立的连接断开后,应用程序角色即随之失去作用。,16.5 数据库权限管理,当用户成为数据库中的合法用户之后,他除了具有一些系统表的查询权之外,并不对数据库中的对象具有任何操作权,因此,下一步就需要为数据库中的用户授予数据库对象的操作权。,16.5.1

26、权限种类,1、对象权限,2、语句权限语句权限决定用户能否操作数据库和数据对象,如表、视图、存储过程、默认和规则等。语句权限决定用户能否执行以下语句:.CREATE DATABASE:创建数据库。.CREATE DEFAULT:在数据库中建立默认值。.CREATE PROCEDURE:在数据库中创建存储过程。.CREATE FUNCTION:在数据库中创建用户自定义函数。.CREATE RULE:在数据库中创建规则。.CREATE TABLE:在数据库中创建表。.CREATE VIEW:在数据库中创建视图。.BACKUP DATABASE:备份数据库。.BACKUP LOG:备份数据库日志。在S

27、QL Server中,每个数据库都有各自独立的权限保护,所以对于不同的数据库要分别向用户授予语句权限。(CREATE DATABASE 除外)。,3、隐含权限是指系统安装以后有些用户和角色不必授权就有的许可。SQL Server预定义的固定服务器角色、固定数据库角色和数据库对象所有者均具有隐含权限。,16.5.2 权限管理,1、使用ssms管理权限,2、使用T-SQL管理权限,T-SQL中的权限管理语句有以下三种:.GRANT:允许权限。.DENY:禁止权限。.REVOKE:取消允许权限或禁止权限设置。由于SQL Server预定义角色的隐含权限是固定的,所以不能使用以上语句重新设置,权限管理

28、语句只能设置用户、角色等权限。,(1)语句权限管理,语句授权的命令格式是:GRANTALL|statement_listTOPUBLIC|name_list DENY ALL|statement_listTOPUBLIC|name_list REVOKE ALL|statement_listFROM PUBLIC|name_listALL即全部语句,只有系统管理员可以使用此选项,因为只有系统管理员可以授予或收回CREATE DATABASE的权限;statement_list给出授权的语句列表,这些语句可以是CREATE DATABASE(如果执行这个语句的用户是系统管理员)、CREATE D

29、EFAULT、CREATE PROCEDURE、CREATE FUNCTION、CREATE RULE、CREATE TABLE、CREATE VIEW、BACKUP DATABASE和DUMP TRANSACTION等;PUBLIC说明这些语句的执行权限将授予所有的用户;name_list是数据库用户名或组名或角色名,说明这些语句的执行权限授予哪些用户或组。,例1系统管理员授予注册名为meng的用户CREATE DATABASE的权限。USE masterGO GRANT CREATE DATABASE TO mengGO例2授予用户STU_MANAGER(ZUFE-MXHmeng登录标识的

30、名称)具有创建表的权限。USE 教学管理GO GRANT CREATE TABLE TO MANAGERGO,2、对象权限管理数据库对象的授权命令格式是:GRANTALL|Permission_list ON table_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_function TO PUBLIC|name_list WITH GRANT OPTION as group|role其中:ALL说明将指定对象的所有操作权限都授

31、予指定的用户,只有sysadmin、db_owner角色成员和数据库对象所有者才可以使用all选项;permission_list是权限列表。.AS group|role:用户可以从多个角色或组中继承权限,在GRANT和REVOKE语句中使用AS选项说明他们要管理的用户从哪个角色或组继承权限。,DENY ALL|Permission_list ON table_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_function TO

32、 PUBLIC|name_list CASCADE,数据库对象的拒绝权限的命令格式是:,DENY 语句中的CASCADE选项有以下两个作用:.授予用户禁止权限。.如果用户拥有WITH GRANT OPTION权限,则撤消该权限。如果用户已使用WITH GRANT OPTION权限授予其他用户权限,则同时撤消其他用户的权限。.如果指定用户拥有WITH GRANT OPTION权限,但DENY语句中没有使用CASCADE选项时,将导致DENY语句运行错误。,GRANT SELECT ON STUDENT TO publicDENY SELECT ON STUDENT TO ma,更新,REVOKE

33、 GRANT OPTION FOR ALL|Permission_list ON table_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_functionFROM PUBLIC|name_list CASCADE as group|role,数据库对象的撤消权限的命令格式是:,REVOKE语句中的GRANT OPTION FOR选项有以下两种作用:.如果REVOKE语句所撤消的对象权限是GRANT语句使用WITH GRANT

34、OPTION 选项授予用户的,则REVOKE语句撤消用户所得到的该对象权限的转授权限,但GRANT语句授予用户的对象权限仍然保留。此外,如果该用户已经使用转授权限向其他用户授予他所得到的对象权限,REVOKE语句将一并撤消这些用户所得到的权限。这时,在REVOKE语句中必须同时使用CASCADE选项。.如果REVOKE语句所撤消的对象权限不是GRANT语句使用WITH GRANT OPTION 选项授予用户的,则REVOKE语句撤消用户所得到的对象权限。这时,在REVOKE语句中必须不使用CASCADE。,例:授予角色教师具有查询学生资料表STUDENT、课程资料表COURSE、教师资料表TEACHER、开课计划表OFFERING和注册选课表ENROLLMENT的权限。USE 教学管理 GO GRANT SELECT ON STUDENT TO 教师 GRANT SELECT ON COURSE TO 教师 GRANT SELECT ON TEACHER TO 教师 GRANT SELECT ON OFFERING TO 教师 GRANT SELECT ON ENROLLMENT TO 教师,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号