数据库安全及访问控制.ppt_第1页
数据库安全及访问控制.ppt_第2页
数据库安全及访问控制.ppt_第3页
数据库安全及访问控制.ppt_第4页
数据库安全及访问控制.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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平

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

6、ows NT登录帐户建立与删除 16.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账户

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

8、权限。其语法格式为: sp_grantlogin loginame=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

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

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

11、模式。设置成混合认证模式后,可以使用系统存储过程或ssms创建SQL Server登录标识。,1.创建SQL Server登录标识 方法一:使用系统存储过程 语法格式: sp_addlogin loginame=login ,passwd=password ,defdb=database ,deflanguage=language ,sid=sid ,encryptopt=encryption_option,参数说明: Login为注册标识或SQL Server用户名,长度为1到128个字符,其中可以包括字母、符号和数字,但不能是空字符串,不能包含,不能与现有登录标识同名; Passwd为口令

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

13、户注册到SQL Server时使用的默认语言代码。,例:创建SQL Server登录账户wang。 EXEC sp_addlogin loginame= wang, passwd=1234 -新建登录标识wang EXEC sp_addlogin loginame= wang1, passwd=1234 , defdb=stu 方法二:使用ssms select * from sys.syslogins,2用新建SQL server登录用户登录SQL Server 首先设置安全认证模式成混合模式,再将登录的默认数据库选择成用户自己建立的数据库,在建立该用户访问该数据库权限的基础上,启动ssms

14、,先断开原来的连接,再重新连接,然后选择SQL server身份认证,输入新的用户名和密码即可用新用户身份访问SQL Server。,3、删除SQL server 登录标识 如果管理员要禁止某个用户连接SQL server 服务器,则可调用系统存储过程sp_droplogin或使用ssms将其登录标识从系统中删除。 方法一:使用系统存储过程 语法格式: sp_droplogin loginame = login 参数说明: login为存储在syslogin系统表中的SQL server登录标识。删除标识也就是删除该用户在syslogin表中的对应记录。 方法二:使用ssms 删除步骤类似上述

15、Windows账户删除。,16.3 数据库访问权限的建立与删除 在数据库中,一个用户或工作组取得合法的登录帐号,只表明该帐号通过了Windows NT认证或者SQL Server认证,但不能表明其可以对数据库数据和数据库对象进行某种或者某些操作,只有当他同时拥有了数据库访问权限后,才能够访问数据库。,16.3.1 建立用户访问数据库的权限 16.3.2 删除用户访问数据库的权限,16.3.1建立用户访问数据库的权限 方法一:使用系统存储过程 语法格式: sp_grantdbaccess loginame=login ,name_in_db=name_in_db 将登录账号用户或组添加到当前数据

16、库,使该用户能够具有在当前数据库中执行活动的权限。 参数说明: login是登录标识名称或Windows NT/2003用户或用户组名称。 name_in_db是在数据库中为login参数指定登录标识所创建的用户名称,它可以与登录名称不同,也可以相同。省略该参数时,所创建的数据库用户名称与login相同。,例:将上述建立的Windows 用户“ZUFE-MXHmeng” 添加到“教学管理”数据库,并取名MANAGER。 USE 教学管理 GO EXEC sp_grantdbaccess ZUFE-MXHmeng, MANAGER GO 注意: sa不能添加到数据库中; 只有sysadmin固定

17、服务器角色、db_accessadmin和db_owner固定数据库角色成员才能执行sp_grantdbaccess; 不能从用户定义的事务中执行sp_grantdbaccess。 方法二:使用ssms,16.3.2 删除用户访问数据库的权限 方法一:使用系统存储过程 语法格式: sp_revokedbaccess name_in_db=name_in_db 参数说明: name_in_db是在数据库中指定登录标识所创建的用户名称。 例16-11删除windows账户“ZUFE-MXHmeng” 名为“MANAGER”访问“教学管理”数据库的访问权限。 USE 教学管理 GO EXEC sp_

