数据库安全及访问控制

上传人:cn****1 文档编号:579238876 上传时间:2024-08-26 格式:PPT 页数:55 大小:350KB
返回 下载 相关 举报
数据库安全及访问控制_第1页
第1页 / 共55页
数据库安全及访问控制_第2页
第2页 / 共55页
数据库安全及访问控制_第3页
第3页 / 共55页
数据库安全及访问控制_第4页
第4页 / 共55页
数据库安全及访问控制_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《数据库安全及访问控制》由会员分享,可在线阅读,更多相关《数据库安全及访问控制(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,采用了,

2、采用了三个层次三个层次的安全的安全控制策略:控制策略:1、用户首先登录到数据库服务器上、用户首先登录到数据库服务器上(是是服务器合法用服务器合法用户户)2. 然后使服务器用户(然后使服务器用户(login)成为某个)成为某个数据库的合数据库的合法用户法用户,从而能够访问数据库。,从而能够访问数据库。3. 让数据库用户在数据库中具有一定的让数据库用户在数据库中具有一定的权限权限(数据操数据操作权、创建对象权作权、创建对象权等等)16.1.1 用户安全认证模式安全帐户认证安全帐户认证是用来确认登录是用来确认登录SQL Server的用户的登的用户的登录帐号和密码的正确性,由此来验证其是否具有连录帐

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

4、安全全性性和和帐帐号号管管理理的的机机制制,允允许许SQL Server也也可可以以使使用用NT的的用用户户名名和和口口令令。在在这这种种模模式式下下,用用户户只只需需要要通通过过Windows NT的的认认证证,就就可可以以连连接接到到SQL Server,而而SQL Server本身也就不需要管理一套登录数据。本身也就不需要管理一套登录数据。需要注意的是:登录前必须将需要注意的是:登录前必须将Windows NTWindows NT账号加入到账号加入到SQL Server SQL Server 中,中,才能采用才能采用Windows NTWindows NT账号登录到账号登录到SQL Se

5、rverSQL Server上。上。 (二)混合认证模式混合认证模式允许用户使用混合认证模式允许用户使用Windows NT安全性或安全性或SQL Server安全性连接到安全性连接到SQL Server。在这种方式下,对。在这种方式下,对于可信连接用户的连接请求,系统将采用于可信连接用户的连接请求,系统将采用Windwos NT/2003认证模式,而对于非可信连接用户则采用认证模式,而对于非可信连接用户则采用SQL Server认证模式。采用认证模式。采用SQL Server模式认证时,系统模式认证时,系统检查是否已经建立了该用户的登录标识以及二者的口令检查是否已经建立了该用户的登录标识以及

6、二者的口令是否相同。通过认证后,用户应用程序才可连接到是否相同。通过认证后,用户应用程序才可连接到SQL Server服务器,否则系统将拒绝用户的连接请求。服务器,否则系统将拒绝用户的连接请求。客户连接请求客户连接请求认证模式认证模式Windows认证模式认证模式混合认证模式混合认证模式SQL Server登录标识登录标识登录标识和口令正确?登录标识和口令正确?有效的有效的NT/2003用户帐户?用户帐户?SQL Server拒绝用户连接拒绝用户连接SQL Server接受用户连接接受用户连接NNNYYYSQL Server对登录标识的认证过程可用下图表示:对登录标识的认证过程可用下图表示:无

7、论采用以上哪种认证模式,在用户连接到无论采用以上哪种认证模式,在用户连接到SQL Server后,他们的操作完全相同。比较起来,两种认证后,他们的操作完全相同。比较起来,两种认证模式各有优劣:模式各有优劣:(1)Windows认证更为安全。认证更为安全。(2)SQL Server认证管理较为简单,它允许应用程序认证管理较为简单,它允许应用程序的所有用户使用同一登录标识。的所有用户使用同一登录标识。为了便于用户帐户的集中管理,在为了便于用户帐户的集中管理,在Windows NT/2003平台下,最好选用平台下,最好选用Windows认证模式。认证模式。16.1.2 设置安全认证模式 其主要过程如

8、下:其主要过程如下:1. 打打开开SSMS,用用右右键键单单击击要要设设置置认认证证模模式式的的服服务务器器,从从快快捷捷菜菜单单中中选选择择“属属性性(properties)”选选项项,则则出出现现SQL Server属性对话框。属性对话框。2. 在在SQL Server属性对话框中选择安全性选项。属性对话框中选择安全性选项。3. 在在安安全全性性选选项项栏栏中中,身身份份验验证证中中可可以以选选择择要要设设置置的的认认证证模模式式,同同时时审审核核级级别别中中还还可可以以选选择择跟跟踪踪记记录录用用户户登登录录时时的的哪哪种种信信息息,例如登录成功或登录失败的信息等。例如登录成功或登录失败

9、的信息等。4. 在在启启动动服服务务帐帐户户中中设设置置当当启启动动并并运运行行SQL Server时时默默认认的的登登录者中哪一位用户。录者中哪一位用户。16.2 SQL Server登录账户的管理 16.2.1 Windows NT登录帐户建立与删除登录帐户建立与删除 16.2.2 SQL Server登录账户建立与删除登录账户建立与删除 系统内置已有的登录帐号系统内置已有的登录帐号:SQL Server有有三三个个默默认(内内置置)的的用用户登登录帐号号:即即sa、 builtinadministrators和和guest。 Sa:SQL Server验证模式的系模式的系统管理管理员帐号

10、;号;builtinadministrators: 是一个是一个windows组帐号,号,表示所有表示所有windows系系统管理管理员(Administrator)组中的用中的用户都可以登都可以登录到到SQL Server;Guest:是来是来宾帐号。号。 16.2.1 Windows NT登录帐户建立与删除1 1、建立其他新的建立其他新的Windows NT/2003账户账户 操作步骤如下:操作步骤如下:以以AdministratorsAdministrators登录到登录到Windows 2003Windows 2003; 选选择择“开开始始”“设设置置” “控控制制面面板板” “管管理

11、理工具工具” “计算机管理计算机管理”;在在计计算算机机管管理理窗窗口口,选选择择“本本地地用用户户和和组组”,单单击击右右键,在快捷菜单上单击键,在快捷菜单上单击“新用户新用户”,进入如下图界面;,进入如下图界面;在在“新新用用户户”对对话话框框中中输输入入新新用用户户名名和和密密码码(这这里里用用户名是户名是mengmeng,密码是,密码是11111111););单击单击【确定确定】按钮,一个新的按钮,一个新的Windows NT/2003Windows NT/2003账户建账户建立成功。立成功。 2.将将Windows NT/2003账户加入到账户加入到SQL Server中中 方法一:

