数据库原理与应用
-
Upload
latifah-warren -
Category
Documents
-
view
48 -
download
13
description
Transcript of 数据库原理与应用
数据库原理与应用13 数据库安全性
郑捷
数据库原理与应用 4郑捷[email protected] www.lzj.name
优化器性能高的原因
• 可以从数据字典获取统计信息• 自动更新统计信息,选择优化路径• 考虑所有可能的执行计划• 包含多种优化技术
• 总代价: I/O+CPU+ 内存 + 通信
数据库原理与应用 5郑捷[email protected] www.lzj.name
• 启发式优化适合于解释性执行的场合• 边解释,边查询统计信息等,并进行执行• 对于编译或者半编译执行的场合,需要采用基于
代价的优化方法
基于代价的优化
数据库原理与应用 5
数据库原理与应用 6郑捷[email protected] www.lzj.name
• 单字段索引 与 复合索引• 唯一索引 与 非唯一索引• 聚集索引 与 非聚集索引
• 在查询中的作用
• 索引的代价
索引的分类和作用
数据库原理与应用 6
数据库原理与应用 7郑捷[email protected] www.lzj.name
数据库安全性
• 安全概述• 安全性控制– 用户识别– 自主与强制存取控制– 授权与回收,角色
• 视图• 审计、加密、统计安全• SQL Server 的安全体系
数据库原理与应用 8郑捷[email protected] www.lzj.name
安全问题的来源
• 问题的提出– 数据库的一大特点是数据可以共享– 数据共享必然带来数据库的安全性问题– 数据库系统中的数据共享不能是无条件的共享– 例:军事秘密、国家机密、新产品实验数据、商业信
息、客户档案、医疗档案、银行储蓄数据等等……
• 带来问题:数据库安全性
数据库原理与应用 9郑捷[email protected] www.lzj.name
计算机系统安全
• 计算机系统安全性– 为计算机系统建立和采取的各种安全保护措施,以保
护计算机系统中的硬件、软件及数据,防止其因偶然或恶意的原因使系统遭到破坏,数据遭到更改或泄露等。
• 三类计算机系统安全性问题– 技术安全类– 管理安全类– 政策法律类
数据库原理与应用 13郑捷[email protected] www.lzj.name
授权与回收
• 授权首先是个策略问题• 数据库管理系统负责实施
• 授权分为可传播的与不可传播的
• 授权主要针对某个对象上的某个操作的权限
数据库原理与应用 14郑捷[email protected] www.lzj.name
角色
• 数据库对授权,一般通过角色的方式进行• 角色是一组权限的集合• 每个用户可以在数据库中扮演多种不同角色,每
个角色可以由多个不同用户来扮演,多对多关系• 用户扮演了某个角色后,就具备了这个角色的权
限• 使用角色便于进行权限的集中管理
• 角色分为对数据库内部对象进行控制的对象角色,和对服务器进行控制的服务器角色
数据库原理与应用 16郑捷[email protected] www.lzj.name
审计
• 审计是一种事后的监督• 审计的作用是在后台,记录下全部的操作,在事
后供审计人员分析可能出现的问题• 同时也是发生事故后,必要的证据
数据库原理与应用 17郑捷[email protected] www.lzj.name
数据加密
• 对于敏感性数据,可以对数据进行进一步的加密,只有持有正确密钥的访问者才能获取到真实的数据
• 这样可以避免非法访问者绕过数据库系统直接对数据进行操作
• 缺点是加解密需要耗费系统资源,速度比较慢
数据库原理与应用 18郑捷[email protected] www.lzj.name
统计数据库安全性
• 一般来说,数据库可能不允许直接查询细节数据,但是允许读取统计数据
• 但是这样的情况下,存在特殊的安全性问题,有一些隐蔽的信息泄露渠道
• 典型的,当数据个数为 1 的时候,最大值、最小值和平均值,都等于原始数据
• 统计安全性是难以解决的问题
数据库原理与应用 19郑捷[email protected] www.lzj.name
SQL Server的安全机制
• SQL Server 采取 3 层安全机制对数据的安全性进行控制
• 第 1 层,服务器访问控制,采用登录名 + 密码验证的方式,或者联合 Windows身份验证
• 第 2 层,数据库用户控制,每个登录者必须在数据库中有对应的用户名才能访问数据库
• 第 3 层,数据库对象权限控制,用户进入数据库,根据授予的对象权限进行操作
数据库原理与应用 20郑捷[email protected] www.lzj.name
SQL Server安全机制图示
Windows
SQL Server
DB
table
访问者
Wi ndows帐号
SQL Server登录名
数据库用户
数据库角色
服务器角色
数据库原理与应用 21郑捷[email protected] www.lzj.name
SQL登录的创建和删除
• exec sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ]
• 创建一个 SQL登录名,并且指定账号密码以及默认数据库
• exec sp_droplogin [ @loginame = ] 'login'• 删除指定登录名
数据库原理与应用 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账号或者组,所以不可能去创建或者删除,只能是授权、禁止或者撤销
数据库原理与应用 23郑捷[email protected] www.lzj.name
添加与删除用户
• exec sp_adduser [ @loginame = ] 'login' [ , [ @name_in_db = ] 'user' ] [ , [ @grpname = ] 'group' ]
• 添加用户实际上是授权某个登录进入本数据库• exec sp_dropuser [ @name_in_db = ] 'user'• 删除用户并没有删除对应的登录名
数据库原理与应用 24郑捷[email protected] www.lzj.name
特殊的用户
• 在每个数据库中,都有两个特殊的用户• dbo(database owner)– 这是本数据库的拥有者,也是最高权限的所有人– 默认情况下, dbo 将被关联到服务器的管理员账号上
• guest– 这是本数据库的访客,凡是在本数据库中没有对应用
户的登录名,进入本数据库后都将被自动关联到该用户上
– 如果该用户被删除或禁用,则禁止访客进入
数据库原理与应用 25郑捷[email protected] www.lzj.name
添加与删除数据库角色
• exec sp_addrole [ @rolename = ] 'role'• 添加角色,新添加的角色没有任何成员和权限• exec sp_droprole [ @rolename = ] 'role'• 删除角色• exec sp_helprole [ [ @rolename = ] 'role' ]• 返回某个角色的信息
数据库原理与应用 26郑捷[email protected] www.lzj.name
为用户分配角色
• sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
• 为角色添加成员• 被添加的可以是某个用户,也可以是某个角色,即某个角色成为另一个角色的子集
• sp_droprolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
• 从角色中删除成员
数据库原理与应用 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 } ]
数据库原理与应用 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 ]
数据库原理与应用 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 } ]
数据库原理与应用 30郑捷[email protected] www.lzj.name
角色和用户之间的关系
• 角色和用户是一组多对多关系– 一个角色内有多个成员用户– 一个用户可以分别属于 ( 或叫扮演 ) 多个角色
• 角色之间还可以有隶属关系– 一个角色可以拥有另外一系列角色作为成员
数据库原理与应用 31郑捷[email protected] www.lzj.name
角色、用户和权限
• 可以直接给用户授权• 也可以给角色授权给角色授权时,该权限自动分配到其内的所有用户和子角色中
• 一个用户可以通过直接授权获取权限,也可以通过其所在的角色获取权限,用户可以同时获取多组权限,其实际权限为这些权限的组合
数据库原理与应用 32郑捷[email protected] www.lzj.name
权限的冲突
• 当一个用户或角色从多个渠道获取权限时,对权限的分配有以下几种情况– 未指定 = 不能操作– 授权 +未指定 = 授权– 授权 + 授权 = 授权– 拒绝 +未指定 =拒绝– 拒绝 +授权 =拒绝
• 特别的,一旦某个权限被拒绝,其他渠道即使明确给其授权,也是无效的
数据库原理与应用 33郑捷[email protected] www.lzj.name
授权的粒度
• 对于语句,是采取整个语句授权的方式• 对于 INSERT 和 DELETE语句,针对整个表进行授
权• 对于 SELECT 和 UPDATE语句,可以对整表进行授
权,也可以对字段进行授权
数据库原理与应用 34郑捷[email protected] www.lzj.name
视图与安全
• 视图除了简化查询,还表示对信息的一种不同视角。利用对视图的查询和更新进行授权,可以达到对原始数据的部分授权的目的。– 例如:对表的查询的授权,只能对字段进行限制,不
能根据记录的内容进行限制。而通过带有 WHERE 的视图进行授权,则可以限制只针对部分记录进行查询
数据库原理与应用 35郑捷[email protected] www.lzj.name
管理员角色
• 除了自定义的角色,服务器和数据库各自提供了一组固有的管理员角色,这些角色表示了对特殊的管理操作的授权
• 服务器角色主要包括对服务器的各项控制,以及添加、删除、附加数据库等
• 数据库角色主要包括对数据库的各种管理操作的控制,以及简化的读、写权限等
数据库原理与应用 37郑捷[email protected] www.lzj.name
安全性在编程中的应用
• 使用不同账号登录数据库获取不同权限,主要是为了让用户之间能够有不同权限
• 在数据库服务器管理上,当一个服务器有可能多人共享时,此功能很实用
• 在目前的软件开发中,往往都是用 sa账号登录服务器,然后通过应用程序内部机制实现用户、角色、权限控制,因此逐步被淡化
数据库原理与应用 38郑捷[email protected] www.lzj.name
数据库安全性
• 安全概述• 安全性控制– 用户识别– 自主与强制存取控制– 授权与回收,角色
• 视图• 审计、加密、统计安全• SQL Server 的安全体系
数据库原理与应用 39郑捷[email protected] www.lzj.name
练习与上机习题
• 书面作业:• 275页: 2
• 上机练习:• 148页: 7 、 8 、 9• 要求:先通过企业管理器界面实现,理解各项权
限的含义、粒度等。然后用代码实现,代码细节请参考《 SQL Server联机丛书》