配色: 字号:
第08章 数据库安全性
2022-12-24 | 阅:  转:  |  分享 
  
第8章 数据库安全性本章要点安全性的概念数据库系统的安全机制存取控制自主存取控制(DAC)GRANT语句REVOKE语句 强制存取控制(M
AC)基于角色的访问控制本章要点其它安全控制方法视图机制审计数据加密统计数据库安全性数据库安全机制的设计目标试图破坏安全的人所花费
的代价 >> 得到的利益SQL Server和 Oracle的安全控制完整性和安全性的区别数据库的完整性是指数据的正确性、有效性和
相容性;数据库完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出。数据库的安全性是指保护数据库避免不合法的使用
,以防数据泄露、更改或破坏。数据库的安全性是为了防止对数据库的恶意破坏和非法存取。 8.1 数据库安全性概述问题的提出数据库的
一大特点是数据可以共享数据共享必然带来数据库的安全性问题数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、新产品实验
数据、市场需求分析、市场营销策略、销售计划、客户档案、医疗档案、银行储蓄数据安全性问题对数据库内数据的非授权访问正常业务需要时,授
权用户不能正常得到数据库的数据服务数据库管理系统安全机制的核心目的是提供对数据安全存取的服务。即在向授权用户提供可靠的数据服务的同
时,又要拒绝非授权用户对数据的存取访问请求。保证数据库管理下的数据的可用性、完整性和一致性,进而保护数据库所有者和使用者的合法权益
。数据库系统的安全机制8.2 用户标识和鉴别系统提供一定的方式让用户标识自己的名字和身份,系统进行核实,通过鉴定后才提供系统
使用权。常用方法: 通行字认证 数字证书认证 智能卡认证 个人特征识别8.3 存取控制对于获得上机权的用户还要根据系统预先
定义好的外模式或用户权限进行存取控制,保证用户只能存取他有权存取的数据。存取控制机制主要包括两部分:定义用户权限合法权限检查存取机
制的类别 自主存取控制(DAC)用户对于不同的对象有不同的存取权限;不同的用户对同一对象的存取权限也各不相同;用户可将自己拥有的存
取权限转授给其他用户。 强制存取控制(MAC)每一个数据对象被标以一定的密级;每一个用户也被授予某一个级别的许可证;对于任意一个对
象,只有具有合法许可证的用户才可以存取。 8.3.1 自主存取控制(DAC)方法用户权限是由两个要素组成的:数据对象和操作类型定义
一个用户的存取权限就是要定义这个用户可以在哪些数据对象上进行哪些类型的操作。在数据库系统中,定义存取权限称为授权。DBMS把授权的
结果存入数据字典。当用户提出操作请求时,DBMS根据授权定义进行检查,以决定是否执行操作请求。自主存取控制通过SQL 的GRANT
语句和REVOKE语句实现授权和收回授权。2.创建登录账号用户需要使用登录名连接到SQL Server。登录名是连接SQL Ser
ver实例的个人或进程的标识,是一个可由安全系统进行身份验证的安全主体。登录名的作用域是整个数据库引擎。SQL Server 20
12服务器内置的系统登录名有系统管理员组、本地管理员组、sa、Network Service和SYSTEM等,用户也可以创建自己的
登录名。可基于Windows主体,例如域用户或Windows域组,创建登录名,也可创建一个并非基于Windows主体的SQL Se
rver登录名。2.创建登录账号在SQL Server 2012中,使用CREATE LOGIN语句创建一个新的SQL Serve
r登录账号。CREATE LOGIN语句的一般格式为: CREATE LOGIN <登录名> PASSWO
RD = { ''password'' } [,DEFAULT_DATABASE = database ]SQL Ser
ver身份验证登录名的类型为sysname,必须符合标识符的规则,且不能包含“\”。密码区分大小写,应始终至少包含8个字符,并且不
能超过128个字符。密码可以包含字母、数字和大多数非字母数字字符,不能包含单引号或登录名。 指派给登录名的默认数据库。如果未包括此
选项,则默认数据库将设置为 master。2.创建登录账号【例8.1】创建一个登录名login_test,登录默认数据库为Sale
Product,密码为123456。CREATE LOGIN login_test WITH PASSWORD = ''123
456'', DEFAULT_DATABASE = SaleProduct3.创建用户若要连接 SQL Server 实例上的
特定数据库,登录名必须映射到数据库用户。数据库内的权限是向数据库用户而不是登录名授予和收回的。CREATE USER语句的一般格式
为: CREATE USER <用户名> [ { FOR | FROM } LOGIN <登录名>
| WITHOUT LOGIN]<用户名>指定在此数据库中用于识别该用户的名称,其数据类型为sysname,长度最
多是128个字符。<登录名>指定要为其创建数据库用户的登录名,必须是服务器中的有效登录名,当此SQL Server登录名进入数据库
时,它将获取正在创建的这个数据库用户的名称和 IDWITHOUT LOGIN子句指定不将用户映射到现有登录名。3.创建用户【例8.
2】创建SaleProduct数据库的用户user1,映射到登录名login_test。USE SaleProductGOCREA
TE USER user1 FOR LOGIN login_test GO说明在SQL Server中可以调用系统存储过
程sp_addlogin、sp_adduser创建登录名和用户,但SQL Server 2012以后就不再建议使用这种方法了。授权
语句功能:把授权的决定告诉系统,由GRANT和REVOKE语句完成把授权的结果存入数据字典当用户提出操作请求时,根据授权情况进行检
查,以决定是执行操作还是拒绝4.GRANT语句功能:将操作权限授予用户语句的格式:GRANT <权限>[,<权限>]…
[ ON <对象名> ] TO <用户>[,<用户>]… [WITH GRANT OPT
ION];例题 【例8.3】把对Customer(客户信息)表的查询权限授给用户USER1。GRANT SELECT ON C
ustomer TO USER1;例题【例8.4】把对Customer(客户信息)表的全部权限授予用户USER2和USER3。G
RANT ALL PRIVILEGES ON CustomerTO USER2, USER3;例题【例8.5】把对Orde
rs(订单)表的全部权限授予全部用户。GRANT ALL PRIVILEGES ON OrdersTO PUBLIC;例题【
例8.6】把查询Customer(客户信息)表和修改客户电话的权限授给用户USER4。GRANT UPDATE(custPhon
e), SELECT ON Customer TO USER4; 【例8.7】把对Customer(客户信息)表的INSERT
权限授予USER1用户,并允许他再将此权限授予其他用户。GRANT INSERT ON Customer TO USER1W
ITH GRANT OPTION;传播权限 执行后,USER1不仅拥有了对Customer表的INSERT权限, 还可以传播此
权限:GRANT INSERT ON Customer TO USER5 WITH GRANT OPTION; 同样,U
SER5还可以将此权限授予USER6:GRANT INSERT ON Customer TO USER6; 但USE
R6不能再传播此权限。不允许循环授权【例8.8】把创建基本表的权限授予用户USER7。GRANT CREATE TABLETO
USER7;5.REVOKE语句功能:收回用户的操作权限语句的格式:REVOKE <权限>[,<权限>]… ON <对
象名> [, <对象名>] … FROM <用户>[,<用户>]… [ CASCADE ] ;【例8.9】收回用户USE
R1对Customer(客户信息)表的查询权限。REVOKE SELECT ON Customer FROM USER1;【
例8.10】收回全部用户对Orders(订单)表的插入权限。REVOKE INSERT ON OrdersFROM PUBL
IC;【例8.11】收回用户USER1对Customer(客户信息)表的INSERT权限REVOKE INSERT ON Cu
stomer FROM USER1CASCADE ;系统将收回直接或间接从USER1处获得的对Customer表的INSERT权
限(例如USER5和USER6对Customer表的INSERT权限)。权限的级联回收8.3.2 强制存取控制(MAC) 方法 自
主存取控制(DAC)能通过授权机制有效地控制用户对敏感数据的存取用户对于不同的对象有不同的存取权限;不同的用户对同一对象的存取权限
也各不相同;用户可将自己拥有的存取权限转授给其他用户。安全性较低用户对数据的存取权限是“自主”的,系统对此无法控制。在这种授权机制
下,仍可能存在数据的“无意泄露”。仅仅通过对数据的存取权限来进行安全控制数据本身并无安全性标记。要解决这一问题,就需要实施强制存取
控制策略8.3.2 强制存取控制(MAC) 方法主体是系统中的活动实体客体是系统中的被动实体对于主体和客体,DBMS为它们每个实例
指派一个敏感度标记(Label)敏感度标记被分成若干级别例如绝密、机密、可信、公开等主体的敏感度标记称为许可证级别(Clearan
ce Level)客体的敏感度标记称为密级(Classification Level)MAC机制就是通过对比主体和客体的Label
,最终确定主体是否能够存取客体仅当主体级别>=客体级别,主体可读取客体仅当主体级别=客体级别,主体可写客体DAC与MAC共同构成D
BMS的安全机制较高安全性级别提供的安全保护要包含较低级别的所有保护8.3.3 基于角色的访问控制(RBAC)模型数据库角色:被命
名的一组与数据库操作相关的权限角色是权限的集合 可以为一组具有相同权限的用户创建一个角色简化授权的过程创建角色CREATE ROL
E语句的语法格式为: CREATE ROLE <角色名> [ AUTHORIZATION owner_na
me ]指定将拥有新角色的数据库用户或角色。如果未指定用户,则执行该CREATE ROLE语句的用户将拥有该角色。【例8.12】创
建SQL Server数据库用户和角色,并利用角色授权。① 创建登录帐户,名为“login_test”,用于连接SQL Serve
r服务器,登录密码:123456,默认连接到的数据库:“SaleProduct”。 CREATE LOGIN login_test
WITH PASSWORD=''123456'', DEFAULT_DATABASE=SaleProduct② 建立
一个数据库用户,名为“USER8”, 用于访问数据库中的对象。并且把登录帐户“login_test”和这个数据库用户映射起来。CR
EATE USER USER8 FOR LOGIN login_test ③ 创建角色,名为“role_test”。CR
EATE ROLE role_test④ 授予角色 role_test 对Customer 表的SELECT权限:GRANT S
ELECT ON Customer TO role_test⑤ 添加USER8为角色role_test 的成员AL
TER ROLE role_test ADD MEMBER USER8⑥ 收回对Customer 表的SELECT权限:R
EVOKE SELECT ON Customer FROM role_test8.4 其它安全控制方法通过视
图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。8.4.1 视图机制【例8.13】 用户US
ER1只能查看北京的客户信息。先建立北京客户信息的视图:CREATE VIEW Beijing_Customer AS
SELECT FROM Customer WHERE custCity = ''北京'';在视图上进一步定义
存取权限:GRANT SELECT ON Beijing_Customer TO USER1; 审计(Audit
)是把用户对数据库的所有操作自动记录下来,放入审计日志中。一旦发生数据被非法存取,DBA可以利用审计跟踪的信息,重现导致数据库现有
状况的一系列事件,找出非法存取数据的人、时间和内容等。C2以上安全级别的DBMS必须具有。8.4.2 审计审计日志一般包括下列内容
: 操作类型(如修改、查询等)。 操作终端标识与操作人员标识。 操作日期和时间。 操作的数据对象(如表、视图、记录、属性等)。 数
据修改前后的值。审计分为用户级审计针对自己创建的数据库表或视图进行审计记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求
以及各种类型的SQL操作系统级审计DBA设置 监测成功或失败的登录要求 监测GRANT和REVOKE操作以及其他数据库级权限下的操
作审计通常比较费时间和空间,所以DBMS往往都将其作为可选特征,允许DBA根据安全性的要求,灵活地打开或关闭审计功能。AUDIT语
句:设置审计功能 NOAUDIT语句:取消审计功能 数据加密是防止数据库中数据在存储和传输中失密的有效手段加密的基本思想是根据一定
的算法将原始数据变换为不可直接识别的格式,从而使得不知道解密算法的人无法获知数据的内容加密方法主要有两种,一种是替换方法,另一种是
置换方法8.4.3 数据加密通常将这两种方法结合起来使用,就可以达到相当高的安全程度。例如美国1977年制定的官方加密标准,数据
加密标准(Data Encryption Standard,简称DES)就是使用这种算法的例子。数据加密后,对于不知道解密算法的人
,即使利用系统安全措施的漏洞非法访问数据,也只能看到一些无法辨认的二进制代码。合法的用户检索数据时,首先提供密码钥匙,由系统进行译
码后,才能得到可识别的数据。较之传统的数据加密技术,数据库加密系统有很多自身的要求和特点。 数据加密和解密操作非常费时,数据加密与
解密程序也会占用大量系统资源,同时可能会对DBMS的管理功能有一定的影响。因此,数据加密功能通常也作为可选特征,允许用户自由选择,
一般只对高度机密的数据加密。允许用户查询聚集类型的信息(如合计、平均值等)不允许查询单个记录信息8.4.4 统计数据库的安全性统
计数据库中可能存在着隐藏的信息通道,使得可以从合法的查询中推导出不合法的信息本公司共有多少女退休人员?本公司女退休人员的平均退休金
是多少?用户A和其他N个高级职员的工资总额是多少?用户B和其他N个高级职员的工资总额是多少?规则1:任何查询至少要涉及N(N足够大
)个以上的记录规则2:任意两个查询的相交数据项不能超过M个规则3:任一用户的查询次数不能超过1+(N-2)/M试图破坏安全的人所花
费的代价 >> 得到的利益数据库安全机制的设计目标8.5 常见数据库管理系统的安全控制8.5.2 SQL Server的安全
控制SQL Server采用4个等级的安全验证机制。 (1) 操作系统安全验证(2) SQL Server安全验证(3) SQL
Server数据库安全性验证(4) SQL Server数据库对象安全验证2. SQL Server的安全认证模式Windows
认证模式Windows与SQL Server混合认证模式3. SQL Server的角色管理在SQL Server中,可以为一组
具有相同权限的用户创建角色,使用角色来管理数据库权限。对角色授权和收回授权时,将对其中的所有成员生效。角色可以嵌套。嵌套的深度没有
限制,但不允许循环嵌套。数据库用户可以同时是多个角色的成员。预定义角色固定服务器角色固定数据库角色 自定义数据库角色 标准角色应用
程序角色 4.SQL Server的数据加密在SQL Server中,可以加密的内容有:SQL Server中存储的登录和应用程序
角色密码,作为网络数据包而在客户端和服务器之间发送的数据,存储过程、用户定义函数、视图、触发器、默认值、规则等对象的定义内容。在S
QL Server 2000和以前的版本,是不支持加密的。SQL Server 2005引入了列级加密,使得加密可以对特定列执行,
这个过程涉及四对加密和解密的内置函数。从SQL Server 2008开始,引入的了透明数据加密(Transparent Data
Encryption,TDE)5.SQL Server的审计SQL Server 2008以上版本都提供审计功能,用以跟踪和记录
和记录SQL Server实例中发生的活动或事件审计数据可以输出到审计文件、Windows安全日志和应用程序日志。SQL Serv
er还提供管理审计记录的接口,即SQL事件探查器。事件探测器跟踪安全审计事件,可以被用来跟踪任何对象访问和登录配置,以及安全事件,
跟踪结果保存在跟踪文件或者数据库表中。只有sysadmin固定安全角色的成员才能启用或修改审计,而且审计的每次修改都是可审计的。8
.5.2 Oracle的安全控制Oracle数据库的安全可以分为系统安全性和数据安全性两类。系统安全性是指在系统级控制数据库的存
取和使用的机制有效的用户名与口令的组合用户是否被授权可连接数据库用户创建数据库对象时可以使用的磁盘空间大小用户的资源限制是否启动了
数据库审计功能用户可进行哪些系统操作数据安全性是指在对象级控制数据库的存取和使用机制,包括用户可存取的模式对象和在该对象上允许进行
的操作等。1.Oracle的用户管理和验证在Oracle中,最外层的安全性措施就是让用户标识自己的名字,然后由系统进行审核。只有正
确的用户标识和口令才能登录到数据库。Oracle提供了三种用户认证方法:数据库口令认证、外部身份认证、全局身份认证。数据库身份认证
:数据库用户口令以加密方式保存在数据库内部,当用户连接数据库时必须输入用户名和口令,通过数据库认证后才可以登录数据库。外部身份认证
:当使用外部身份认证时,用户的账户由Oracle数据库管理,但口令管理和身份验证由外部服务完成。外部服务可以是操作系统或网络服务。
当用户试图建立与数据库的连接时,数据库不会要求用户输入用户名和口令,而从外部服务中获取当前用户的登录信息。使用操作系统进行验证的优
点是,用户更快更方便地连接数据库,对用户验证进行集中控制。全局身份认证:当用户试图建立与数据库连接时,Oracle使用网络中的安全
管理服务器(OracleEnterprise Security Manager)对用户进行身份认证。Oracle的安全管理服务器可以提供全局范围内管理数据库用户的功能。在Oracle数据库中, 将用户分为一般用户、最终用户、管理员(DBA)、应用程序员和应用程序管理员。DBA应该充分利用角色机制对各类用户实行相关的权限管理。2.Oracle的存取控制(1)权限(2)角色(3)概要文件(4)细粒度访问3.Oracle的审计Oracle数据库系统提供审计功能,用于监视和记录用户的活动情况。审计分为用户级审计和系统级审计。Oracle提供了AUDIT语句设置审计功能,NOAUDIT语句取消审计功能。设置审计时,可以详细指定对哪些SQL操作进行审计。 Oracle支持三种类型的审计:语句审计权限审计对象审计Oracle 9i以上版本支持细粒度审计。4.数据加密数据加密包:DBMS_OBFUSCATION_TOOLKIT。可以对数据进行DES、Triple DES或MD5加密。DBMS_CRYPTO包用于数据加密/解密,支持DES、AES等多种加解密算法。7.4 小结实现数据库系统安全性的技术和方法存取控制技术自主存取控制通过SQL 的GRANT语句和REVOKE语句实现强制存取控制视图技术审计技术数据加密
献花(0)
+1
(本文系籽油荃面原创)