12、使用系统存储过程方法一:使用系统存储过程 在在SQL SQL ServerServer中中,授授予予Windows Windows NT/2003NT/2003用用户户或或用用户户组组连连接接SQL SQL ServerServer服务器的权限。其语法格式为:服务器的权限。其语法格式为:sp_grantlogin loginame=sp_grantlogin loginame=loginlogin 其中,其中, loginlogin是是Windows NT/2003Windows NT/2003用户或用户组名称,其用户或用户组名称,其格式为格式为“域域 用户名称用户名称” 。对于本地用户或组,

13、则域名即为本地计对于本地用户或组,则域名即为本地计算机名,其格式为算机名,其格式为“计算机名计算机名 用户名称用户名称”。 方法二:使用方法二:使用 例:将新建的例:将新建的Windows NTWindows NT账户账户mengmeng用系统存储过程添加到用系统存储过程添加到SQL ServerSQL Server系统中。系统中。 EXEC sp_grantlogin ZUFE-MXHmengEXEC sp_grantlogin ZUFE-MXHmeng - ZUFE-MXH是计算机名,meng是Windows 2003用户 例:将例:将Windows NTWindows NT账户账户den

14、gdeng用方法添加到用方法添加到SQL ServerSQL Server系统中系统中 。3.用新建用新建Windows 2003用户登录用户登录SQL Server 如果想用新建如果想用新建Windows 2003用户登录用户登录SQL ServerSQL Server,首先将登录的默认数据,首先将登录的默认数据库选择成用户自己建立的数据库(如果默认数据库是库选择成用户自己建立的数据库(如果默认数据库是mastermaster,新建用户登录权限,新建用户登录权限限制不起作用)。限制不起作用)。 在建立访问该数据库权限的基础上,然后可以在在建立访问该数据库权限的基础上,然后可以在Windows

