1 / 40

数据库原理与应用

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

Download Presentation

数据库原理与应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库原理与应用 13 数据库安全性 郑捷

  2. 关系查询处理和查询优化 • 查询优化的概念 • 查询的步骤 • 查询优化 • 代数优化 • 物理优化 郑捷 lzj@fjnu.edu.cn www.lzj.name

  3. 查询的步骤 • 查询分析 • 查询检查 • 查询优化 • 查询执行 郑捷 lzj@fjnu.edu.cn www.lzj.name

  4. 优化器性能高的原因 • 可以从数据字典获取统计信息 • 自动更新统计信息,选择优化路径 • 考虑所有可能的执行计划 • 包含多种优化技术 • 总代价:I/O+CPU+内存+通信 郑捷 lzj@fjnu.edu.cn www.lzj.name

  5. 基于代价的优化 • 启发式优化适合于解释性执行的场合 • 边解释,边查询统计信息等,并进行执行 • 对于编译或者半编译执行的场合,需要采用基于代价的优化方法 郑捷 lzj@fjnu.edu.cn www.lzj.name 数据库原理与应用 5

  6. 索引的分类和作用 • 单字段索引 与 复合索引 • 唯一索引 与 非唯一索引 • 聚集索引 与 非聚集索引 • 在查询中的作用 • 索引的代价 郑捷 lzj@fjnu.edu.cn www.lzj.name 数据库原理与应用 6

  7. 数据库安全性 • 安全概述 • 安全性控制 • 用户识别 • 自主与强制存取控制 • 授权与回收,角色 • 视图 • 审计、加密、统计安全 • SQL Server的安全体系 郑捷 lzj@fjnu.edu.cn www.lzj.name

  8. 安全问题的来源 • 问题的提出 • 数据库的一大特点是数据可以共享 • 数据共享必然带来数据库的安全性问题 • 数据库系统中的数据共享不能是无条件的共享 • 例:军事秘密、国家机密、新产品实验数据、商业信息、客户档案、医疗档案、银行储蓄数据等等…… • 带来问题:数据库安全性 郑捷 lzj@fjnu.edu.cn www.lzj.name

  9. 计算机系统安全 • 计算机系统安全性 • 为计算机系统建立和采取的各种安全保护措施,以保护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。 • 三类计算机系统安全性问题 • 技术安全类 • 管理安全类 • 政策法律类 郑捷 lzj@fjnu.edu.cn www.lzj.name

  10. 安全标准 • TCSEC标准: TCSEC/TDI • CC标准 郑捷 lzj@fjnu.edu.cn www.lzj.name

  11. 计算机系统安全设置 • 普通计算机,安全措施采取层层控制 • 用户  DBMS  OS  DB 郑捷 lzj@fjnu.edu.cn www.lzj.name

  12. 常用数据库控制方式 • 用户标识与鉴别 • 存取控制 • 授权与回收 • 强制存取控制 郑捷 lzj@fjnu.edu.cn www.lzj.name

  13. 授权与回收 • 授权首先是个策略问题 • 数据库管理系统负责实施 • 授权分为可传播的与不可传播的 • 授权主要针对某个对象上的某个操作的权限 郑捷 lzj@fjnu.edu.cn www.lzj.name

  14. 角色 • 数据库对授权,一般通过角色的方式进行 • 角色是一组权限的集合 • 每个用户可以在数据库中扮演多种不同角色,每个角色可以由多个不同用户来扮演,多对多关系 • 用户扮演了某个角色后,就具备了这个角色的权限 • 使用角色便于进行权限的集中管理 • 角色分为对数据库内部对象进行控制的对象角色,和对服务器进行控制的服务器角色 郑捷 lzj@fjnu.edu.cn www.lzj.name

  15. 视图 • 视图是一种将数据限制在一定范围内的方式 • 对视图进行授权,是对查询的一种更严格的限定 郑捷 lzj@fjnu.edu.cn www.lzj.name

  16. 审计 • 审计是一种事后的监督 • 审计的作用是在后台,记录下全部的操作,在事后供审计人员分析可能出现的问题 • 同时也是发生事故后,必要的证据 郑捷 lzj@fjnu.edu.cn www.lzj.name

  17. 数据加密 • 对于敏感性数据,可以对数据进行进一步的加密,只有持有正确密钥的访问者才能获取到真实的数据 • 这样可以避免非法访问者绕过数据库系统直接对数据进行操作 • 缺点是加解密需要耗费系统资源,速度比较慢 郑捷 lzj@fjnu.edu.cn www.lzj.name

  18. 统计数据库安全性 • 一般来说,数据库可能不允许直接查询细节数据,但是允许读取统计数据 • 但是这样的情况下,存在特殊的安全性问题,有一些隐蔽的信息泄露渠道 • 典型的,当数据个数为1的时候,最大值、最小值和平均值,都等于原始数据 • 统计安全性是难以解决的问题 郑捷 lzj@fjnu.edu.cn www.lzj.name

  19. SQL Server的安全机制 • SQL Server采取3层安全机制对数据的安全性进行控制 • 第1层,服务器访问控制,采用登录名+密码验证的方式,或者联合Windows身份验证 • 第2层,数据库用户控制,每个登录者必须在数据库中有对应的用户名才能访问数据库 • 第3层,数据库对象权限控制,用户进入数据库,根据授予的对象权限进行操作 郑捷 lzj@fjnu.edu.cn www.lzj.name

  20. SQL Server安全机制图示 郑捷 lzj@fjnu.edu.cn www.lzj.name

  21. SQL登录的创建和删除 • exec sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] • 创建一个SQL登录名,并且指定账号密码以及默认数据库 • exec sp_droplogin [ @loginame = ] 'login' • 删除指定登录名 郑捷 lzj@fjnu.edu.cn www.lzj.name

  22. 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账号或者组,所以不可能去创建或者删除,只能是授权、禁止或者撤销 郑捷 lzj@fjnu.edu.cn www.lzj.name

  23. 添加与删除用户 • exec sp_adduser [ @loginame = ] 'login' [ , [ @name_in_db = ] 'user' ] [ , [ @grpname = ] 'group' ] • 添加用户实际上是授权某个登录进入本数据库 • exec sp_dropuser [ @name_in_db = ] 'user' • 删除用户并没有删除对应的登录名 郑捷 lzj@fjnu.edu.cn www.lzj.name

  24. 特殊的用户 • 在每个数据库中,都有两个特殊的用户 • dbo(database owner) • 这是本数据库的拥有者,也是最高权限的所有人 • 默认情况下,dbo将被关联到服务器的管理员账号上 • guest • 这是本数据库的访客,凡是在本数据库中没有对应用户的登录名,进入本数据库后都将被自动关联到该用户上 • 如果该用户被删除或禁用,则禁止访客进入 郑捷 lzj@fjnu.edu.cn www.lzj.name

  25. 添加与删除数据库角色 • exec sp_addrole [ @rolename = ] 'role' • 添加角色,新添加的角色没有任何成员和权限 • exec sp_droprole [ @rolename = ] 'role' • 删除角色 • exec sp_helprole [ [ @rolename = ] 'role' ] • 返回某个角色的信息 郑捷 lzj@fjnu.edu.cn www.lzj.name

  26. 为用户分配角色 • sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account' • 为角色添加成员 • 被添加的可以是某个用户,也可以是某个角色,即某个角色成为另一个角色的子集 • sp_droprolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account' • 从角色中删除成员 郑捷 lzj@fjnu.edu.cn www.lzj.name

  27. 为角色或用户赋予权限 • 语句权限: • 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 } ] 郑捷 lzj@fjnu.edu.cn www.lzj.name

  28. 拒绝权限 • 语句权限: • 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 ] 郑捷 lzj@fjnu.edu.cn www.lzj.name

  29. 收回权限 • 语句权限 • 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 } ] 郑捷 lzj@fjnu.edu.cn www.lzj.name

  30. 角色和用户之间的关系 • 角色和用户是一组多对多关系 • 一个角色内有多个成员用户 • 一个用户可以分别属于(或叫扮演)多个角色 • 角色之间还可以有隶属关系 • 一个角色可以拥有另外一系列角色作为成员 郑捷 lzj@fjnu.edu.cn www.lzj.name

  31. 角色、用户和权限 • 可以直接给用户授权 • 也可以给角色授权给角色授权时,该权限自动分配到其内的所有用户和子角色中 • 一个用户可以通过直接授权获取权限,也可以通过其所在的角色获取权限,用户可以同时获取多组权限,其实际权限为这些权限的组合 郑捷 lzj@fjnu.edu.cn www.lzj.name

  32. 权限的冲突 • 当一个用户或角色从多个渠道获取权限时,对权限的分配有以下几种情况 • 未指定=不能操作 • 授权+未指定=授权 • 授权+授权=授权 • 拒绝+未指定=拒绝 • 拒绝+授权=拒绝 • 特别的,一旦某个权限被拒绝,其他渠道即使明确给其授权,也是无效的 郑捷 lzj@fjnu.edu.cn www.lzj.name

  33. 授权的粒度 • 对于语句,是采取整个语句授权的方式 • 对于INSERT和DELETE语句,针对整个表进行授权 • 对于SELECT和UPDATE语句,可以对整表进行授权,也可以对字段进行授权 郑捷 lzj@fjnu.edu.cn www.lzj.name

  34. 视图与安全 • 视图除了简化查询,还表示对信息的一种不同视角。利用对视图的查询和更新进行授权,可以达到对原始数据的部分授权的目的。 • 例如:对表的查询的授权,只能对字段进行限制,不能根据记录的内容进行限制。而通过带有WHERE的视图进行授权,则可以限制只针对部分记录进行查询 郑捷 lzj@fjnu.edu.cn www.lzj.name

  35. 管理员角色 • 除了自定义的角色,服务器和数据库各自提供了一组固有的管理员角色,这些角色表示了对特殊的管理操作的授权 • 服务器角色主要包括对服务器的各项控制,以及添加、删除、附加数据库等 • 数据库角色主要包括对数据库的各种管理操作的控制,以及简化的读、写权限等 郑捷 lzj@fjnu.edu.cn www.lzj.name

  36. 应用程序角色 • 在SQL Server中,还提供应用程序角色,供特殊的应用程序连接登录后使用 郑捷 lzj@fjnu.edu.cn www.lzj.name

  37. 安全性在编程中的应用 • 使用不同账号登录数据库获取不同权限,主要是为了让用户之间能够有不同权限 • 在数据库服务器管理上,当一个服务器有可能多人共享时,此功能很实用 • 在目前的软件开发中,往往都是用sa账号登录服务器,然后通过应用程序内部机制实现用户、角色、权限控制,因此逐步被淡化 郑捷 lzj@fjnu.edu.cn www.lzj.name

  38. 数据库安全性 • 安全概述 • 安全性控制 • 用户识别 • 自主与强制存取控制 • 授权与回收,角色 • 视图 • 审计、加密、统计安全 • SQL Server的安全体系 郑捷 lzj@fjnu.edu.cn www.lzj.name

  39. 练习与上机习题 • 书面作业: • 275页:2 • 上机练习: • 148页:7、8、9 • 要求:先通过企业管理器界面实现,理解各项权限的含义、粒度等。然后用代码实现,代码细节请参考《SQL Server联机丛书》 郑捷 lzj@fjnu.edu.cn www.lzj.name

  40. 预习 • 数据库完整性 郑捷 lzj@fjnu.edu.cn www.lzj.name

More Related