《《数据库安全管理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据库安全管理》PPT课件.ppt(29页珍藏版)》请在金锄头文库上搜索。
1、http:/ 数据库安全管理 (时间:1次课,2学时)http:/ 数据库安全管理 n教学提示:教学提示:本章主要介绍本章主要介绍SQL Server 2005数据安数据安全管理中的事务的概念,角色的概念及权限结构。全管理中的事务的概念,角色的概念及权限结构。n教学目标:教学目标:掌握掌握SQL Server 2005数据安全管理中数据安全管理中的事务的概念,事务的特性及事务的种类;掌握角的事务的概念,事务的特性及事务的种类;掌握角色的概念、角色的种类及作用;掌握权限的层次结色的概念、角色的种类及作用;掌握权限的层次结构。构。http:/ 数据库安全管理n事务、权限和角色是事务、权限和角色是S
2、QL Server 2005数据库安全管理中数据库安全管理中的重要部分。的重要部分。n数据库的修改是以事务为单位进行的。一个事务就是一个操数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。割的工作单位。n权限是通过角色成员来获得的。角色就是一组具有相同权限权限是通过角色成员来获得的。角色就是一组具有相同权限的用户的集合。不同角色中的成员有不同的权限。的用户的集合。不同角色中的成员有不同的权限。n本章介绍本章介绍SQL Server 2005中的事务和角色的概念。中的事务和角色
3、的概念。http:/ 数据库安全管理 n11.1 事务事务n11.2 数据库的安全方案数据库的安全方案n11.3 习题习题 http:/ 事 务n11.1.1 事务特性事务特性n11.1.2 控制事务控制事务n11.1.3 显式事务显式事务n11.1.4 自动提交事务自动提交事务n11.1.5 隐式事务隐式事务 http:/ 事务特性n事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有工作单元必须有4个属性,称为原子性、一致性、隔离性和个属性,称为原子性、一致性、隔离性和持久性持久性(ACID)属性,只有这样才能成为一个事务。
4、属性,只有这样才能成为一个事务。n(1) 原子性原子性n(2) 一致性一致性n(3) 隔离性隔离性n(4) 持久性持久性http:/ 事务特性n企业数据库系统企业数据库系统(如数据库引擎实例如数据库引擎实例)有责任提供一种机制,有责任提供一种机制,保证每个事务的物理完整性。数据库引擎提供:保证每个事务的物理完整性。数据库引擎提供: n锁定设备,使事务保持隔离。锁定设备,使事务保持隔离。 n记录设备,保证事务的持久性。即使服务器硬件、操作系统记录设备,保证事务的持久性。即使服务器硬件、操作系统或数据库引擎实例自身出现故障,该实例也可以在重新启动或数据库引擎实例自身出现故障,该实例也可以在重新启动
5、时使用事务日志,将所有未完成的事务自动地回滚到系统出时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的点。现故障的点。n事务管理特性,强制保持事务的原子性和一致性。事务启动事务管理特性,强制保持事务的原子性和一致性。事务启动之后,就必须成功完成,否则数据库引擎实例将撤销该事务之后,就必须成功完成,否则数据库引擎实例将撤销该事务启动之后对数据所做的所有修改。启动之后对数据所做的所有修改。http:/ 控制事务控制事务 n(1) 启动事务启动事务n使用使用 API 函数和函数和 Transact-SQL 语句,可以在语句,可以在 SQL Server Database Engine 实例
6、中将事务作为显式、自动提交或隐式事务来启实例中将事务作为显式、自动提交或隐式事务来启动。在动。在 MARS 会话中,会话中,Transact-SQL 显式和隐式事务将变成批范围显式和隐式事务将变成批范围的事务。的事务。n显式事务显式事务 n自动提交事务自动提交事务 n隐式事务隐式事务 n批范围的事务批范围的事务 n(2) 结束事务结束事务n可以使用可以使用 COMMIT 或或 ROLLBACK 语句,或者通过语句,或者通过 API 函数来结束事函数来结束事务。务。 nCOMMIT nROLLBACK http:/ 控制事务控制事务 n(3) 指定事务边界指定事务边界n可以使用可以使用 Tran
7、sact-SQL 语句或语句或 API 函数和方法来确定数函数和方法来确定数据库引擎事务启动和结束的时间。据库引擎事务启动和结束的时间。 nTransact-SQL 语句语句 nAPI 函数和方法函数和方法 n(4) 事务处理过程中的错误事务处理过程中的错误n如果某个错误使事务无法成功完成,如果某个错误使事务无法成功完成,SQL Server 会自动回会自动回滚该事务,并释放该事务占用的所有资源。滚该事务,并释放该事务占用的所有资源。 http:/ 显式事务n显式事务就是可以显式地在其中定义事务的开始和结束的事显式事务就是可以显式地在其中定义事务的开始和结束的事务。在务。在 SQL Serve
8、r 7.0 和早期版本中,显式事务也称为和早期版本中,显式事务也称为“用户定义的事务用户定义的事务”或或“用户指定的事务用户指定的事务”。n(1) BEGIN TRANSACTION n(2) COMMIT TRANSACTION 或或 COMMIT WORK n(3) ROLLBACK TRANSACTION 或或 ROLLBACK WORK http:/ 自动提交事务n自动提交模式是自动提交模式是SQL Server Database Engine的默认事务的默认事务管理模式。每个管理模式。每个Transact-SQL 语句在完成时,都被提交或语句在完成时,都被提交或回滚。如果一个语句成功
9、地完成,则提交该语句;如果遇到回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。只要没有显式事务或隐性事务覆盖自错误,则回滚该语句。只要没有显式事务或隐性事务覆盖自动提交模式,与数据库引擎实例的连接就以此默认模式操作。动提交模式,与数据库引擎实例的连接就以此默认模式操作。自动提交模式也是自动提交模式也是 ADO、OLE DB、ODBC 和和 DB 库的默库的默认模式。认模式。http:/ 自动提交事务n【例例11.1】在此示例中,由于发生编译错误,这在此示例中,由于发生编译错误,这3个批处理中的个批处理中的 INSERT 语句都没有执行。但看起来好像是前两个语句都没有执行
10、。但看起来好像是前两个 INSERT 语句没有语句没有执行便进行了回滚。执行便进行了回滚。nUSE AdventureWorks;nGOnCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3);nGOnINSERT INTO TestBatch VALUES (1, aaa);nINSERT INTO TestBatch VALUES (2, bbb);nINSERT INTO TestBatch VALUSE (3, ccc); - 语法错误语法错误nGOnSELECT * FROM TestBatch; - 没有任何记录被插入并
11、显示没有任何记录被插入并显示nGOhttp:/ 隐式事务n当连接以隐性事务模式进行操作时,当连接以隐性事务模式进行操作时,SQL Server Database Engine 实例将在提交或回滚当前事务后自动启实例将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。动新事务。无须描述事务的开始,只需提交或回滚每个事务。隐性事务模式生成连续的事务链。隐性事务模式生成连续的事务链。n为连接将隐性事务模式设置为打开之后,当数据库引擎实例为连接将隐性事务模式设置为打开之后,当数据库引擎实例首次执行表首次执行表11.1中的任何语句时,都会自动启动一个事务。中的任何语句时,
12、都会自动启动一个事务。http:/ 隐式事务n在发出在发出COMMIT语句或语句或ROLLBACK语句之前,该事务将一语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接直保持有效。在第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,数据库引擎实例都将自动启动一个新执行以上任何语句时,数据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链,直到隐性事务模式事务。该实例将不断地生成隐性事务链,直到隐性事务模式关闭为止。关闭为止。n隐性事务模式既可以使用隐性事务模式既可以使用 Transact-SQL SET 语句来设置,语句来设置,也可以通过数据库也可以通
13、过数据库 API 函数和方法来设置。函数和方法来设置。http:/ 数据库的安全方案n11.2.1 主体主体n11.2.2 安全对象安全对象n11.2.3 权限层次结构权限层次结构n11.2.4 固定数据库角色权限固定数据库角色权限n11.2.5 固定服务器角色权限固定服务器角色权限 http:/ 数据库的安全方案nSQL Server 2005 Database Engine 可以帮助您保护数可以帮助您保护数据免受未经授权的泄露和篡改。据免受未经授权的泄露和篡改。SQL Server Database Engine 安全功能包括高粒度身份验证、授权和验证机制;安全功能包括高粒度身份验证、授权
14、和验证机制;增强加密;安全上下文切换和模拟及集成的密钥管理。增强加密;安全上下文切换和模拟及集成的密钥管理。http:/ 主体n“主体主体”是可以请求是可以请求 SQL Server 资源的个体、组和过程。资源的个体、组和过程。与与 SQL Server 授权模型的其他组件一样,主体也可以按层授权模型的其他组件一样,主体也可以按层次结构排列。主体的影响范围取决于主体定义的范围次结构排列。主体的影响范围取决于主体定义的范围(Windows、服务器或数据库、服务器或数据库),以及主体是否不可分或是一,以及主体是否不可分或是一个集合。例如,个集合。例如,Windows 登录名就是一个不可分主体,而登
15、录名就是一个不可分主体,而 Windows 组则是一个集合主体。每个主体都有一个惟一的组则是一个集合主体。每个主体都有一个惟一的安全标识符安全标识符(SID)。http:/ 主体n1. 应用程序角色n应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用户的特权来运行。使用应用程序角色,可以只允许通过特定应用程序用户的特权来运行。使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。连接的用户访问特定数据。 n应用程序角色切换安全上下文的过程包括以下步骤。应用程序角色切换安全上下文的过程包括以下步骤。n(1)
16、 用户执行客户端应用程序。用户执行客户端应用程序。n(2) 客户端应用程序作为用户连接到客户端应用程序作为用户连接到 SQL Server。 n(3) 然后应用程序用一个只有它才知道的密码执行然后应用程序用一个只有它才知道的密码执行 sp_setapprole 存存储过程。储过程。 n(4) 如果应用程序角色名称和密码都有效,将激活应用程序角色。如果应用程序角色名称和密码都有效,将激活应用程序角色。 n(5) 此时,连接将失去用户权限,而获得应用程序角色权限。此时,连接将失去用户权限,而获得应用程序角色权限。http:/ 主体n2. 数据库用户n数据库用户是数据库级别上的主体。每个数据库用户都
17、是数据库用户是数据库级别上的主体。每个数据库用户都是 public 角色的成员。角色的成员。n默认情况下,数据库创建时就包含一个默认情况下,数据库创建时就包含一个 guest 用户。授予用户。授予 guest 用户的权限由在数据库中没有账户的用户继承。用户的权限由在数据库中没有账户的用户继承。nguest 用户不能删除,但可以通过在用户不能删除,但可以通过在 master 和和 temp 以以外的任何数据库中执行外的任何数据库中执行 REVOKE CONNECT FROM GUEST 来撤销该用户的来撤销该用户的 CONNECT 权限,从而禁用该用户。权限,从而禁用该用户。http:/ 安全对
18、象n安全对象是安全对象是 SQL Server Database Engine 授权系统控制授权系统控制对其进行访问的资源。通过创建可以为自己设置安全性的名对其进行访问的资源。通过创建可以为自己设置安全性的名为为“范围范围”的嵌套层次结构,可以将某些安全对象包含在其的嵌套层次结构,可以将某些安全对象包含在其他安全对象中。安全对象范围有服务器、数据库和架构。他安全对象中。安全对象范围有服务器、数据库和架构。http:/ 权限层次结构nSQL Server 2005 Database Engine 管理着可以通过权管理着可以通过权限进行保护的实体的分层集合。这些实体称为限进行保护的实体的分层集合。
19、这些实体称为“安全对象安全对象”。在安全对象中,最突出的是服务器和数据库,但可以在更细在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。的级别上设置离散权限。SQL Server 通过验证主体是否已通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。获得适当的权限来控制主体对安全对象执行的操作。 n(1) 权限层次权限层次n图图11.1显示了数据库引擎权限层次结构之间的关系。显示了数据库引擎权限层次结构之间的关系。n(2) 主要权限主要权限nCONTROL 为被授权者授予类似所有权的功能。为被授权者授予类似所有权的功能。 nALTER 授予更改特定安全对象的
20、属性授予更改特定安全对象的属性(所有权除外所有权除外)的的权限。权限。 http:/ 11.2.3 权限层次结构权限层次结构n图图11.1 数据库引擎权限层次结构之间的关系数据库引擎权限层次结构之间的关系 http:/ 权限层次结构nTAKE OWNERSHIP 允许被授权者获取所授予的安全对象的所允许被授权者获取所授予的安全对象的所有权。有权。nIMPERSONATE 允许被授权者模拟该登录名。允许被授权者模拟该登录名。nIMPERSONATE 允许被授权者模拟该用户。允许被授权者模拟该用户。nCREATE 授予被授权者创建服务器安全对象授予被授权者创建服务器安全对象的权限。的权限。nCRE
21、ATE 授予被授权者创建数据库安全对象授予被授权者创建数据库安全对象的权限。的权限。nCREATE 授予创建包含在架构中的授予创建包含在架构中的安全对象的权限。但是,若要在特定架构中创建安全对象,必须对该架安全对象的权限。但是,若要在特定架构中创建安全对象,必须对该架构具有构具有 ALTER 权限。权限。nVIEW DEFINITION 允许被授权者访问元数据。允许被授权者访问元数据。http:/ 固定数据库角色权限固定数据库角色权限 n固定数据库角色是在数据库级别定义的,并且存在于每个数固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。据库中。db_owner 和和 db_secu
22、rityadmin 数据库角色的数据库角色的成员可以管理固定数据库角色成员身份;但是,只有成员可以管理固定数据库角色成员身份;但是,只有 db_owner 数据库的成员可以向数据库的成员可以向 db_owner 固定数据库角固定数据库角色中添加成员。色中添加成员。n(1) 固定数据库角色到权限的映射固定数据库角色到权限的映射n(2) public 数据库角色数据库角色n每个数据库用户都属于每个数据库用户都属于 public 数据库角色。当尚未对某个数据库角色。当尚未对某个用户授予或拒绝对安全对象的特定权限时,则该用户将继承用户授予或拒绝对安全对象的特定权限时,则该用户将继承授予该安全对象的授予
23、该安全对象的 public 角色的权限。角色的权限。http:/ 固定服务器角色权限固定服务器角色权限 n固定服务器角色在其作用域内属于服务器范围。固定服务器固定服务器角色在其作用域内属于服务器范围。固定服务器角色的每个成员都可以向其所属角色添加其他登录名。角色的每个成员都可以向其所属角色添加其他登录名。 n表表11.3显示了固定服务器角色到权限的映射关系。显示了固定服务器角色到权限的映射关系。http:/ 固定服务器角色权限固定服务器角色权限 http:/ 11.2.5 固定服务器角色权限固定服务器角色权限固定服务器角色权限固定服务器角色权限 http:/ 习 题n填空题n(1) 事务的事务
24、的_是指要么全都执行,要么全都不执行。是指要么全都执行,要么全都不执行。n(2) 事务正常提交的语句是事务正常提交的语句是_。 n选择题n(1) 通过发出通过发出Transact-SQL BEGIN TRANSACTION 语句来启动的语句来启动的事务是事务是( )。nA. 自动提交事务自动提交事务 B. 隐式事务隐式事务 C. 批范围的事务批范围的事务D. 显式事务显式事务n(2) 默认情况下,数据库创建时包含的用户是默认情况下,数据库创建时包含的用户是( )。nA. sa B. administrator C. guestD. dba n简答题n(1) 什么是事务?事务具有哪些特性什么是事务?事务具有哪些特性? n(2) 事务有哪几种类型?每种类型的事务如何启动和结束?事务有哪几种类型?每种类型的事务如何启动和结束?http:/ & A?Thanks!