15、 2003中选择中选择“开开始始”“关机关机”,注销原来的账户,用新的账户(比如,注销原来的账户,用新的账户(比如meng)登录)登录Windows 2003。登录成功后,启动。登录成功后,启动SSMSSSMS就可以新的用户自动进入就可以新的用户自动进入SQL Server。 4.废除废除Windows NT用户和用户和SQL Server的连接的连接 系系统统存存储储过过程程sp_grantloginsp_grantlogin所所添添加加的的登登录录标标识识均均存存储储在在SQL SQL ServerServer的的sysloginssyslogins系系统统表表中中。以以系系统统管管理理员

16、员身身份份调调用用系系统统存存储储过过程程sp_revokeloginsp_revokelogin或或从从ssmsssms中中能能够够将将它它们们从从sysloginsyslogin系系统统表表中中删删除除,这这时时在在登登录录窗窗口口中中被被删删除除的的登登录录标标识也将不再存在(需要刷新界面)。识也将不再存在(需要刷新界面)。方法一:使用系统存储过程方法一:使用系统存储过程 语法格式:语法格式: sp_revokelogin loginame=sp_revokelogin loginame=loginlogin 参数说明:参数说明: loginlogin是待删除的是待删除的SQL Serv

17、erSQL Server服务器登录标识。服务器登录标识。 方法二:使用方法二:使用ssms16.2.2 SQL Server登录账户建立与删除 在在Windows NT/2003Windows NT/2003环境下,如果要使用环境下,如果要使用SQL SQL ServerServer登录标识登录登录标识登录SQL ServerSQL Server,首先应将,首先应将SQL SQL ServerServer的认证模式设置为混合模式。设置成混合认的认证模式设置为混合模式。设置成混合认证模式后,可以使用系统存储过程或证模式后,可以使用系统存储过程或ssmsssms创建创建SQL SQL Server

18、Server登录标识。登录标识。 1.创建创建SQL Server登录标识登录标识方法一:使用系统存储过程方法一:使用系统存储过程语法格式:语法格式:sp_addlogin loginame=sp_addlogin loginame=loginlogin,passwd=,passwd=passwordpassword ,defdb= ,defdb=databasedatabase,deflanguage=,deflanguage=languagelanguage ,sid= ,sid=sidsid,encryptopt=,encryptopt=encryption_optionencrypti

19、on_option参数说明:参数说明:LoginLogin为为注注册册标标识识或或SQL SQL ServerServer用用户户名名,长长度度为为1 1到到128128个个字字符符,其其中中可可以以包包括括字字母、符号和数字,但不能是空字符串,不能包含母、符号和数字,但不能是空字符串,不能包含 ,不能与现有登录标识同名;,不能与现有登录标识同名; PasswdPasswd为口令,默认口令是为口令,默认口令是NULLNULL(即不需要口令),用户可以在任何时候使用;(即不需要口令),用户可以在任何时候使用; DatabaseDatabase指指定定用用户户在在注注册册时时连连接接到到的的默默认

20、认数数据据库库,如如果果没没有有指指定定默默认认数数据据库库,则默认数据库是则默认数据库是mastermaster; sid sid 是新建登录标识的安全标识号,一般由系统自动建立。是新建登录标识的安全标识号,一般由系统自动建立。encryption_optionencryption_option说明登录标识口令是否需要加密存储到系统表中,其数据类说明登录标识口令是否需要加密存储到系统表中,其数据类型为型为varchar(20),varchar(20),它有以下三种取值:它有以下三种取值: NULLNULL:默认设置,口令加密存储;:默认设置,口令加密存储; skip_encryptionsk

