数据库原理与应用

40
数数数数数数数数 13 数数数数数数 数数

description

数据库原理与应用. 13 数据库安全性 郑捷. 关系查询处理和查询优化. 查询优化的概念 查询的步骤 查询优化 代数优化 物理优化. 查询的步骤. 查询分析 查询检查 查询优化 查询执行. 优化器性能高的原因. 可以从数据字典获取统计信息 自动更新统计信息,选择优化路径 考虑所有可能的执行计划 包含多种优化技术 总代价: I/O+CPU+ 内存 + 通信. 基于代价的优化. 启发式优化适合于解释性执行的场合 边解释,边查询统计信息等,并进行执行 对于编译或者半编译执行的场合,需要采用基于代价的优化方法. 数据库原理与应用. 5. - PowerPoint PPT Presentation

Transcript of 数据库原理与应用

Page 1: 数据库原理与应用

数据库原理与应用13 数据库安全性

郑捷

Page 2: 数据库原理与应用

数据库原理与应用 2郑捷[email protected] www.lzj.name

关系查询处理和查询优化

• 查询优化的概念• 查询的步骤• 查询优化• 代数优化• 物理优化

Page 3: 数据库原理与应用

数据库原理与应用 3郑捷[email protected] www.lzj.name

查询的步骤

• 查询分析• 查询检查• 查询优化• 查询执行

Page 4: 数据库原理与应用

数据库原理与应用 4郑捷[email protected] www.lzj.name

优化器性能高的原因

• 可以从数据字典获取统计信息• 自动更新统计信息,选择优化路径• 考虑所有可能的执行计划• 包含多种优化技术

• 总代价: I/O+CPU+ 内存 + 通信

Page 5: 数据库原理与应用

数据库原理与应用 5郑捷[email protected] www.lzj.name

• 启发式优化适合于解释性执行的场合• 边解释,边查询统计信息等,并进行执行• 对于编译或者半编译执行的场合,需要采用基于

代价的优化方法

基于代价的优化

数据库原理与应用 5

Page 6: 数据库原理与应用

数据库原理与应用 6郑捷[email protected] www.lzj.name

• 单字段索引 与 复合索引• 唯一索引 与 非唯一索引• 聚集索引 与 非聚集索引

• 在查询中的作用

• 索引的代价

索引的分类和作用

数据库原理与应用 6

Page 7: 数据库原理与应用

数据库原理与应用 7郑捷[email protected] www.lzj.name

数据库安全性

• 安全概述• 安全性控制– 用户识别– 自主与强制存取控制– 授权与回收,角色

• 视图• 审计、加密、统计安全• SQL Server 的安全体系

Page 8: 数据库原理与应用

数据库原理与应用 8郑捷[email protected] www.lzj.name

安全问题的来源

• 问题的提出– 数据库的一大特点是数据可以共享– 数据共享必然带来数据库的安全性问题– 数据库系统中的数据共享不能是无条件的共享– 例:军事秘密、国家机密、新产品实验数据、商业信

息、客户档案、医疗档案、银行储蓄数据等等……

• 带来问题:数据库安全性

Page 9: 数据库原理与应用

数据库原理与应用 9郑捷[email protected] www.lzj.name

计算机系统安全

• 计算机系统安全性– 为计算机系统建立和采取的各种安全保护措施,以保

护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。

• 三类计算机系统安全性问题– 技术安全类– 管理安全类– 政策法律类

Page 10: 数据库原理与应用

数据库原理与应用 10郑捷[email protected] www.lzj.name

安全标准

• TCSEC 标准: TCSEC/TDI• CC 标准

Page 11: 数据库原理与应用

数据库原理与应用 11郑捷[email protected] www.lzj.name

计算机系统安全设置

• 普通计算机,安全措施采取层层控制

• 用户 DBMS OS DB

Page 12: 数据库原理与应用

数据库原理与应用 12郑捷[email protected] www.lzj.name

常用数据库控制方式

• 用户标识与鉴别• 存取控制• 授权与回收• 强制存取控制

Page 13: 数据库原理与应用

数据库原理与应用 13郑捷[email protected] www.lzj.name

授权与回收

• 授权首先是个策略问题• 数据库管理系统负责实施

• 授权分为可传播的与不可传播的

• 授权主要针对某个对象上的某个操作的权限

Page 14: 数据库原理与应用

数据库原理与应用 14郑捷[email protected] www.lzj.name

角色

• 数据库对授权,一般通过角色的方式进行• 角色是一组权限的集合• 每个用户可以在数据库中扮演多种不同角色,每

个角色可以由多个不同用户来扮演,多对多关系• 用户扮演了某个角色后,就具备了这个角色的权

限• 使用角色便于进行权限的集中管理

• 角色分为对数据库内部对象进行控制的对象角色,和对服务器进行控制的服务器角色

Page 15: 数据库原理与应用

数据库原理与应用 15郑捷[email protected] www.lzj.name