18、revokedbaccess MANAGER GO 方法二:使用ssms。,16.4 角色管理,角色是一个强大的工具,可以将用户集中到一个单元中,然后对该单元应用权限。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。 管理员和数据库拥有者在设置访问权限时,应首先建立角色,并将访问权限集中授予角色,之后将需要拥有这一权限的用户加入到角色中,这些用户即继承角色的访问权限。需要撤消用

19、户的访问权限时,将用户从角色中删除即可。,16.4.1 固定服务器角色,1、查看固定服务器角色,2、添加固定服务器角色成员,3、删除固定服务器角色成员,4、用T-SQL进行固定服务器角色成员管理,在SQL Server中使用以下两个存储过程来添加或删除固定服务器角色成员: sp_addsrvrolemember loginame=login,rolename=role sp_dropsrvrolemember loginame=login,rolename=role 其中,login为登录标识名称,可以为SQL Server登录标识或Windows NT用户帐户。 role为固定服务器角色名称

20、。,例如: sp_addsrvrolemember ZUFE-MXH meng,sysadmin go sp_dropsrvrolemember ZUFE-MXH meng,sysadmin go,16.4.2 固定数据库角色,1、查看固定数据库角色2、添加固定数据库角色成员3、删除固定数据库角色成员,4、用T-SQL进行数据库角色成员管理,在SQL Server中使用以下两个存储过程来添加或删除固定数据库角色成员和用户自定义数据库角色: sp_addrolemember rolename=role,membername=security_account sp_droprolemember r

21、olename=role,membername=security_account 其中,role为固定服务器角色名称或当前数据库中自定义角色名称。 security_account为待添加或删除的SQL Server登录标识、其他角色或Windows NT/2003用户帐户。当添加时,如果当前数据库中没有建立Windows NT/2003用户帐户安全帐户,数据库用户帐户被自动建立。删除时,security_account必须为当前数据库的一个有效用户帐户。 sp_addrolemember Db_owner,wang,5应用程序角色建立与删除,前面介绍的标准角色对访问控制实现在数据库一级,它决

22、定用户能够访问的数据库及其对象。下面介绍另一种访问控制方法应用程序角色。它不同于标准角色,它不是根据用户,而是根据用户所运行的应用程序决定当前连接能否访问数据库对象。 使用应用程序角色的直接原因有以下两个方面: 第一、限制访问数据库所使用的应用程序,提高系统安全性。例如,在一个财务系统中,用户添加到数据库中的数据不希望任何非法用户通过其他任何途径进行访问,而只允许通过财务系统自身检验后的合法用户访问,这时使用应用程序角色就能达到这一目的。 第二、提高SQL Server服务器的运行性能。因为应用程序角色只允许指定的应用程序运行,这能避免用户在SQL Server服务器上运行其他程序,从而提高数

23、据库系统的运行性能。,(1)建立应用程序角色 SQL Server中,只有固定服务器角色sysadmin成员、固定数据库角色db_owner和db_securityadmin成员才能运行以下存储过程创建或删除应用程序角色: sp_addapprole rolename=role,password=password sp_dropapprole rolename=role 例如、在教学管理数据库中建立应用程序角色查询,其口令为123。 USE 教学管理 GO EXEC sp_addapprole 查询,123 GO,(2)激活和使用应用程序角色 建立应用角色后,SQL Server数据库应用程序

24、可以调用系统存储过程sp_setapprole激活角色。其语法格式为: sp_setapprole rolename=role,password= Encrypt N password|password,encrypt=encrypt_style 其中,Encrypt N选项要求应用程序在向SQL Server传递应用程序角色口令之前,将其加密。 encrypt_style说明加密方式,它有以下两种取值: none:用明文方式传递,这时默认方式; odbc:使用ODBC规范定义的Encrypt加密函数对角色口令进行加密,例如,在一个客户端应用程序中可以执行以下语句激活前面创建的应用程序角色查询