21、ip_encryption:要求不要加密口令。:要求不要加密口令。 skip_encryption_oldskip_encryption_old:所所提提供供的的口口令令被被SQL SQL ServerServer前前期期版版本本加加密密,这这种取值主要用于早期版本数据库的升级。种取值主要用于早期版本数据库的升级。languagelanguage说明用户注册到说明用户注册到SQL ServerSQL Server时使用的默认语言代码。时使用的默认语言代码。 例:例:创建建SQL Server登登录账户wang。EXEC sp_addlogin loginame= wang, passwd=12

22、34 -新建登新建登录标识wangEXEC sp_addlogin loginame= wang1, passwd=1234 ,defdb=stu方法二:使用方法二:使用ssmsselect * from sys.syslogins2用新建用新建SQL server登录用户登录登录用户登录SQL Server首首先先设设置置安安全全认认证证模模式式成成混混合合模模式式,再再将将登登录录的的默默认认数数据据库库选选择择成成用用户户自自己己建建立立的的数数据据库库,在在建建立立该该用用户户访访问问该该数数据据库库权权限限的的基基础础上上,启启动动ssmsssms,先先断断开开原原来来的的连连接接,

23、再再重重新新连连接接,然然后后选选择择SQL SQL serverserver身身份份认认证证,输输入入新新的的用用户户名名和和密密码码即即可可用用新新用用户户身份访问身份访问SQL ServerSQL Server。3 3、删除、删除SQL server SQL server 登录标识登录标识如如果果管管理理员员要要禁禁止止某某个个用用户户连连接接SQL SQL server server 服服务务器器,则则可可调调用用系系统存储过程统存储过程sp_droploginsp_droplogin或使用或使用ssmsssms将其登录标识从系统中删除。将其登录标识从系统中删除。方法一:使用系统存储过

24、程方法一:使用系统存储过程语法格式:语法格式:sp_droplogin loginame = sp_droplogin loginame = loginlogin参数说明:参数说明:loginlogin为为存存储储在在sysloginsyslogin系系统统表表中中的的SQL SQL serverserver登登录录标标识识。删删除除标标识也就是删除该用户在识也就是删除该用户在sysloginsyslogin表中的对应记录。表中的对应记录。方法二:使用方法二:使用ssmsssms删除步骤类似上述删除步骤类似上述WindowsWindows账户删除。账户删除。 16.3 数据库访问权限的建立与删

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

26、ame= loginame=loginlogin,name_in_db=,name_in_db=name_in_dbname_in_db将将登登录录账账号号用用户户或或组组添添加加到到当当前前数数据据库库,使使该该用用户户能能够够具具有有在在当当前前数数据据库中执行活动的权限。库中执行活动的权限。参数说明:参数说明:loginlogin是登录标识名称或是登录标识名称或Windows NT/2003Windows NT/2003用户或用户组名称。用户或用户组名称。name_in_dbname_in_db是在数据库中为是在数据库中为loginlogin参数指定登录标识所创建的用参数指定登录标识所创

27、建的用户名称,它可以与登录名称不同,也可以相同。省略该参数时,所创建户名称,它可以与登录名称不同,也可以相同。省略该参数时,所创建的数据库用户名称与的数据库用户名称与loginlogin相同。相同。 例例:将将上上述述建建立立的的Windows Windows 用用户户“ZUFE-MXHmengZUFE-MXHmeng” 添添加加到到“教教学管理学管理”数据库,并取名数据库,并取名MANAGERMANAGER。USE USE 教学管理教学管理GOGOEXEC sp_grantdbaccess EXEC sp_grantdbaccess ZUFE-MXHmengZUFE-MXHmeng, , M

28、ANAGER MANAGERGOGO注意:注意:sasa不能添加到数据库中;不能添加到数据库中;只只有有sysadminsysadmin固固定定服服务务器器角角色色、db_accessadmindb_accessadmin和和db_ownerdb_owner固固定数据库角色成员才能执行定数据库角色成员才能执行sp_grantdbaccesssp_grantdbaccess;不能从用户定义的事务中执行不能从用户定义的事务中执行sp_grantdbaccesssp_grantdbaccess。方法二:使用ssms16.3.2 删除用户访问数据库的权限删除用户访问数据库的权限方法一:使用系统存储过程

