《SQL2000数据库的安全性管理课件.pptx》由会员分享,可在线阅读,更多相关《SQL2000数据库的安全性管理课件.pptx(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQLServer2000数据库的安全性管理121对SQL Server的访问 122数据库的安全性权限 123角色 124与安全有关的Transact-SQL语句 125 视图与数据访问 126存储过程与数据访问第12章SQLServer2000数据库的安全性管理SQLServer的安全性管理是建立在登录验证和权限许可的基础上的。登录验证是指核对连接到SQLServer实例的登录帐户名和密码是否正确,以此确定用户是否具有连接到SQLServer实例的权限。通过了登录验证,并不意味着用户能够访问SQLServer实例中的各个数据库。用户只有在被授于访问数据库的权限许可之后才能够对服务器上的数据
2、库进行权限许可下的各种操作。SQLServer还引入了角色的概念,来简化对权限许可的管理,在SQLServer中,安全性管理可以通过企业管理器的图形界面进行,但对于熟练的DBA来说,使用Transact-SQL语句进行安全性管理可能更有效率。在SQLServer中,通过使用视图和存储过程也可以控制用户对数据的访问,实现对数据安全管理。返回目录12.1对对SQL Server的访问的访问在SQLServer2000中,用登录帐户来控制用户是否具有连接到SQLServer实例的权限。用数据库用户帐户来控制用户是否具有操纵SQLServer实例中的各个数据库的权限。而对用户身份的验证,是通过核对登录
3、帐户名和密码是否正确来完成的。1身份验证模式(AuthenticationModes)SQLServer能在两种身份验证模式下运行:Windows身份验证模式和混合模式。在Windows身份验证模式下,SQL Server依靠Windows 身份验证来验证用户的身份。在混合模式下,SQLServer依靠Windows身份验证或SQLServer身份验证来验证用户的身份。(1)Windows身份验证模式(2)混合模式在混合模式下,用户既可以使用Windows身份验证,也可以使用SQLServer身份验证。使用SQLServer身份验证时,用户必须提供登录帐户名和密码,这里的登录帐户是数据库管理员
4、在SQLServer中创建并分配给用户的(3)配置身份验证模式返回目录2登录帐户(logins)和数据库用户帐户(databaseusers)SQLServer用数据库用户帐户来指出哪一个人可以访问哪一个数据库。用户对数据的访问权限以及与数据库对象的所有关系都是通过用户账号来控制的。数据库用户帐户通常是由数据库管理员在SQLServer实例的各个数据库中创建的。一个登录账号总是与一个或多个数据库用户账号相关联。这个关联工作,由数据库管理员在为用户新建登录账户或修改登录帐户属性时完成的。但对于一些特殊登录帐户,这个过程是由SQL服务器自动完成的。如:sa是SQLServer内置的管理员登录账号,
5、sa登录账号自动与每一个数据库的dbo用户相关联。数据库用户账号总是与某一登录账号相关联的,但有一个例外,那就是guest用户。Guest用户不具体与某一登录帐户相关联,但Guest用户允许没有与用户帐户关联的登录帐户访问数据库。用户访问SQLServer实例中的某一数据库,SQLServer检查该登录用户是否与该数据库中的某一用户帐户相关联,如果有,则允许它以该用户帐户访问数据库;如果没有,则SQLServer检查该数据库中是否有guest用户,如果有,则允许用户以guest用户来访问该数据库,如果没有,则该用户对该数据库的访问被拒绝。在安装SQLServer时,系统自动在master、pu
6、bs、tempdb和Northwind数据库中创建guest用户。返回目录(1)创建登录帐户 创建登录帐户的方法有三种:使用企业管理器、使用Transact-SQL语句、使用创建登录向导。(2)授予WindowsNT/2000用户或组连接SQLServer的权限在WindowsNT/2000帐户(用户或组)可以访问数据库之前,必须授予它们连接到SQLServer实例的权限。(3)创建数据库用户帐户可以使用企业管理器或Transact-SQL语句来创建数据库用户帐户,也可以使用企业管理器来创建数据库用户帐户。为了创建一个新的数据库用户帐户,必须事先确定一个将与该数据库用户相关的登录帐户。返回目录
7、(4)sa登录帐号、dbo数据库用户帐号及数据库对象所有者。系统管理员(SystemAdministrator)登录帐号sa是为向后兼容而提供的特殊登录。sa是SQLServer自动创建的、内置的登录帐号,不能被删除。默认情况下,sa被授予固定服务器角色sysadmin,可以在SQLServer中进行任何活动。dbo是SQLServer自动创建的、内置的数据库用户帐号,具有在数据库中执行所有活动的权限。SQL Server将固定服务器角色sysadmin的任何成员都映射到每个数据库内的dbo用户上。另外,由固定服务器角色sysadmin的任何成员创建的任何对象都自动属于dbo。创建数据库对象的
8、用户称为数据库对象所有者。创建数据库对象的权限必须由数据库所有者或系统管理员授予。数据库对象所有者可以授予其他用户访问其所创建的对象的权限。数据库对象所有者没有特殊的登录ID或密码。对象创建者在创建对象时,被隐性地授予该对象的所有权限,但其他用户必须被显式授予权限后才能访问该对象。返回目录14.2 数据库的安全性权限数据库的安全性权限SQLServer通过为用户分配权限来决定用户能够执行什么样的数据库操作。在SQLServer中,可以为用户设置服务器权限和数据库权限。数据库权限又分为对象权限和语句权限。1服务器权限服务器权限用来为数据库管理员分配执行数据库管理任务的许可。服务器权限被预先赋于固
9、定的服务器角色,为用户的登录帐户分配某一服务器角色,则用户具有该服务器角色所具有的服务器权限。服务器权限包括:关闭数据库系统、新建数据库,备份数据库等等。2数据库对象权限对象权限是用户在处理数据或执行过程时需要的权限。可以使用企业管理器或Transact-SQL语句为用户分配对象权限。在企业管理器中分配对象权限的方法有两种,一种是针对用户来分配对象权限,另一种是针对数据库对象来分配对象权限。(1)对象权限的类型:对象权限主要有SELECT、UPDATE、INSERT、DELETE、EXECUTE等几种类型。返回目录(2)基于用户管理对象权限基于用户管理对象权限,可以方便地为用户分配多个数据库对
10、象的对象权限。可以使用企业管理器针对用户来分配对象权限。(3)基于数据库对象管理对象权限。基于数据库对象管理对象权限,可以方便地为多个用户分配数据库对象的对象权限。可以使用企业管理器针对数据库对象来分配对象权限。返回目录3数据库语句权限对象权限使用户能够访问数据库中已经存在数据库对象。语句权限则使用户可以创建数据库和数据库对象。例如,如果用户要在数据库中创建表,则应该向该用户授予CREATETABLE语句权限。语句权限(如CREATEDATABASE)适用于语句自身,而不适用于特定数据库对象。语句权限有:BACKUP DATABASE权 限,允 许 用 户 执 行 BACKUPDATABASE
11、命令。BACKUPLOG权限,允许用户执行BACKUPLOG命令CREATEDATABASE权限,允许用户创建数据库。CREATEDEFAULT权限,允许用户创建列的缺省值。CREATEFUNCTION权限,允许用户创建函数。CREATEPROCEDURE权限,允许用户创建存储过程。CREATERULE权限,允许用户创建规则。CREATETABLE权限,允许用户创建表。CREATEVIEW权限,允许用户创建视图。可以使用企业管理器或Transact-SQL语句为用户分配语句权限。返回目录12.3 角色角色角色用来为成组的用户赋于相同的数据库权限,而不需要为每个用户单独赋权。用户可以根据管理需要
12、,划分和创建出几种权限不同的角色,并将相应的数据库权限授于各个角色,然后可以将角色赋于一个或多个数据库用户帐户,这样,这些数据库用户帐户就具有了该角色所具有的权限。1角色的类型在SQLServer中,角色有两种类型:服务器角色和数据库角色。(1)服务器角色服务器角色是由SQLServer自动创建的,是固定的,不能被删除,其权限也不能被修改,用户也不能创建新的服务器角色。SQLServer根据SQLServer服务器管理任务的不同,预定义了8种固定的服务器角色,它们是:sysadmin角色、serveradmin角色、setupadmin角 色、securityadmin角 色、processa
13、dmin角 色、dbcreator角色、diskadmin角色、bulkadmin角色。返回目录(2)固定数据库角色固定数据库角色,是指由SQLServer自动创建的、固定的、不能被数据库管理员或用户修改或删除的数据库角色。在SQLServer中,预定义了9种固定数据库角色,它们是:db_owner角色,数据库的所有者,以执行任何数据库管理工作。可以对数据库内的任何对象进行任何操作。db_accessadmin角色,可以在数据库中添加或删除WindowsNT4.0或Windows2000组和用户以及SQLServer用户。db_datareader角色,可以查看来自数据库中所有用户表的全部数据
14、。db_datawriter角色,可以添加、更改或删除来自数据库中所有用户表的数据。db_ddladmin角色,可以添加、修改或删除数据库中的对象。db_securityadmin角色,管理数据库角色和角色的成员,并管理数据库的语句权限和对象权限。db_backupoperator角色,可以进行数据库的备份工作。db_denydatareader角色,不能查看数据库中任何表的数据。db_denydatawriter角色,不能修改数据库中任何表的数据。可将任何有效的数据库用户帐户(包括组)或角色添加为固定数据库角色成员。返回目录(3)用户自定义的数据库角色用户自定义的数据库角色是指由用户自己创建
15、并定义权限的数据库角色。用户自定义的数据库角色提供了分配给用户特定权限的能力,而这是固定数据库角色所不能提供的。如果要为一些数据库用户设置相同的权限,但是这些权限又与固定数据库角色的权限不同,就可以创建用户自定义的数据库角色。用户自定义的数据库角色有两种类型:标准角色和应用程序角色。标准角色是基于用户的,用于一般的数据库权限管理工作。应用程序角色一种比较特殊的角色类型,是基于应用程序的。使用应用程序角色可以限制用户只能通过特定应用程序来访问数据。(4)public角色SQLServer还有一个特殊的数据库角色pulbic。在创建数据库时,public角色就在其中自动创建好了。public角色不
16、能被删除,也不能为这个角色增加或删除用户。数据库中每个用户都自动属于public角色。如果需要提供一种缺省的权限给所有用户时,可以将这种权限赋于public角色,由于数据库中每个用户都自动属于public角色,所以所有的用户都自动拥有了这种权限。返回目录2管理角色(1)为服务器角色添加成员通过将用户登录帐号添加到服务器角色,用户可以获得服务器角色所具有的权限。可以使用企业管理器或Transact-SQL语句将用户添加到服务器角色。(2)创建用户自定义的数据库角色使用自定义的数据库角色,可以简化数据库权限的管理工作,可以使用企业管理器创建用户自定义的数据库角色。(3)为用户自定义的数据库角色授权
17、可以使用企业管理器或Transact-SQL语句为数据库角色授权。(4)为数据库角色添加成员将数据库用户添加到数据库角色(固定数据库角色和用户自定义的数据库角色),可以使用数据库用户获得数据库角色所具有的数据库权限。可以使用企业管理器或Transact-SQL语句为数据库角色赋权。返回目录12.4 与安全有关的与安全有关的Transact-SQL语句语句除了企业管理器外,SQLServer还提供了Transact-SQL语句来进行安全管理。1与登录帐户相关的Transact-SQL语句SQLServer提供了一些系统存储过程,用以管理SQLServer登录帐户。sp_addlogin,创建新S
18、QLServer登录帐户。sp_droplogin,删除SQLServer登录帐户。sp_grantlogin,授予Windows NT/2000用户或组帐户登录SQLServer的权限。sp_denylogin,阻止WindowsNT/2000用户或组帐户登录到SQLServer。sp_revokelogin,删除用sp_grantlogin或sp_denylogin创建的登录项sp_helplogins,提供有关每个数据库中的登录及相关用户的信息返回目录2与数据库用户相关的Transact-SQL语句SQLServer提供了一些系统存储过程,用以管理数据库用户帐户。sp_granddbac
19、cess,为SQLServer登录帐户在当前数据库中添加一个用户帐户。sp_revokedbaccess,从当前数据库中删除数据库用户帐户。sp_helpuser,报告当前数据库中指定用户的信息。3与权限管理相关的Transact-SQL语句SQLServer提供了GRANT、REVOKE和DENY三种Transact-SQL语句来管理权限。GRANT,把数据库对象权限或语句权限授于指定的数据库用户、组或角色。REVOKE,取消已经授于数据库用户、组或角色的数据库对象权限或语句权限。DENY,禁止数据库用户、组或角色对某一对象或语句的权限。返回目录4与角色管理相关的Transact-SQL语句
20、在SQLServer中,管理服务器角色的系统存储过程主要有:sp_addsrvrolemember,将登录帐号添加到固定服务器角色,使其成为固定服务器角色的成员。sp_dropsrvrrolemember,从固定服务器角色中删除登录帐户,使其不再是固定服务器角色的成员。在SQLServer中,管理数据库角色管理的系统存储过程主要有:sp_addrole,创建新的用户自定义的数据库角色。sp_droprole,删除用户自定义的数据库角色。sp_addapprole,创建新的应用程序角色。sp_dropapprole,删除应用程序角色sp_addrolemember,将数据库用户、组或角色添加到数
21、据库角色,使其成为数据库角色的成员。sp_droprolemember,从数据库角色中,删除数据库用户、组或角色,使其不再是数据库角色的成员。sp_helprole,显示当前数据库中所有数据库角色的信息。sp_helprolemember,显示当前数据库中所有角色的成员信息。返回目录12.5 视图与数据访问视图与数据访问视图能作为一种安全性机制使用,以控制用户对数据的访问。视图是由查询语句定义的,是一张虚表.授于用户访问视图的权限,不会使用户拥有访问视图所引用的基表或数据库的其余部分的权限。另外,用户只需要拥有访问视图的权限,就可以对视图中的数据进行操作1使用视图实现行级数据安全可以定义一个视
22、图,其中只包含从基表中抽取的、要让用户访问的数据行。授予用户访问这个视图的权限。这样,用户就能访问到这些数据行,而无法访问基表中其它的数据行。【例12.1】采用视图使用户只能查看某Employees表中来自美国的员工的信息。CREATE VIEW usa_employees AS SELECT*FROM Employees WHERE Country=USA创建视图usa_employees后,将视图usa_employees的SELECT权限授予用户。当用户执行语句SELECT*FROM usa_employees时,只显示employees表中来自美国的员工信息。返回目录2使用视图实现列级
23、数据安全可以定义一个视图,其中只包含从基表中抽取的、要让用户访问的数据列。授予用户访问这个视图的权限。这样,用户就能访问到这些数据列,而无法访问基表中其它的数据列。【例12.2】采用视图使用户只能查看某Employees表的LastName,FirstName,Title,Country列。CREATE VIEW employees_ common_info AS SELECT LastName,FirstName,Title,Country FROM Employees创 建 视 图 employees_ common_info后,将 视 图 employees_ common_info的S
24、ELECT权限授予用户,当用户执行语句SELECT*FROM employees_ common_info时,只 显 示 employees表 的LastName,FirstName,Title,Country列。返回目录12.6 存储过程与数据访问存储过程与数据访问存储过程能作为一种安全性机制使用。当用户拥有某个存储过程EXEC权限时,他将能够执行这个存储过程而不必具有访问在存储过程中被访问的下层对象的权限。通过使用存储过程可以尽量避免用户对底层对象的直接访问,增加底层对象的安全性。使用存储过程控制数据访问的方法与视图类似:首先,创建存储过程;然后,将存储过程的EXEC权限授予相应的用户,这
25、样,用户就可以执行存储过程了。返回目录1、有时候读书是一种巧妙地避开思考的方法。4月-234月-23Tuesday,April 25,20232、阅读一切好书如同和过去最杰出的人谈话。12:49:2412:49:2412:494/25/2023 12:49:24 PM3、越是没有本领的就越加自命不凡。4月-2312:49:2412:49Apr-2325-Apr-234、越是无能的人,越喜欢挑剔别人的错儿。12:49:2412:49:2412:49Tuesday,April 25,20235、知人者智,自知者明。胜人者有力,自胜者强。4月-234月-2312:49:2412:49:24April
26、 25,20236、意志坚强的人能把世界放在手中像泥块一样任意揉捏。25四月202312:49:24下午12:49:244月-237、最具挑战性的挑战莫过于提升自我。四月2312:49下午4月-2312:49April 25,20238、业余生活要有意义,不要越轨。2023/4/2512:49:2412:49:2425 April 20239、一个人即使已登上顶峰,也仍要自强不息。12:49:24下午12:49下午12:49:244月-2310、你要做多大的事情,就该承受多大的压力。4/25/2023 12:49:24 PM12:49:2425-4月-2311、自己要先看得起自己,别人才会看得起你。4/25/2023 12:49 PM4/25/2023 12:49 PM4月-234月-2312、这一秒不放弃,下一秒就会有希望。25-Apr-2325 April 20234月-2313、无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。Tuesday,April 25,202325-Apr-234月-2314、我只是自己不放过自己而已,现在我不会再逼自己眷恋了。4月-2312:49:2425 April 202312:49谢谢大家谢谢大家