视图

• 视图是一种将数据限制在一定范围内的方式• 对视图进行授权,是对查询的一种更严格的限定

Page 16: 数据库原理与应用

数据库原理与应用 16郑捷[email protected] www.lzj.name

审计

• 审计是一种事后的监督• 审计的作用是在后台,记录下全部的操作,在事

后供审计人员分析可能出现的问题• 同时也是发生事故后,必要的证据

Page 17: 数据库原理与应用

数据库原理与应用 17郑捷[email protected] www.lzj.name

数据加密

• 对于敏感性数据,可以对数据进行进一步的加密,只有持有正确密钥的访问者才能获取到真实的数据

• 这样可以避免非法访问者绕过数据库系统直接对数据进行操作

• 缺点是加解密需要耗费系统资源,速度比较慢

Page 18: 数据库原理与应用

数据库原理与应用 18郑捷[email protected] www.lzj.name

统计数据库安全性

• 一般来说,数据库可能不允许直接查询细节数据,但是允许读取统计数据

• 但是这样的情况下,存在特殊的安全性问题,有一些隐蔽的信息泄露渠道

• 典型的,当数据个数为 1 的时候,最大值、最小值和平均值,都等于原始数据

• 统计安全性是难以解决的问题

Page 19: 数据库原理与应用

数据库原理与应用 19郑捷[email protected] www.lzj.name

SQL Server的安全机制

• SQL Server 采取 3 层安全机制对数据的安全性进行控制

• 第 1 层,服务器访问控制,采用登录名 + 密码验证的方式,或者联合 Windows身份验证

• 第 2 层,数据库用户控制,每个登录者必须在数据库中有对应的用户名才能访问数据库

• 第 3 层,数据库对象权限控制,用户进入数据库,根据授予的对象权限进行操作

Page 20: 数据库原理与应用

数据库原理与应用 20郑捷[email protected] www.lzj.name

SQL Server安全机制图示

Windows

SQL Server

DB

table

访问者

Wi ndows帐号

SQL Server登录名

数据库用户

数据库角色

服务器角色

Page 21: 数据库原理与应用

数据库原理与应用 21郑捷[email protected] www.lzj.name

SQL登录的创建和删除

• exec sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ]

• 创建一个 SQL登录名,并且指定账号密码以及默认数据库

• exec sp_droplogin [ @loginame = ] 'login'• 删除指定登录名

Page 22: 数据库原理与应用

数据库原理与应用 22郑捷[email protected] www.lzj.name

Windows账户登录的授权与撤销

• exec sp_grantlogin [@loginame =] 'login'• login 是要添加的 Windows NT 用户或组的名称。

Windows NT 组和用户必须用 Windows NT 域名限定,格式为 "域 \ 用户 " ,例如 London\Joeb

• exec sp_revokelogin [ @loginame = ] 'login'• 撤销登录许可• sp_denylogin [ @loginame = ] 'login' • 拒绝登录• 注意: Windows登录是针对已经存在的 Windows账号或者组,所以不可能去创建或者删除,只能是授权、禁止或者撤销

Page 23: 数据库原理与应用

数据库原理与应用 23郑捷[email protected] www.lzj.name

添加与删除用户

• exec sp_adduser [ @loginame = ] 'login' [ , [ @name_in_db = ] 'user' ] [ , [ @grpname = ] 'group' ]

• 添加用户实际上是授权某个登录进入本数据库• exec sp_dropuser [ @name_in_db = ] 'user'• 删除用户并没有删除对应的登录名

Page 24: 数据库原理与应用

数据库原理与应用 24郑捷[email protected] www.lzj.name

特殊的用户

• 在每个数据库中,都有两个特殊的用户• dbo(database owner)– 这是本数据库的拥有者,也是最高权限的所有人– 默认情况下, dbo 将被关联到服务器的管理员账号上

• guest– 这是本数据库的访客,凡是在本数据库中没有对应用

户的登录名,进入本数据库后都将被自动关联到该用户上

– 如果该用户被删除或禁用,则禁止访客进入

Page 25: 数据库原理与应用

数据库原理与应用 25郑捷[email protected] www.lzj.name

添加与删除数据库角色

• exec sp_addrole [ @rolename = ] 'role'• 添加角色,新添加的角色没有任何成员和权限• exec sp_droprole [ @rolename = ] 'role'• 删除角色• exec sp_helprole [ [ @rolename = ] 'role' ]• 返回某个角色的信息

Page 26: 数据库原理与应用

数据库原理与应用 26郑捷[email protected] www.lzj.name

为用户分配角色

• sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'

• 为角色添加成员• 被添加的可以是某个用户,也可以是某个角色,即某个角色成为另一个角色的子集

• sp_droprolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'

• 从角色中删除成员

Page 27: 数据库原理与应用

数据库原理与应用 27郑捷[email protected] www.lzj.name

为角色或用户赋予权限