29、方法一:使用系统存储过程语法格式:语法格式:sp_revokedbaccesssp_revokedbaccess name_in_db= name_in_db=name_in_dbname_in_db参数说明:参数说明:name_in_dbname_in_db是在数据库中指定登录标识所创建的用户名称。是在数据库中指定登录标识所创建的用户名称。例例16-1116-11删除删除windowswindows账户账户“ZUFE-MXHmengZUFE-MXHmeng” 名为名为“MANAGERMANAGER”访问访问“教教学管理学管理”数据库的访问权限。数据库的访问权限。USE USE 教学管理教学管

30、理GOGOEXEC sp_revokedbaccess MANAGEREXEC sp_revokedbaccess MANAGERGOGO方法二:使用方法二:使用ssmsssms。16.4 角色管理 角色是一个强大的工具,可以将用户集中到一个单元中,然后对该角色是一个强大的工具,可以将用户集中到一个单元中,然后对该单元应用权限。可以建立一个角色来代表单位中一类工作人员所执单元应用权限。可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。当工作人员开始工作行的工作,然后给这个角色授予适当的权限。当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将

31、他们从时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒该角色中删除。而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。权限在用户成为角色成员时自动生效。绝和废除其权限。权限在用户成为角色成员时自动生效。 管理员和数据库拥有者在设置访问权限时,应首先建立角色,并将管理员和数据库拥有者在设置访问权限时,应首先建立角色,并将访问权限集中授予角色,之后将需要拥有这一权限的用户加入到角访问权限集中授予角色,之后将需要拥有这一权限的用户加入到角色中,这些用户即继承角色的访问权限。需要撤消用户的访问权限色中,这些用户即继承角色的访

32、问权限。需要撤消用户的访问权限时,将用户从角色中删除即可。时,将用户从角色中删除即可。16.4.1 固定服务器角色 权限角色名称固定角色类型执行BULK INSERT语句bulkadmin只能管理SQL Server系统的磁盘文件Diskadmin只能在服务器上创建和修改数据库Dbcreator只能管理数据库实例下运行的进程Processadmin只能管理服务器登录标识Securityadmin添加和删除连接服务器,执行某些系统存储过程Setupadmin只能执行服务器配置工作Serveradmin能够在SQL Server服务器上执行所有操作,其权限覆盖其他各种固定服务器角色所具有的权限Sy

33、sadmin 固 定 服 务 器 角 色1、查看固定服务器角色2、添加固定服务器角色成员、添加固定服务器角色成员3、删除固定服务器角色成员、删除固定服务器角色成员4、用、用T-SQL进行固定服务器角色成员管理进行固定服务器角色成员管理 在在SQL Server中使用以下两个存储过程来添加或删除固定服中使用以下两个存储过程来添加或删除固定服务器角色成员:务器角色成员: sp_addsrvrolemember loginame=login,rolename=role sp_dropsrvrolemember loginame=login,rolename=role 其中,其中,login为登录标识

34、名称,可以为为登录标识名称,可以为SQL Server登录标识登录标识或或Windows NT用户帐户。用户帐户。 role为固定服务器角色名称。为固定服务器角色名称。例如:例如: sp_addsrvrolemember ZUFE-MXHZUFE-MXH meng,sysadmin go sp_dropsrvrolemember ZUFE-MXHZUFE-MXH meng,sysadmin go16.4.2 固定数据库角色禁止数据库中的检索操作Db_denydatareader 固 定 数 据 库 角 色权限角色名称固定角色类型禁止修改数据库中的所有数据Db_denydatawriter能够执

35、行数据库备份操作的权限Db_backupoperator能够管理数据库角色及其成员,管理数据库中的语句权限和对象权限,从而控制用户对数据库的访问Db_securityadmin能够在一个数据库中创建、修改或删除数据库对象Db_ddladmin能够对一个数据库的所有表执行数据更新操作Db_datawriter能够在一个数据库的所有表中检索数据Db_datareader只能管理数据库用户帐户,向数据库添加或删除Window NT/2000用户(组)和SQL Server登录标识Db_accessadmin数据库最高权限角色,能够执行所有其他数据库角色可以执行的操作和数据库的维护、配置工作Db_ow