25、。 USE 教学管理 GO EXEC sp_setapprole 查询,123,odbc GO,应用程序角色与标准角色相比,二者之间存在以下差别: (1)应用程序角色不包含任何成员,而标准角色则拥有自己的成员。 (2)默认时,应用程序角色是无效的,只有当数据库应用程序执行系统存储过程sp_approle,并为应用程序角色提供正确的口令后才激活应用程序角色。而标准角色一直保持有效。 (3)应用程序角色激活后,应用程序角色所拥有的访问权限才起作用。这时,它屏蔽掉标准角色中的访问权限。也就是说,应用程序角色激活后,无论连接用户是否拥有对数据库的访问权限,SQL Server只根据应用程序角色的访问权

26、限判断应用程序能否操作指定的数据库。 (4)在运行应用程序所建立的连接断开后,应用程序角色即随之失去作用。,16.5 数据库权限管理,当用户成为数据库中的合法用户之后,他除了具有一些系统表的查询权之外,并不对数据库中的对象具有任何操作权,因此,下一步就需要为数据库中的用户授予数据库对象的操作权。,16.5.1 权限种类,1、对象权限,2、语句权限 语句权限决定用户能否操作数据库和数据对象,如表、视图、存储过程、默认和规则等。语句权限决定用户能否执行以下语句: . CREATE DATABASE:创建数据库。 . CREATE DEFAULT:在数据库中建立默认值。 . CREATE PROCE

27、DURE:在数据库中创建存储过程。 . CREATE FUNCTION:在数据库中创建用户自定义函数。 . CREATE RULE:在数据库中创建规则。 . CREATE TABLE:在数据库中创建表。 . CREATE VIEW:在数据库中创建视图。 . BACKUP DATABASE:备份数据库。 . BACKUP LOG:备份数据库日志。 在SQL Server中,每个数据库都有各自独立的权限保护,所以对于不同的数据库要分别向用户授予语句权限。(CREATE DATABASE 除外)。,3、隐含权限 是指系统安装以后有些用户和角色不必授权就有的许可。 SQL Server预定义的固定服务

28、器角色、固定数据库角色和数据库对象所有者均具有隐含权限。,16.5.2 权限管理,1、使用ssms管理权限,2、使用T-SQL管理权限,T-SQL中的权限管理语句有以下三种: . GRANT:允许权限。 . DENY:禁止权限。 . REVOKE:取消允许权限或禁止权限设置。 由于SQL Server预定义角色的隐含权限是固定的,所以不能使用以上语句重新设置,权限管理语句只能设置用户、角色等权限。,(1)语句权限管理,语句授权的命令格式是: GRANTALL|statement_listTOPUBLIC|name_list DENY ALL|statement_listTOPUBLIC|nam

29、e_list REVOKE ALL|statement_listFROM PUBLIC|name_list ALL即全部语句,只有系统管理员可以使用此选项,因为只有系统管理员可以授予或收回CREATE DATABASE的权限; statement_list给出授权的语句列表,这些语句可以是CREATE DATABASE (如果执行这个语句的用户是系统管理员)、CREATE DEFAULT、CREATE PROCEDURE、CREATE FUNCTION、CREATE RULE、CREATE TABLE、CREATE VIEW、BACKUP DATABASE和DUMP TRANSACTION等;

30、 PUBLIC说明这些语句的执行权限将授予所有的用户; name_list是数据库用户名或组名或角色名,说明这些语句的执行权限授予哪些用户或组。,例1系统管理员授予注册名为meng的用户CREATE DATABASE的权限。 USE master GO GRANT CREATE DATABASE TO meng GO 例2授予用户STU_MANAGER(ZUFE-MXHmeng登录标识的名称)具有创建表的权限。 USE 教学管理 GO GRANT CREATE TABLE TO MANAGER GO,2、 对象权限管理 数据库对象的授权命令格式是: GRANTALL|Permission_li

31、st 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说明将指定对象的所有操作权限都授予指定的用户,只有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 PUBLIC|name_list CASCADE,数据库对象的拒绝权限的命令格式是:,DENY 语句中的CASCADE选项有以下两个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论