• 语句权限:– GRANT { ALL | statement [ ,...n ] }

TO security_account [ ,...n ]• 对象权限:

– GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]

Page 28: 数据库原理与应用

数据库原理与应用 28郑捷[email protected] www.lzj.name

拒绝权限

• 语句权限:– DENY { ALL | statement [ ,...n ] }

TO security_account [ ,...n ]

• 对象权限:– DENY

{ ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ ,...n ] [ CASCADE ]

Page 29: 数据库原理与应用

数据库原理与应用 29郑捷[email protected] www.lzj.name

收回权限

• 语句权限– REVOKE { ALL | statement [ ,...n ] }

FROM security_account [ ,...n ]

• 对象权限:– REVOKE [ GRANT OPTION FOR ]

{ ALL [ PRIVILEGES ] | permission [ ,...n ] } { [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } { TO | FROM } security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ]

Page 30: 数据库原理与应用

数据库原理与应用 30郑捷[email protected] www.lzj.name

角色和用户之间的关系

• 角色和用户是一组多对多关系– 一个角色内有多个成员用户– 一个用户可以分别属于 ( 或叫扮演 ) 多个角色

• 角色之间还可以有隶属关系– 一个角色可以拥有另外一系列角色作为成员

Page 31: 数据库原理与应用

数据库原理与应用 31郑捷[email protected] www.lzj.name

角色、用户和权限

• 可以直接给用户授权• 也可以给角色授权给角色授权时,该权限自动分配到其内的所有用户和子角色中

• 一个用户可以通过直接授权获取权限,也可以通过其所在的角色获取权限,用户可以同时获取多组权限,其实际权限为这些权限的组合

Page 32: 数据库原理与应用

数据库原理与应用 32郑捷[email protected] www.lzj.name

权限的冲突

• 当一个用户或角色从多个渠道获取权限时,对权限的分配有以下几种情况– 未指定 = 不能操作– 授权 +未指定 = 授权– 授权 + 授权 = 授权– 拒绝 +未指定 =拒绝– 拒绝 +授权 =拒绝

• 特别的,一旦某个权限被拒绝,其他渠道即使明确给其授权,也是无效的

Page 33: 数据库原理与应用

数据库原理与应用 33郑捷[email protected] www.lzj.name

授权的粒度

• 对于语句,是采取整个语句授权的方式• 对于 INSERT 和 DELETE语句,针对整个表进行授

权• 对于 SELECT 和 UPDATE语句,可以对整表进行授

权,也可以对字段进行授权

Page 34: 数据库原理与应用

数据库原理与应用 34郑捷[email protected] www.lzj.name

视图与安全

• 视图除了简化查询,还表示对信息的一种不同视角。利用对视图的查询和更新进行授权,可以达到对原始数据的部分授权的目的。– 例如:对表的查询的授权,只能对字段进行限制,不

能根据记录的内容进行限制。而通过带有 WHERE 的视图进行授权,则可以限制只针对部分记录进行查询

Page 35: 数据库原理与应用

数据库原理与应用 35郑捷[email protected] www.lzj.name

管理员角色

• 除了自定义的角色,服务器和数据库各自提供了一组固有的管理员角色,这些角色表示了对特殊的管理操作的授权

• 服务器角色主要包括对服务器的各项控制,以及添加、删除、附加数据库等

• 数据库角色主要包括对数据库的各种管理操作的控制,以及简化的读、写权限等

Page 36: 数据库原理与应用

数据库原理与应用 36郑捷[email protected] www.lzj.name

应用程序角色

• 在 SQL Server 中,还提供应用程序角色,供特殊的应用程序连接登录后使用

Page 37: 数据库原理与应用

数据库原理与应用 37郑捷[email protected] www.lzj.name

安全性在编程中的应用

• 使用不同账号登录数据库获取不同权限,主要是为了让用户之间能够有不同权限

• 在数据库服务器管理上,当一个服务器有可能多人共享时,此功能很实用

• 在目前的软件开发中,往往都是用 sa账号登录服务器,然后通过应用程序内部机制实现用户、角色、权限控制,因此逐步被淡化

Page 38: 数据库原理与应用

数据库原理与应用 38郑捷[email protected] www.lzj.name

数据库安全性

• 安全概述• 安全性控制– 用户识别– 自主与强制存取控制– 授权与回收,角色

• 视图• 审计、加密、统计安全• SQL Server 的安全体系

Page 39: 数据库原理与应用

数据库原理与应用 39郑捷[email protected] www.lzj.name

练习与上机习题

• 书面作业:• 275页: 2

• 上机练习:• 148页: 7 、 8 、 9• 要求:先通过企业管理器界面实现,理解各项权

限的含义、粒度等。然后用代码实现,代码细节请参考《 SQL Server联机丛书》

Page 40: 数据库原理与应用

数据库原理与应用 40郑捷[email protected] www.lzj.name

预习

• 数据库完整性