36、ner1、查看固定数据库角色2、添加固定数据库角色成员3、删除固定数据库角色成员4、用、用T-SQL进行数据库角色成员管理进行数据库角色成员管理 在在SQL Server中使用以下两个存储过程来添加或删除固定数中使用以下两个存储过程来添加或删除固定数据库角色成员和用户自定义数据库角色:据库角色成员和用户自定义数据库角色: sp_addrolemember rolename=role,membername=security_account sp_droprolemember rolename=role,membername=security_account其中,其中,role为固定服务器角色名称

37、或当前数据库中自定义角色名称。为固定服务器角色名称或当前数据库中自定义角色名称。 security_account为待添加或删除的为待添加或删除的SQL Server登录标识、登录标识、其他角色或其他角色或Windows NT/2003用户帐户。当添加时,如果当前数用户帐户。当添加时,如果当前数据库中没有建立据库中没有建立Windows NT/2003用户帐户安全帐户,数据库用用户帐户安全帐户,数据库用户帐户被自动建立。删除时,户帐户被自动建立。删除时,security_account必须为当前数据库必须为当前数据库的一个有效用户帐户。的一个有效用户帐户。 sp_addrolemember D

38、b_owner,wang5应用程序角色建立与删除 前面介绍的标准角色对访问控制实现在数据库一级,它决定用前面介绍的标准角色对访问控制实现在数据库一级,它决定用户能够访问的数据库及其对象。下面介绍另一种访问控制方法户能够访问的数据库及其对象。下面介绍另一种访问控制方法应用程序角色应用程序角色。它不同于标准角色,它不是根据用户,而。它不同于标准角色,它不是根据用户,而是根据用户所运行的应用程序决定当前连接能否访问数据库对是根据用户所运行的应用程序决定当前连接能否访问数据库对象。象。使用应用程序角色的直接原因有以下两个方面:使用应用程序角色的直接原因有以下两个方面: 第一、限制访问数据库所使用的应用

39、程序,提高系统安全性。第一、限制访问数据库所使用的应用程序,提高系统安全性。例如,在一个财务系统中,用户添加到数据库中的数据不希望例如,在一个财务系统中,用户添加到数据库中的数据不希望任何非法用户通过其他任何途径进行访问,而只允许通过财务任何非法用户通过其他任何途径进行访问,而只允许通过财务系统自身检验后的合法用户访问,这时使用应用程序角色就能系统自身检验后的合法用户访问,这时使用应用程序角色就能达到这一目的。达到这一目的。 第二、提高第二、提高SQL Server服务器的运行性能。因为应用程序角服务器的运行性能。因为应用程序角色只允许指定的应用程序运行,这能避免用户在色只允许指定的应用程序运

40、行,这能避免用户在SQL Server服务器上运行其他程序,从而提高数据库系统的运行性能。服务器上运行其他程序,从而提高数据库系统的运行性能。(1)建立应用程序角色)建立应用程序角色 SQL Server中,只有固定服务器角色中,只有固定服务器角色sysadmin成员、固定成员、固定数据库角色数据库角色db_owner和和db_securityadmin成员才能运行成员才能运行以下存储过程创建或删除应用程序角色:以下存储过程创建或删除应用程序角色:sp_addapprole rolename=role,password=passwordsp_dropapprole rolename=role例

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

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

43、用程序角色查询查询。USE 教学管理教学管理GOEXEC sp_setapprole 查询查询,123,odbcGO应用程序角色与标准角色相比,二者之间存在以下差别:应用程序角色与标准角色相比,二者之间存在以下差别:(1)应用程序角色不包含任何成员,而标准角色则拥有自己的应用程序角色不包含任何成员,而标准角色则拥有自己的成员。成员。(2)默认时,应用程序角色是无效的,只有当数据库应用程序默认时,应用程序角色是无效的,只有当数据库应用程序执行系统存储过程执行系统存储过程sp_approle,并为应用程序角色提供正确,并为应用程序角色提供正确的口令后才激活应用程序角色。而标准角色一直保持有效。的口

44、令后才激活应用程序角色。而标准角色一直保持有效。(3)应用程序角色激活后,应用程序角色所拥有的访问权限才应用程序角色激活后,应用程序角色所拥有的访问权限才起作用。这时,它屏蔽掉标准角色中的访问权限。也就是说,起作用。这时,它屏蔽掉标准角色中的访问权限。也就是说,应用程序角色激活后,无论连接用户是否拥有对数据库的访问应用程序角色激活后,无论连接用户是否拥有对数据库的访问权限,权限,SQL Server只根据应用程序角色的访问权限判断应用只根据应用程序角色的访问权限判断应用程序能否操作指定的数据库。程序能否操作指定的数据库。(4)在运行应用程序所建立的连接断开后,应用程序角色即随在运行应用程序所建

45、立的连接断开后,应用程序角色即随之失去作用。之失去作用。16.5 数据库权限管理 当用户成为数据库中的合法用户之后,他除了具有当用户成为数据库中的合法用户之后,他除了具有一些系统表的查询权之外,并不对数据库中的对象一些系统表的查询权之外,并不对数据库中的对象具有任何操作权,因此,下一步就需要为数据库中具有任何操作权,因此,下一步就需要为数据库中的用户授予数据库对象的操作权。的用户授予数据库对象的操作权。16.5.1 权限种类 1、对象权限存储过程EXECUTE表、视图DELETE表、视图、列UPDATE表、视图INSERT表、视图、列SELECT数据库对象语句2、语句权限、语句权限语句权限决定

46、用户能否操作数据库和数据对象,如表、视图、存储语句权限决定用户能否操作数据库和数据对象,如表、视图、存储过程、默认和规则等。语句权限决定用户能否执行以下语句:过程、默认和规则等。语句权限决定用户能否执行以下语句: . CREATE DATABASE:创建数据库。:创建数据库。 . CREATE DEFAULT:在数据库中建立默认值。:在数据库中建立默认值。 . CREATE PROCEDURE:在数据库中创建存储过程。:在数据库中创建存储过程。 . CREATE FUNCTION:在数据库中创建用户自定义函数。:在数据库中创建用户自定义函数。 . CREATE RULE:在数据库中创建规则。:

47、在数据库中创建规则。 . CREATE TABLE:在数据库中创建表。:在数据库中创建表。 . CREATE VIEW:在数据库中创建视图。:在数据库中创建视图。 . BACKUP DATABASE:备份数据库。:备份数据库。 . BACKUP LOG:备份数据库日志。:备份数据库日志。在在SQL ServerSQL Server中,每个数据库都有各自独立的权限保护,所以对于中,每个数据库都有各自独立的权限保护,所以对于不同的数据库要分别向用户授予语句权限。(不同的数据库要分别向用户授予语句权限。(CREATE DATABASE CREATE DATABASE 除除外)。外)。3、隐含权限、隐

48、含权限是指系统安装以后有些用户和角色不必授权就有的许可。是指系统安装以后有些用户和角色不必授权就有的许可。SQL Server预定义的固定服务器角色、固定数据库角色预定义的固定服务器角色、固定数据库角色和数据库对象所有者均具有隐含权限。和数据库对象所有者均具有隐含权限。16.5.2 权限管理 GRANT:有权操作有权操作REVOKE:无权操作无权操作DENY:不能操作不能操作1、使用ssms管理权限2、使用T-SQL管理权限T-SQL中的权限管理语句有以下三种:中的权限管理语句有以下三种:. GRANT:允许权限。:允许权限。. DENY:禁止权限。:禁止权限。. REVOKE:取消允许权限或

49、禁止权限设置。:取消允许权限或禁止权限设置。由于由于SQL Server预定义角色的隐含权限是固定的,所预定义角色的隐含权限是固定的,所以不能使用以上语句重新设置,权限管理语句只能设以不能使用以上语句重新设置,权限管理语句只能设置用户、角色等权限。置用户、角色等权限。(1)语句权限管理语句授权的命令格式是:语句授权的命令格式是: GRANTALL|statement_listTOPUBLIC|name_list DENY ALL|statement_listTOPUBLIC|name_list REVOKE ALL|statement_listFROM PUBLIC|name_listALL即

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

51、和和DUMP TRANSACTION等;等; PUBLIC说明这些语句的执行权限将授予所有的用户;说明这些语句的执行权限将授予所有的用户; name_list是数据库用户名或组名或角色名,说明这些语句的执是数据库用户名或组名或角色名,说明这些语句的执行权限授予哪些用户或组。行权限授予哪些用户或组。例例 1 系系 统统 管管 理理 员员 授授 予予 注注 册册 名名 为为 meng的的 用用 户户 CREATE DATABASE的权限。的权限。USE masterGO GRANT CREATE DATABASE TO mengGO例例2授予用户授予用户STU_MANAGERSTU_MANAGER

52、(ZUFE-MXHmengZUFE-MXHmeng登录标识的名称)登录标识的名称)具有创建表的权限。具有创建表的权限。USE 教学管理教学管理GO GRANT CREATE TABLE TO MANAGERGO2 2、 对象权限管理对象权限管理数据库对象的授权命令格式是:数据库对象的授权命令格式是:GRANTALL|Permission_list ON table_name(colume_list)|view_name(column_list)| stored_procedure_name|extended_stored_procedure_name| user_defined_functio

53、n TO PUBLIC|name_list WITH GRANT OPTION as group|role其中:其中:ALL说说明明将将指指定定对对象象的的所所有有操操作作权权限限都都授授予予指指定定的的用用户户,只只有有sysadmin、db_owner角角色色成成员员和和数数据据库库对对象象所所有有者者才才可可以以使用使用all选项;选项;permission_list是权限列表。是权限列表。.AS group|role:用户可以从多个角色或组中继承权限,在用户可以从多个角色或组中继承权限,在GRANT和和REVOKE语句中使用语句中使用AS选项说明他们要管理的用户选项说明他们要管理的用户

54、从哪个角色或组继承权限。从哪个角色或组继承权限。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选项有以下两个作用:选项有以下两个作用:. 授予用户禁止权限。授予用户禁止权限。. 如

55、果用户拥有如果用户拥有WITH GRANT OPTION权限,则撤消该权限。如果用权限,则撤消该权限。如果用户已使用户已使用WITH GRANT OPTION权限授予其他用户权限,则同时撤消权限授予其他用户权限,则同时撤消其他用户的权限。其他用户的权限。. 如果指定用户拥有如果指定用户拥有WITH GRANT OPTION权限,但权限,但DENY语句中没有语句中没有使用使用CASCADE选项时,将导致选项时,将导致DENY语句运行错误。语句运行错误。GRANT SELECT ON STUDENT TO publicDENY SELECT ON STUDENT TO ma,更新更新REVOKE

56、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选项有以下两种作用:选项有以下两种作用:. 如果如果REVOK

57、E语句所撤消的对象权限语句所撤消的对象权限是是GRANT语句使用语句使用WITH GRANT OPTION 选项授予用户的,则选项授予用户的,则REVOKE语句撤消用户所得到的该对象权限的语句撤消用户所得到的该对象权限的转授权限,但转授权限,但GRANT语句授予用户的对象权限仍然保留。此外,如果该用户语句授予用户的对象权限仍然保留。此外,如果该用户已经使用转授权限向其他用户授予他所得到的对象权限,已经使用转授权限向其他用户授予他所得到的对象权限,REVOKE语句将一语句将一并撤消这些用户所得到的权限。这时,在并撤消这些用户所得到的权限。这时,在REVOKE语句中必须同时使用语句中必须同时使用C

58、ASCADE选项。选项。. 如果如果REVOKE语句所撤消的对象权限不是语句所撤消的对象权限不是GRANT语句使用语句使用WITH GRANT OPTION 选项授予用户的,则选项授予用户的,则REVOKE语句撤消用户所得到的对象权限。这语句撤消用户所得到的对象权限。这时,在时,在REVOKE语句中必须不使用语句中必须不使用CASCADE。 例:授授予予角角色色教教师师具具有有查查询询学学生生资资料料表表STUDENTSTUDENT、课课程程资资料料表表COURSECOURSE、教教师师资料表资料表TEACHERTEACHER、开课计划表、开课计划表OFFERINGOFFERING和注册选课表和注册选课表ENROLLMENTENROLLMENT的权限。的权限。 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 !Thank You !

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号