2023年8月1日发(作者:)
数据库内部安全审计
一、 背景
在信息系统的整体安全中,数据库往往是最吸引攻击者的目标,许多网络攻击的根本目的就是获取存放在数据库中的重要信息。传统的数据库安全保障方法一定程度上提高了数据库系统的安全性,但是它们大多是被动的安全技术,以预防为主,无法有效地制止入侵行为,特别是对于数据库用户( 如数据库管理员等) 的权限滥用等内部攻击常常是无能为力的。
内部威胁问题具体表现为:
(1)非故意的授权用户攻击,即用户不小心访问到了通常不访问的敏感信息,严重的是无意间将其错误地修改或者删除了;
(2)盗取了正常用户信息的攻击者对数据库进行操作,他们拥有合法的访问权限,对数据库数据进行肆意的盗窃和破坏;
(3)心怀不轨的内部工作人员对数据库的恶意攻击。
据统计,数据库安全问题近80%来自数据库系统内部,即数据库系统授权用户没有按照自身授权进行数据操作,而是跨越权限篡改或破坏数据。根据2013年Verizon的数据泄露调查报告:所有数据泄露事件中76%源自授权用户对敏感数据的访问;在47000多件安全事故中,69%的攻击来自于内部人员。京东发生的大型数据泄露事件造成5O亿条公民信息流出,导致用户损失数百万元,罪魁祸首就是内部工作人员。内部原因造成的数据库损失发生率和影响度都远远超过人们的想象。
由于此类安全问题发生在系统集团内部,因此,对数据库的危害极大,并且传统的入侵检测方法和数据库安全规则都不能有效防御这些问题,即使一些防火墙软硬件也无法实时检测内部入侵。因此,针对数据库系统中用户异常行为检测研究就显得尤为重要。
据统计,传统的数据安全模型是上个世纪 70 年代提出的,并且得到较好发展。到目前为止,在数据库上实现的安全策略基本上没有变化,仍旧为访问控制、用户认证、审计和加密存储。安全审计的任务是对用户已经完成的行为,给予回追式的分析,并对该行为的结果给出最终评价。这些安全机制在数据库管理上取得了较好成绩,但是面对高素质攻击人员、多样化攻击手段和复杂的网络环境,这些安全机制将无法实时监测入侵行为,保护数据库与数据的安全。基于异常的入侵检测是入侵检测研究领域中的一个重要课题,并取得了一定的研究成果。但是,这些研究成果主要针对操作系统和计算机网络,针对数据库系统的研究成果则相对较少。
以访问控制为例,虽然访问控制能够保证只有拥有相关权限的用户才可以访问数据,这也是防止数据泄露的第一道屏障,但是访问控制有一定的限制:如果采用严格的机制,访问控制的规则可能表达不够充分,在动态的环境中访问控制的规则可能需要频繁地更新,这些更新会带来管理者的经济成本;而且在紧急的情况下,访问控制机制会影响用户对数据的获取,权限的申请需要时间也影响了事务的效率。所以,通常业务系统都采用相对宽松的访问控制机制。宽松的访问机制的直接表现是用户通常会获得比实际所需更多的权限,这显然为数据库系统中的数据安全埋下了隐患。因此,数据库管理系统的发展需要对传统的权限管理增加辅助的安全分析和评估机制。
二、 现状
数据库安全审计是指按照确定的标准、收集软件执行过程中发生的事件并评估其安全性的行为。根据设置的规则,监控、跟踪用户对数据库的各种操作,分析判断用户行为是否合规,并对违规行为进行告警的过程叫做数据库安全审计。
目前国际上主流的数据库安全审计产品包括以色列Imperva公司的安全审计系统SecureSphere, IBM公司的Guardium数据库安全产品,Application Security Inc 公司的数据库入侵检测产品 AppRadar等。这些数据库安全审计产品的功能都很强大。Application
Security Inc 公司的数据库入侵检测产品 AppRadar,它可针对不同的数据库设计不同的入侵检测系统。Imperva公司是行业内起步较早的公司,一直专精于数据库安全审计,他们的系统采用数据库应用防火墙的思路,串联部署局域网计算机,能够在线阻断数据库的安全威胁,是A1级别的审计系统,但是SecureSphere支持的数据库协议太少,对各种数据库的本地访问支持不足;Guardium公司具有较强的技术实力,被IBM收购之后,品牌影响力也进一步加大,他们的产品使用数据库代理服务器或是在数据库服务器上安装引擎,搭配旁路的监听器,能够实时分析并判断用户操作行为是否合规,但Guardium同一时间只能支持一个审计策略,不够灵活。此外,因为这些系统是按照国外的审计需求设计的,基本上只针对国外的审计需求进行审计,且价格高昂,对大部分国内用户来说,实用性不高。
在国内,根据赛迪顾问2016年5月的行业研究报告,2015年我国的数据库安全审计与防护市场产品结构中,硬件产品占据了76%的市场份额,软件的市场份额仅为18%。但随着IT基础设施的演进,软件服务类数据库安全审计产品市场份额增速将变大,预计2018年将达到41%的市场份额。在这样的发展趋势下,众多大型的安全厂商加入了数据库安全产业(如绿盟、天融信、启明等),并纷纷推出了各自的数据库审计产品。
比如:绿盟的数据库审计系统DAS、安恒信息的明御系列产品、北京国都兴业的慧眼数据库审计系统、深圳昂楷科技的数据库多重审计系统AAS、安华金和的数据库监控与审计系统、北京天融信的网络卫士数据库审计系统TopAudit-DB、北京启明星辰的天明网络安全审计系统等等。其中天融信的TopAudit-DB采用云审计等技术,旁路部署,支持三层关联审计分析;绿盟的DAS通过监视网络上的数据库活动,智能识别SQL类别,实现事后对数据库操作记录进行合规性分析;安恒的明御数据库审计与风险控制系统通过提取Web业务端和数据库端的协议流量,实现了双向审计。但是这些由我国独立研发的数据库安全审计系统大多为C2或B1级,安全等级还不够高。
目前国内外数据库安全审计方面的研究主要集中在如下几个领域。
1、审计数据源
获取审计数据源是进行其他操作的前提,目前阶段,审计数据源的获取途径包括数据库安全日志以及审计记录。
但是,现阶段各种不同的数据库之间没有通用的、统一的审计接口。而是每一种数据库都提供了可配置的审计模块。管理员或用户依据自身需要使用模块提供的规则进行安全配制。数据库将以日志形式自动记录数据库用户的全部数据操作,给接下来对该用户的操作分析提供基础。同时日志文件也为数据库恢复与重建提供必要依据。
2、保护审计数据
要想能够检测出入侵行为,首先必须保证审计数据自身的安全性和正确性。
审计数据直接反映了数据库用户的直接行为,只有审计数据的正确和准确,才能如实的反映用户的行为。在此基础上所做的行为入侵检测才是有效的、才是有意义的。目前比较常见的数据库审计数据安全方法主要使用数据加密方式或是哈希保护等方法。
3、基于数据挖掘的行为预处理
面对海量数据,如何从其中快速、准确的找出有用的数据,这是数据挖掘技术的主要研究方向。近些年数据挖掘方法,在数据库安全方面得到了广泛的应用。
数据库进行安全审计时,有可能需要进行海量的数据源审计,如果对这些数据源进行逐一审计,必然拖慢系统速度,导致数据库系统的响应时间大大加长,造成假死现象。因此,需要对所有审计的数据进行预处理,去除无用数据,找出真正有价值的信息。
4、基于专家库安全审计
专家系统是模仿专家的思维方式思考和决策问题的计算机系统,系统以知识库和专家库方式存放大量的领域专家们的知识和经验。
在基于专家系统的数据库安全审计的专家库中,利用格式为“if-then”的语句来表示异常行为的检测规则。(if检测条件;then系统对该入侵行为的对策),对这些规则进行归纳与抽象,建立存储这些规则的专家库来辅助系统进行行为检测。
但是专家系统进行判定的主要依据是存储在知识库中的已经确认的异常行为规则,知识库的大小和质量决定了专家系统的入侵检测能力。专家系统具有非常强的专业性,使该系统不可能移植到该领域以外使用。
5、基于系统状态转移的安全审计
对己知异常行为建立行为状态转换图。匹配待审计的用户行为特征和状态转移图,判断用户当前行为是否安全。状态转移图能够直观的、较详细的描述异常用户行为,实现对用户异常行为的预警或者拦截,减轻数据库受攻击的程度,降低经济损失。
但是,基于状态转移的数据库入侵检测系统存在明显的局限性:无法完全描述每个时刻的状态转换,否则将是一个海量数据检测问题,目前的系统无法实现;状态转移只能判断行为的目的是否为已知异常,对于新的异常无法识别。
6、采用神经网络技术和免疫技术的安全审计
神经网络技术是通过对大脑的神经元进行建模和联接,建立起模拟大脑神经系统功能的数学模型,并研究出具有自主学习、记忆和信息识别等智能信息处理功能的人工系统。
数据库安全审计主要是利用神经网络技术,参考所有正常和正确数据库使用行为,建立起一个具有学习能力的用户行为集合。并利用集合中的正常行为与可疑行为进行比对,判断行为的异常与否。
免疫原理是模拟生物的免疫系统功能,对外来细胞和自身变异细胞进行清除的原理,建议系统数学模型。 数据库安全审计主要利用免疫数据模型建立行为检测模块,检测已知和未知的异常行为。
三、 三大模块
数据库安全审计根据检测方法的不同,分为两大类,一类是基于规则的检测方法;另一类是异常检测方法,也叫基于用户行为的检测方法。异常检测方法较之前者虽然误报率较高,但是具有能检测出未知攻击方式的优势。异常检测系统报给系统管理员的警报可能数量很大,管理员需要在最短的时间内了解这些警报的严重程度,以便迅速做出正确的反应,这就需要系统在完成异常检测的工作后给出异常评估的量化结果,帮助管理员了解警报并做出决策。
面向数据库访问的用户行为异常检测与评估系统的需求包括以下三点:
(1)用户行为表示:提取审计记录中的信息,使用一组特征表示出用户的操作行为;
(2)用户行为异常检测:能够识别与用户行为习惯不相符的操作,并对管理员发出告警信息;对于误报的操作行为,管理员给出反馈信息,能够在之后的行为检测中得到体现;
(3)用户行为异常评估:按照相应算法,给出每条异常操作危害程度的量化结果。
(一) 用户行为表示
有效的数据库安全日志能提供过去一段时间内详实的系统内部与外部用户数据访问行为,能否通过智能算法提取用户的实时数据特征,并按时间段组织成时间-行为特征数据库,依据这个时间-行为特征数据库结合先进的分类算法构造实时行为分析模型,对入侵检测进行实时预警,并自动给出处理方案。
在用户行为异常检测过程中,用户行为的表示方法主要有三种:基于数据、基于语法和基于环境的方法。其中,基于数据的方法不适于动态变化数据库,纯粹的基于语法的方法对用户行为描绘过于严苛,基于环境的方法则过于宏观。可以考虑不同方法的结合使用,例如,尝试将基于语法的方法与基于环境的方法结合使用。 基于语法 (syntax centric):
进行粗粒度提取时,结果为
进行中等粒度提取时,结果为<
进行细粒度提取时,结果为
<
Ronao等人在2015年扩展了这种方法,加上了查询语句中ORDER BY语句、GROUP BY语句以及JOIN, AND, OR的个数等信息,之后采取主成分分析的方法对特征进行选择。
基于环境(context centric):
基于环境的表示方法使用能够体现用户工作习惯的特征,这些特征一般包括用户名、主机名、时间戳、IP地址和操作命令等,直观地表示什么人(who )在什么时间(when)什么地点(where)做了什么事情(what)。
用户的行为用<用户ID,操作时刻,操作命令,被操作对象名>表示,其中操作命令指insert, delete, update, select四种常规数据库操作。
基于数据(data centric):
根据返回的查询结果集,抽取不同的属性值来表示用户的行为。
对于数值型的属性,提取返回结果的<最小值,最大值,中值,平均值,标准差>;
对于非数值型的属性,提取返回结果的<值的总数,不同值的个数>。
虽然基于数据的方法准确率较之前两种高一些,但是选取返回结果的最小值、最大值、中值、平均值和标准差之类的特征来表示用户行为,并不能适用于动态变化的数据库,因为即使数据库中添加或删除少量数据,用户查询的返回结果集都可能发生很大变化,最小值、最大值、中值、平均值和标准差等都会随之波动,那么在此基础上进行的行为检测准确率会大幅降低。
而基于语法和基于环境的用户行为表示方法侧重点不同,基于语法的方法是从SQL语句角度出发,通过用户访问的数据表、属性等特征描述用户行为,基于环境的方法则是从用户的工作习惯出发,通过时间、IP地址等特征来刻画用户行为。将后两种方法结合使用可以更加全面地描述用户行为。
(二) 异常检测算法类型
1、专家系统
就当前技术而言,专家系统是误用检测方案中较为有效的技术手段。该系统以领域专家给出的专家法则和用户给出的建议为基础,生成具有“if-then”结构的专家法则,并结合数据库技术,网络技术、分布式操作系统技术等形成专家系统。这种技术通过“if 检测条件,then 系统后续动作”的判别方法对实时检测的用户行为进行分类,提供入侵预警与处理办法。专家系统构建的根本问题就是专家知识库的建立与完备。 2、人工免疫技术
生物的免疫系统,通过对生物体内的细胞是生物“自身细胞”还是“入侵细胞”进行判别,通过大脑指挥相应的白细胞消灭“入侵细胞”,从而保证生物机体健康。受这种生物免疫系统模型的启发,人工免疫技术仿照生物免疫系统以此来发现非法用户网络行为。
基于免疫系统的入侵检测系统依据免疫机理,结合领域专家意见,定义正常的行为法则,以此来识别攻击行为预警和处理。入侵检测系统通过与人工免疫系统的融合,在 IDS 系统中得到了广泛的应用。基于人工免疫的入侵检测系统具有较好的鲁棒性、自学习和自适应性。其关键问题在于采用何种技术和手段来定义和区分“自己”和“非己”。
3、传统机器学习
目前比较常用的传统机器学习技术为:
(1) 分类分析
Kamra等人的工作是分类分析方法的巧妙应用,他们从角色出发建立用户行为模式库,对于拥有角色控制的RBAC数据库,将用户行为检测问题看成经典的分类问题,根据事先训练好的朴素贝叶斯分类器,对用户的操作进行分类,如果分类得到用户所属的角色与本身用户的角色不相符,则认为用户操作属于异常行为,这种方法漏报率较低,但是误报率接近20% 。Sallam等人的工作则分别使用了二分类和朴素贝叶斯分类两种方法,检测准确率较高,但是误报率仍然不低于20%。
贝叶斯方法(Bayes) 是受到条件概率论的启发而形成的。该方法的主要思路是依据某事件发生的先验概率和后验概率,并以此为依据来对的用户行为是否合法进行判定。
其中的先验概率是由该领域的专家和与安全相关的人员依据用户的正常操作和行为给出的,随后通过先验概率假定判别是否产生了非法行为,再结合先验概率和实时检测的用户行为特征,得到该事件发生的后验概率数值,然后进一步形成数学模型,并最终得到该行为是否为入侵行为的判断结果。该技术的难点主要在于如何提高先验概率的准确性。
(2) 关联分析
部分研究工作采用关联分析的方法对用户行为进行建模。Hu等人通过挖掘频繁项集完成模式库的构建,刘玉葆等人则是引入访问模式的概念,基于己有的FP-tree结构,改进FP-Growth算法,提出了一种最大访问模式挖掘算法MMAP (Mining Maximal Access
Profiles),利用从数据库审计数据中挖掘的最大访问模式来检测数据库系统的异常行为。两份研究工作中检测的准确率都不低于85%,但是部分情况下漏报率有14% 。
李银钊等人构建了一种基于自适应模型数据库入侵检测方法,该方法是基于矩阵和最小支持度函数的Apriori关联算法,在训练和自适应入侵检测阶段产生数据库的操作特征,用户根据实际需求动态调整最小支持度函数的值,更高效地挖掘操作特征。
(3) 异常检测算法
异常检测算法是受高斯性原理启发,并结合独立假设条件所形成的一种分析技术。该技术提取用户或者系统正常行为中的大量参数,通过特征选择原理与选择手段,生成正常行为特征模板与相应的特征提取算法,以此模板和提取算法为基础监测正常用户行为生成正常用户行为数据库。
特征选择是通过大量用户正常行为记录的概率分布、方差、频度、均值和偏差等手段表示主体特征选择方法。而相似度计算,则是采用模式识别中相似度的计算方法,将检测到的用户行为与正常行为库的记录进行相似计算。若计算结果显示用户行为与正常行为的相差较远,超过了系统设定的允许特征值,则判定该行为是入侵行为。
(4) 聚类分析
聚类分析的方法也得到了应用,对于没有角色控制的数据库管理系统,他们首先使用k-centers和k-means的方法对所有的审计数据进行聚类分析,聚类结果中包含用户审计数据最多的类别就是该用户所属的类别,从而建立起用户与聚类群组的映射,之后的检测工作可以按照拥有角色控制的数据库一样,视为分类问题,也可以使用离群点检测方法进行异常检测。
(5) 多模型综合分析
进行用户行为模式构建和检测时,不同的数据挖掘方法适用场景不同,其效果也与问题规模息息相关;但当前众多关于用户行为异常检测的研究中,普遍存在误报率较高的问题,需要探讨能够进一步提升检测率、降低误报率的方法,例如,结合使用多种不同的数据挖掘方法,或者引入反馈机制。
Mathew等人的工作就是在提出“data-centric”的方法之后,使用多种机器学习的算法进行训练和检测,与Kamra等人类似,他们从用户角色出发,分别使用朴素贝叶斯、决策树、支持向量机、聚类四种算法进行行为模式建模和异常检测。
Sallam等人在2016年的工作中结合使用了NBC分类方法和COBWEB聚类方法。
陈炜利用基于聚类分析与关联规则挖掘的数据库异常检测技术,对数据库操作行为和数据操作进行审计分析,建立用户正常的行为模式,并通过编写异常检测算法来检测用户的异常行为。
4、深度学习技术
将神经网络、专家系统和统计方法有效融合,实现从数据处理、特征提取,入侵识别的全面创新。在数据处理阶段使用统计学方法,通过 ICA 算法实现用户行为特征的独立性分析;在特征提取阶段,通过 BP 神经网络方法,实现用户行为特征分析与提取;在识别过程中使用了基于专家系统的推理技术。上述方法的融合有效的解决了入侵检测系统的误报警率高,识别率低,自适应能力差的缺欠。
5、其他
Rao等人引入属性的权重,对数据库的读写操作进行规则挖掘,但是检测率并不高。Costante等人2016年的研究工作中,延续了他们之前的思路,通过统计用户行为的特征值和规则匹配,实现用户行为异常检测的目的,这种方法比较直观,生成的模式文件可解释强。
2017年,Guevara等人在系统用户行为分析的工作中使用了马尔科夫链的方法,通过分析用户执行的操作序列,构建出用户的行为模式。为了构造有效的行为模式,这种方法需要三个月或者更长时间的用户操作记录作为训练集。
Ronao等人是在综合考察了几种算法之后采用了随机森林的方法进行异常检测。
此外,有研究工作是从数据库事务或者会话的角度进行异常检测,Fonseca等人提出使用一种通用型的算法来学习能够表示事务“活动简档”的图,事务是由用户通过应用程序向数据库提交完成的。该算法中,一个事务是由一个有向图来表示,有向图描绘了从事务的开始到最后提交或者回滚操作的不同执行路径(select, insert, update, delete的序列),图中的节点代表操作命令,边代表相应的执行序列。值得注意的是,这里的操作命令不是简单的select, insert, update或者delete,而是经过处理过的SQL语句,如语句select
name, address, phone from customer where name= 'John Carter’中where子句中name字段经常变化,可以将原句处理成:操作命令(select)、操作对象(table customer),被选择的列(name, address, phone)、约束字段(name);
Fadolalkarim等人则从操作系统的层面分析数据库中的用户行为,包括数据打印、发邮件、数据存储等操作,但这种方法分析和刻画用户行为比较宏观,不同用户行为之间区分度不大。
(三) 异常评估算法类型
用户行为异常评估的技术尚不够成熟,方法比较单一,目前主流的数据泄露评估的方法为M-Score方法,但是该方法需要数据库专家事先定义详细的敏感值函数,且考虑的影响因子还不够全面,需要考虑数据对象之间的关联关系、推理关系,研究更科学的数据模型的构建方法。
2015年,Vavilis等人提出了针对数据库系统的异常分析框架。在具体的异常评估方法研究中,Costante等人提出使用待检测操作出现的概率来评估行为的异常程度,用操作出现概率的倒数来量化异常值。多数与用户行为异常评估有关的研究工作集中在数据泄露的量化计算上。Bertino等人提出了针对数据库的数据泄露检测框架,但这个框架基本类似于用户行为异常检测机制。Harel等人在2010年提出了一种称为M-Score的数据隐私匿名发布方法,并在2012年对该方法进行了扩展。
M-Score方法可应用于数据库与用户的交互场景,可以分析数据库返回给用户的数据集,即用户提交查询请求之后数据库返回的数据,着眼于暴露给用户的数据的敏感性。具体地说,M-Score方法将属性分为准标识符属性(例如姓名、工作、城市、性别)和敏感属性(例如用户类别、月薪、合同截止日期),敏感值函数表明每个敏感属性中每个可能取值的敏感度。计算M-Score值时,考虑三个因素:数据质量(即数据的重要程度)、数据数量(暴露给用户的数据量)和区分因子(即数据的独特程度)。一方面,该方法需要明确地定义每个敏感属性各个可能取值的敏感值,这显然需要花费数据库相关专家大量的时间精力,也容易出现错误;另一方面,M-Score方法在计算每条记录和整张表格的敏感值时的限制不合理,导致计算的M-Score值并不能较好地区分数据泄露的程度。所以,他们提出了对M-Score的相应的改进:(1)取消计算每条记录和表格敏感值的限制;(2)提出一个数据模型来表示某一特定领域的知识和敏感度。数据模型的应用可以减少很多定义敏感值函数的工作,但是取消计算每条记录和表格敏感值的限制在系统中的有效性可能因不同的数据库环境而不同。
Islam等人在2015年提出了“sensitivity score”的方法,概念上基本类似于M-Score该方法在计算敏感度时分为三种粒度:关系表层次、属性列层次和单元数据层次。无论使用哪种粒度上的计算方法,每一个单元数据都有其对应的敏感度:在关系表层面上时,同一表中每个属性列拥有相同的敏感度;而在属性列层面上时,同一列中每个单元数据的敏感度相同。计算一条记录的敏感值时,提出了“放大因子”的概念,它是一个映射函数,反映不同属性列之间相关联的敏感程度,例如三个属性列(姓名、地址、出生日期)的放大因子明显大于1,因为单一的姓名、地址或者出生日期也许都不能够唯一标识一个人,但是三个属性上的值都得到的话,基本可以唯一确定一个人,所以放大因子可以保证一个包含不同属性值的记录的敏感值大于各个属性值的简单叠加。但文献中并没有实验证明这种方法比M-Score方法更有效。
四、 数据库审计操作框架及流程
面向数据库访问的用户行为异常检测和评估技术:对数据库用户正常的访问行为记录进行预处理、特征提取,而后构建行为模式;当用户再次访问数据库时,使用异常检测算法,对用户的数据库操作行为进行检测,并针对异常行为可能带来的危害给出评估结果,达到规范数据库用户行为目的,为数据库访问提供安全保护。
要解决的问题有两个:
一是使用有效的特征表示用户的操作行为,以区分异常操作与正常操作;
二是使用合适的数据挖掘与机器学习算法发现用户的日常操作习惯,并对未知的操作进行判别。
此外,在处理这些异常操作时,如果发现某些操作是被允许的,只是之前的历史记录中并没有这样的记录,那么系统应当允许管理员进行信息的反馈,以改进用户的行为模式。
异常检测(Anomaly Detection )的假设是异常于正常主体的活动,也称为基于行为的检测,是一种间接的检测方法。主要思路是建立用户正常活动的“活动简档”,如果当前用户的行为与“活动简档”中体现的规律相违背,则将其判断为异常行为。异常检测的难题在于如何建立“活动简档’以及如何设计检测算法,从而不把正常的操作判定为异常(即误报)或把异常的行为判定为正常(即漏报)。 传统的用户行为异常检测应当能够检测内部攻击。S1ritOS等人提出针对数据库的入侵检测系统应当满足以下要求:
(1)分析用户行为、构建“活动简档’,和检测应当着重在四个方面:用户命令、访问到的数据、处理的数据和执行结果;
(2)入侵检测系统应当能够更新,例如从已被确认的入侵警报或者误报中学到相应的知识,从而提高系统检测的准确率、降低误报率。
面向数据库访问的用户行为异常检测模块中,包括三个子模块:审计数据分析处理模块、行为模式构建/更新模块、用户行为检测模块。
行为模式库构建/更新之前,首先进行审计数据分析与处理,包括预处理、SQL解析等步骤,表示出用户的行为,之后选取合适的方法(规则挖掘或分类器)进行用户行为模式构建,生成行为模式库。用户行为检测的第一个步骤同之前的审计数据处理,第二个步骤则是结合之前生成的行为模式库进行行为检测,行为检测的方法与建模的方法是一一对应的。
(一) 用户行为表示即审计数据分析处理模块
负责对获得的审计数据进行数据清洗、数据规约等预处理操作,还负责使用用户行为表示方法进一步加工审计数据,如从SQL语句中拆分出SQL命令、关系表信息、属性列信息和对时间戳进行处理等,最终得到一组有效的特征表征用户的操作行为。
问题一是对审计数据的分析与处理,即从繁杂的审计数据中提取哪些特征来表示出用户行为,以及如何提取并处理的问题。解决第一个问题,可以采用基于语法和基于环境相结合的用户行为表示方法;
从数据库日志中获取审计数据。数据库审计日志中包含直接体现用户行为的数据。以MySQL数据库为例,MySQL数据库中general-log表格中包含SQL语句、操作时间等诸多关键信息。
general-log的表格中event time是查询语句的执行时间;user host是执行该查询语句的用户名和主机名的组合字符串;thread id是执行该查询该语句的线程号;server id是服务器ID;command type是用户请求的类型,例如connect, query等;argument是用户执行的SQL语句。研究用户的异常行为检测,着眼于查询语句、执行者、执行时间以及执行地点,所以event time ,user host和argument这三个属性很重要。
1、基于语法的用户行为表示方法
原始的SQL语句可以从general log中的argument字段获得。接下来的主要工作是进行SQL解析,提取SQL命令、访问的数据关系表、访问的属性列三种特征,公式化表示为((c,R,A),其中:
①c指SQL命令,如select, insert, update, delete;
②R指用户访问的数据关系表,一般从FROM字句中获得; ③A指用户访问的属性列,约束子句中会包含此类信息。
典型的SQL解析流程:词法分析器的主要作用是按照构词规则进行词汇和单词的分析,语法分析器的作用则是将词法分析器提取出来的单词按照某种给定的形式文法构建数据结构(如语法分析树、抽象语法树等)。进行SQL解析时,首先通过词法分析器从SQL语句中提取各种保留字(SELECT, INSERT, UPDATE, DELETE,WHERE, FROM等)、运算符(加号、减号、大于号、小于号等)和界符(逗号、括号等)等SQL语言元素,将SQL语句转变为一系列单词符号,然后语法分析器根据SQL语言的语法规则进行语法分析,并构建SQL语法解析树。建议采用开源项目Jsqlparser进行SQL语句的解析。
2、基于环境的用户行为表示方法
基于环境的用户行为表示方法一般包含用户名、时间戳、操作命令等特征,公式化表示为(u,t,c),其中:
①u指用户名;
②t指操作执行的时间;
③c与基于语法的方法中定义相同,指select, insert, update, delete这些数据库操作命令。
操作执行的时间可以从MySQL的general-log中event time字段获得;user host是执行该查询语句的用户名和主机,可以代替用户名标识不同的用户;操作命令同上文的基于语法的方法,不再赘述。
综合以上基于语法和基于环境方法的分析,使用五元组<用户名,SQL命令,访问的数据关系表,访问的属性列,时间戳>表示用户的行为,公式化表示为(u,c,R,A, t),其中:
①u指用户名,用来标识和区分不同的用户,从general-log中user host字段获
得;
②c指SQL命令,如select, insert, update, delete,通过解析SQL语句获得;
③R指用户访问的数据关系表,解析SQL语句可获得,一般包含在FROM字句中;
④A指用户访问的属性列,解析SQL语句可获得,一般约束子句中会包含此类信
息;
⑤t指操作执行的时间,按照时间段划分转换成数字。
语句模板是一个三元组〈OP,F,T〉,其中,OP 是 SQL 语句的语句类型,F 是 SQL语句涉及的属性集,T 是 SQL 语句中的表集合。
(二) 异常检测
负责根据用户历史操作记录构建行为模式库;
用户行为模式构建主要任务是从用户日常的操作记录中挖掘出用户的行为习惯,并使用数据模型表示出来。 根据检测算法判别用户行为是否异常,如果判定结果为异常,向管理员发送警报,管理员对系统报警的异常行为给出反馈信息,根据反馈信息进行行为模式库更新。
用户行为异常检测是建立一个合法用户的正常行为模式,通过比较该合法用户的当前行为和正常行为特征来识别异常行为,即如果该合法用户的当前行为较大幅度地偏离了其历史上的正常行为特征,则认为发生了异常。这种异常可能是该合法用户本身进行了非授权操作,也可能是系统中其他合法用户或外部入侵者( 非法用户) 冒充该合法用户进行了非法操作。
两个重要问题:
1)对用户行为习惯的建模,即用什么样的模型表示出用户的行为模式的问题;
2)对未知用户行为进行检测判别,即在己知用户行为模式的前提下,使用何种检测算法判别用户行为是否异常的问题。
而这两个问题是相辅相成的,有两种思路可以解决:
1)将用户行为异常检测问题视为规则匹配问题,首先建立用户行为规则库R,已知待检测用户行为x, x能否与R中的规则匹配是判别用户行为是否异常的标准;
2)将用户行为异常检测问题视为二分类问题,首先利用历史操作数据构建分类器C,类别K包括正常( Normal)和异常(Abnormal)两类,己知待检测用户行为x,分类器C给出的分类结果若为Normal,则表示用户的行为是正常的,反之为异常的。
1、异常检测
该模型的工作过程为:
首先,利用传统数据库安全机制中的安全日志和主机访问日志,结合现阶段趋于成熟智能算法,尤其是基于遗传算法和粒子群算法的改进神经网络算法,以监督学习方式,提取用户的网络行为和数据库行为特征,生成基于用户网络与数据库行为的用户安全特征库,依据该特征库建立正常用户行为特征数据库。再视实际情况考虑是否和专家系统联合建议异常检测框架,专家系统是根据领域专家的知识与经验建立的知识库,并根据这些知识和经验来判断特定的情况是否为攻击行为,并根据判断结果执行相应操作。
基于用户行为分析与识别的数据库入侵检测系统中的入侵检测算法涉及到的主要参数包括:BP神经网络参数、遗传算法参数和改进粒子群算法参数。BP神经网络参数主要包括神经网络隐含层数,网络每个层次的神经元个数以及训练相关参数;改进粒子群算法主要参数包括种群规模,学习因子和惯性权重等;遗传算法主要参数包括种群大小,交叉率与变异律等。
其次,以网络正常行为数据库为依据,实时检测、收集网络用户行为,并提取网络用户行为的不变性特征,将此特征与网络正常行为数据库记录做比较,判定用户行为的合法性。并可以根据网络用户行为自适应的修改网络正常用户行为数据库,实现同步动态数据库更新和实时入侵检测。。因此该算法具有自适应能力。
该算法成功的关键点是特征选择方法与模式识别的阈值设计。特征选择方法有效的选择特征是模型设计成败的关键,而与模式相匹配的阈值设计是分类预警的核心,阈值过大,预警失去完备性;阈值过小,正常行为被报警,系统失去正确性。
该方法也存在局限性,系统正常行为全面定义不能被实现,无法鉴别非正常行为的入侵性,因而存在较高的误报率,更新起来也比较复杂。
2、误用检测
与异常检测方法相反,误用检测学习并建立非正常行为的特征信息库,以此为基础检测并预警无用行为。
以具体研究对象、现有系统的缺欠和领域专家的建议为前提,误用检测系统收集并建立尽量包含所有非正常操作的行为特征信息库;对实时采集的网络行为数据进行特征提取,通过匹配算法计算该特征与特征信息库中已经存在的用户非正常行为特征之间的相似程度,根据该相似程度的数值与系统设定的阀值进行比较,决定用户行为的合法性。
误用检测方法对认定过的入侵行为识别判定率十分的高,同时出现误报的概率很低,对对认定过的入侵行为是一种十分理想的检测方法。但也存在如下缺点:全面给出用户非法行为是不可能的,使算法鲁棒性较差。没有入库的非法用户特征对匹配结果也有巨大影响,漏报率高。同时该系统具有非常强的领域针对性,系统迁移需要重新设计或学习规则数据库。
3、异常检测+误用检测
采取黑白两个数据库的方法有效解决这两种检测方法的缺欠,并通过黑白库加权匹配的方法识别用户行为的合法性,实现系统预警。
黑数据库记录了非法用户行为,白数据库记录了合法用户行为,黑数据库具有自动更新能力,白数据库更新需要用户交互式参与。
系统根据推理法则表,实现用户行为识别与预警,同时对于未知行为,在提供预警的基础上,转交用户确认。并根据确认结果决定是否更新两个数据库。
这样就解决了前两种设计方法的缺欠。
00011011;10,正常;00、11,未知,转由人工处理;01,异常-报警
(三) 异常评估
异常检测系统给出的警报可能有很多,在最快的时间内处理好最严重的警报是对数据库管理员的要求,这就需要系统能够对异常行为可能带来的危害做量化评估。用户行为异常评估问题,简单来说,即己知一个异常的数据库操作,量化计算这个异常操作对数据安全造成的危害的问题。评估的是对数据安全造成的影响,那么最直接的切入点就是异常操作访问到的数据。
数据库访问操作包括select, delete,update和insert四种操作,其中select操作是对数据库进行查询,数据库会给予用户查询的返回结果集,这个返回结果集就是用户通过这个异常查询操作接触到的数据,返回结果集暴露出的敏感程度即数据库泄露的危害程度;而除了select操作以外的三种操作,数据库并不会给予返回结果集,同时,与查询操作不同的是:delete, update和insert这三种异常操作一旦发生,会改变数据库中的数据,对数据库数据造成破坏和损毁,一般这种破坏是不可逆的,所以可以考虑从操作的发生概率上侧面体现危害程度。
因此,面向数据库访问的用户行为异常评估模块中,包括三个子模块:数据模型构建模块、数据泄露危害度量模块和数据篡改、损毁危害度量模块。
1、数据模型构建模块
首先数据模型构建模块根据数据库专家的经验知识构建能够计算数据库中数据敏感值的数据模型,包括继承关系数据模型和关联关系数据模型;之后根据操作的类型,选择评估的方法进行异常评估。
对数据泄露的危害度量通过计算返回结果集的敏感程度来体现。而返回结果集中单元数据的敏感值初始时并不可知,即使有数据库专家的参与,让数据库专家定义数据库中所有单元数据敏感值的工作量也太大了,所以需要使用数据模型,根据数据库专家的经验知识建立数据模型,由数据模型获得每个单元数据的敏感值,最后计算整个返回结果集的敏感值。
1)继承关系数据模型
继承关系数据模型(Inheritance Relational Data Model)描绘的是不同层次的数据之间的继承关系,由以下五个元素构成:数据表、属性列、单元数据、层次关系、初始标记函数,用符号表示为:IDM=(T, A, C, HR, IL)
其中,T是数据表的集合;A是属性列的集合;C是单元数据的集合:HR,表示不同层次数据对象之间的继承关系;IL是初始标记函数,定义数据表、属性列和单元数据的敏感值。
2)关联关系数据模型
数据对象与数据对象之间的关联关系有两种,一种是推理关系,另一种则是组合关系。
推理关系,顾名思义,即两个数据对象之间从一个数据对象能够推理得知另外一个数据对象的关联关系,这是一种单方向的关联关系。
在数据库访问中,返回结果集中如果包含这样的推理关系,那么攻击者得到的有效信息变少了,所以这种返回结果集的敏感度较之数据对象完全独立的返回结果集敏感值稍低。
除了推理关系(比如属性ID number与属性Address ),还有一种组合关系。如果数据泄露事故发生时,只有二者之一的属性数据被泄露出去,攻击者只能得到单独的Name或者Password值,在没有其他前提条件下,造成的破坏是有限的,但如果二者同时被泄露了,那么用户账户就失守了,这种数据泄露的危害显然远远大于单独泄露某一属性时危害的累加。换言之,不同属性之间的组合可能会将信息的敏感程度放大,本身敏感程度较低的属性组合之后可能大大提高辨识能力或者加剧数据泄露的危害,因而属性之间的组合关系也是衡量数据泄露程度的重要因素。两个数据对象之间的组合关系是一种双向的关联关系。
关联关系数据模型(Association Relational Data Model)描绘的是不同数据对象之间的推理关系与组合关系,数据对象是指数据表、属性列、单元数据等不同层次的数据形式。
综合以上分析,关联关系数据模型由数据对象、推理关系、组合关系、推理关系标记函数和组合关系标记函数五个部分组成,公式化表示为:ADM--- 。
其中,I指数据对象,包括数据表、属性列、单元数据等不同层次;IR指推理关系;CR指组合关系;IRL指推理关系标记函数,给出部分推理关系的概率值;CRL指组合关系标记函数,给出部分组合关系的敏感值放大倍数。
思路是:首先计算每个单元数据对最终结果的贡献值,最后将各个单元数据的贡献值累加。这个贡献值通过影响因子与此单元数据本身的敏感值相乘得到,而影响因子由组合关系中的最大放大倍数与推理关系中的最大概率相减得到,特殊情况下,当一个单元数据,与其他单元数据既不存在特殊的组合关系,也不存在特殊的推理关系,那么影响因子为1-0=1。
2、数据泄露危害度量模块
对于异常的查询操作,选择数据泄露危害度量方法进行异常评估。数据泄露危害度量模块负责利用构造的数据模型,根据返回结果集的数据敏感程度、数据数量和数据的独特程度,评估数据泄露的危害。
3、数据篡改、损毁危害度量模块
对于非查询异常操作,选择数据篡改、损毁危害度量方法。数据篡改、损毁危害度量负责对没有返回结果集的异常操作,计算操作执行的概率,评估数据篡改、损毁程度。
对于数据篡改和损毁的评估,因为没有具体的返回结果集可以利用,通过计算用户操作的概率来衡量异常程度。
步骤一,己知异常操作Q,首先计算用户提交的操作中每个特征发生的概率:用户历史安全操作记录中某特征出现的次数/该用户历史安全记录中所有审计记录的条数;
步骤二,将各个特征发生概率倒数相乘即为用户操作的异常程度;
假设检测到用户A的一条异常update, insert或delete操作,记为w,.对w进行审计数据分析与处理之后,使用元组(uw,cw,Rw,Aw,tw)来表示此条异常操作。uw即为用户A,
cw、 Rw、Aw、 tw分别对应着特征操作命令、操作表格、操作属性列和操作时间。用户A的历史安全数据中共有N条记录。对该条异常操作进行异常评估。
2023年8月1日发(作者:)
数据库内部安全审计
一、 背景
在信息系统的整体安全中,数据库往往是最吸引攻击者的目标,许多网络攻击的根本目的就是获取存放在数据库中的重要信息。传统的数据库安全保障方法一定程度上提高了数据库系统的安全性,但是它们大多是被动的安全技术,以预防为主,无法有效地制止入侵行为,特别是对于数据库用户( 如数据库管理员等) 的权限滥用等内部攻击常常是无能为力的。
内部威胁问题具体表现为:
(1)非故意的授权用户攻击,即用户不小心访问到了通常不访问的敏感信息,严重的是无意间将其错误地修改或者删除了;
(2)盗取了正常用户信息的攻击者对数据库进行操作,他们拥有合法的访问权限,对数据库数据进行肆意的盗窃和破坏;
(3)心怀不轨的内部工作人员对数据库的恶意攻击。
据统计,数据库安全问题近80%来自数据库系统内部,即数据库系统授权用户没有按照自身授权进行数据操作,而是跨越权限篡改或破坏数据。根据2013年Verizon的数据泄露调查报告:所有数据泄露事件中76%源自授权用户对敏感数据的访问;在47000多件安全事故中,69%的攻击来自于内部人员。京东发生的大型数据泄露事件造成5O亿条公民信息流出,导致用户损失数百万元,罪魁祸首就是内部工作人员。内部原因造成的数据库损失发生率和影响度都远远超过人们的想象。
由于此类安全问题发生在系统集团内部,因此,对数据库的危害极大,并且传统的入侵检测方法和数据库安全规则都不能有效防御这些问题,即使一些防火墙软硬件也无法实时检测内部入侵。因此,针对数据库系统中用户异常行为检测研究就显得尤为重要。
据统计,传统的数据安全模型是上个世纪 70 年代提出的,并且得到较好发展。到目前为止,在数据库上实现的安全策略基本上没有变化,仍旧为访问控制、用户认证、审计和加密存储。安全审计的任务是对用户已经完成的行为,给予回追式的分析,并对该行为的结果给出最终评价。这些安全机制在数据库管理上取得了较好成绩,但是面对高素质攻击人员、多样化攻击手段和复杂的网络环境,这些安全机制将无法实时监测入侵行为,保护数据库与数据的安全。基于异常的入侵检测是入侵检测研究领域中的一个重要课题,并取得了一定的研究成果。但是,这些研究成果主要针对操作系统和计算机网络,针对数据库系统的研究成果则相对较少。
以访问控制为例,虽然访问控制能够保证只有拥有相关权限的用户才可以访问数据,这也是防止数据泄露的第一道屏障,但是访问控制有一定的限制:如果采用严格的机制,访问控制的规则可能表达不够充分,在动态的环境中访问控制的规则可能需要频繁地更新,这些更新会带来管理者的经济成本;而且在紧急的情况下,访问控制机制会影响用户对数据的获取,权限的申请需要时间也影响了事务的效率。所以,通常业务系统都采用相对宽松的访问控制机制。宽松的访问机制的直接表现是用户通常会获得比实际所需更多的权限,这显然为数据库系统中的数据安全埋下了隐患。因此,数据库管理系统的发展需要对传统的权限管理增加辅助的安全分析和评估机制。
二、 现状
数据库安全审计是指按照确定的标准、收集软件执行过程中发生的事件并评估其安全性的行为。根据设置的规则,监控、跟踪用户对数据库的各种操作,分析判断用户行为是否合规,并对违规行为进行告警的过程叫做数据库安全审计。
目前国际上主流的数据库安全审计产品包括以色列Imperva公司的安全审计系统SecureSphere, IBM公司的Guardium数据库安全产品,Application Security Inc 公司的数据库入侵检测产品 AppRadar等。这些数据库安全审计产品的功能都很强大。Application
Security Inc 公司的数据库入侵检测产品 AppRadar,它可针对不同的数据库设计不同的入侵检测系统。Imperva公司是行业内起步较早的公司,一直专精于数据库安全审计,他们的系统采用数据库应用防火墙的思路,串联部署局域网计算机,能够在线阻断数据库的安全威胁,是A1级别的审计系统,但是SecureSphere支持的数据库协议太少,对各种数据库的本地访问支持不足;Guardium公司具有较强的技术实力,被IBM收购之后,品牌影响力也进一步加大,他们的产品使用数据库代理服务器或是在数据库服务器上安装引擎,搭配旁路的监听器,能够实时分析并判断用户操作行为是否合规,但Guardium同一时间只能支持一个审计策略,不够灵活。此外,因为这些系统是按照国外的审计需求设计的,基本上只针对国外的审计需求进行审计,且价格高昂,对大部分国内用户来说,实用性不高。
在国内,根据赛迪顾问2016年5月的行业研究报告,2015年我国的数据库安全审计与防护市场产品结构中,硬件产品占据了76%的市场份额,软件的市场份额仅为18%。但随着IT基础设施的演进,软件服务类数据库安全审计产品市场份额增速将变大,预计2018年将达到41%的市场份额。在这样的发展趋势下,众多大型的安全厂商加入了数据库安全产业(如绿盟、天融信、启明等),并纷纷推出了各自的数据库审计产品。
比如:绿盟的数据库审计系统DAS、安恒信息的明御系列产品、北京国都兴业的慧眼数据库审计系统、深圳昂楷科技的数据库多重审计系统AAS、安华金和的数据库监控与审计系统、北京天融信的网络卫士数据库审计系统TopAudit-DB、北京启明星辰的天明网络安全审计系统等等。其中天融信的TopAudit-DB采用云审计等技术,旁路部署,支持三层关联审计分析;绿盟的DAS通过监视网络上的数据库活动,智能识别SQL类别,实现事后对数据库操作记录进行合规性分析;安恒的明御数据库审计与风险控制系统通过提取Web业务端和数据库端的协议流量,实现了双向审计。但是这些由我国独立研发的数据库安全审计系统大多为C2或B1级,安全等级还不够高。
目前国内外数据库安全审计方面的研究主要集中在如下几个领域。
1、审计数据源
获取审计数据源是进行其他操作的前提,目前阶段,审计数据源的获取途径包括数据库安全日志以及审计记录。
但是,现阶段各种不同的数据库之间没有通用的、统一的审计接口。而是每一种数据库都提供了可配置的审计模块。管理员或用户依据自身需要使用模块提供的规则进行安全配制。数据库将以日志形式自动记录数据库用户的全部数据操作,给接下来对该用户的操作分析提供基础。同时日志文件也为数据库恢复与重建提供必要依据。
2、保护审计数据
要想能够检测出入侵行为,首先必须保证审计数据自身的安全性和正确性。
审计数据直接反映了数据库用户的直接行为,只有审计数据的正确和准确,才能如实的反映用户的行为。在此基础上所做的行为入侵检测才是有效的、才是有意义的。目前比较常见的数据库审计数据安全方法主要使用数据加密方式或是哈希保护等方法。
3、基于数据挖掘的行为预处理
面对海量数据,如何从其中快速、准确的找出有用的数据,这是数据挖掘技术的主要研究方向。近些年数据挖掘方法,在数据库安全方面得到了广泛的应用。
数据库进行安全审计时,有可能需要进行海量的数据源审计,如果对这些数据源进行逐一审计,必然拖慢系统速度,导致数据库系统的响应时间大大加长,造成假死现象。因此,需要对所有审计的数据进行预处理,去除无用数据,找出真正有价值的信息。
4、基于专家库安全审计
专家系统是模仿专家的思维方式思考和决策问题的计算机系统,系统以知识库和专家库方式存放大量的领域专家们的知识和经验。
在基于专家系统的数据库安全审计的专家库中,利用格式为“if-then”的语句来表示异常行为的检测规则。(if检测条件;then系统对该入侵行为的对策),对这些规则进行归纳与抽象,建立存储这些规则的专家库来辅助系统进行行为检测。
但是专家系统进行判定的主要依据是存储在知识库中的已经确认的异常行为规则,知识库的大小和质量决定了专家系统的入侵检测能力。专家系统具有非常强的专业性,使该系统不可能移植到该领域以外使用。
5、基于系统状态转移的安全审计
对己知异常行为建立行为状态转换图。匹配待审计的用户行为特征和状态转移图,判断用户当前行为是否安全。状态转移图能够直观的、较详细的描述异常用户行为,实现对用户异常行为的预警或者拦截,减轻数据库受攻击的程度,降低经济损失。
但是,基于状态转移的数据库入侵检测系统存在明显的局限性:无法完全描述每个时刻的状态转换,否则将是一个海量数据检测问题,目前的系统无法实现;状态转移只能判断行为的目的是否为已知异常,对于新的异常无法识别。
6、采用神经网络技术和免疫技术的安全审计
神经网络技术是通过对大脑的神经元进行建模和联接,建立起模拟大脑神经系统功能的数学模型,并研究出具有自主学习、记忆和信息识别等智能信息处理功能的人工系统。
数据库安全审计主要是利用神经网络技术,参考所有正常和正确数据库使用行为,建立起一个具有学习能力的用户行为集合。并利用集合中的正常行为与可疑行为进行比对,判断行为的异常与否。
免疫原理是模拟生物的免疫系统功能,对外来细胞和自身变异细胞进行清除的原理,建议系统数学模型。 数据库安全审计主要利用免疫数据模型建立行为检测模块,检测已知和未知的异常行为。
三、 三大模块
数据库安全审计根据检测方法的不同,分为两大类,一类是基于规则的检测方法;另一类是异常检测方法,也叫基于用户行为的检测方法。异常检测方法较之前者虽然误报率较高,但是具有能检测出未知攻击方式的优势。异常检测系统报给系统管理员的警报可能数量很大,管理员需要在最短的时间内了解这些警报的严重程度,以便迅速做出正确的反应,这就需要系统在完成异常检测的工作后给出异常评估的量化结果,帮助管理员了解警报并做出决策。
面向数据库访问的用户行为异常检测与评估系统的需求包括以下三点:
(1)用户行为表示:提取审计记录中的信息,使用一组特征表示出用户的操作行为;
(2)用户行为异常检测:能够识别与用户行为习惯不相符的操作,并对管理员发出告警信息;对于误报的操作行为,管理员给出反馈信息,能够在之后的行为检测中得到体现;
(3)用户行为异常评估:按照相应算法,给出每条异常操作危害程度的量化结果。
(一) 用户行为表示
有效的数据库安全日志能提供过去一段时间内详实的系统内部与外部用户数据访问行为,能否通过智能算法提取用户的实时数据特征,并按时间段组织成时间-行为特征数据库,依据这个时间-行为特征数据库结合先进的分类算法构造实时行为分析模型,对入侵检测进行实时预警,并自动给出处理方案。
在用户行为异常检测过程中,用户行为的表示方法主要有三种:基于数据、基于语法和基于环境的方法。其中,基于数据的方法不适于动态变化数据库,纯粹的基于语法的方法对用户行为描绘过于严苛,基于环境的方法则过于宏观。可以考虑不同方法的结合使用,例如,尝试将基于语法的方法与基于环境的方法结合使用。 基于语法 (syntax centric):
进行粗粒度提取时,结果为
进行中等粒度提取时,结果为<
进行细粒度提取时,结果为
<
Ronao等人在2015年扩展了这种方法,加上了查询语句中ORDER BY语句、GROUP BY语句以及JOIN, AND, OR的个数等信息,之后采取主成分分析的方法对特征进行选择。
基于环境(context centric):
基于环境的表示方法使用能够体现用户工作习惯的特征,这些特征一般包括用户名、主机名、时间戳、IP地址和操作命令等,直观地表示什么人(who )在什么时间(when)什么地点(where)做了什么事情(what)。
用户的行为用<用户ID,操作时刻,操作命令,被操作对象名>表示,其中操作命令指insert, delete, update, select四种常规数据库操作。
基于数据(data centric):
根据返回的查询结果集,抽取不同的属性值来表示用户的行为。
对于数值型的属性,提取返回结果的<最小值,最大值,中值,平均值,标准差>;
对于非数值型的属性,提取返回结果的<值的总数,不同值的个数>。
虽然基于数据的方法准确率较之前两种高一些,但是选取返回结果的最小值、最大值、中值、平均值和标准差之类的特征来表示用户行为,并不能适用于动态变化的数据库,因为即使数据库中添加或删除少量数据,用户查询的返回结果集都可能发生很大变化,最小值、最大值、中值、平均值和标准差等都会随之波动,那么在此基础上进行的行为检测准确率会大幅降低。
而基于语法和基于环境的用户行为表示方法侧重点不同,基于语法的方法是从SQL语句角度出发,通过用户访问的数据表、属性等特征描述用户行为,基于环境的方法则是从用户的工作习惯出发,通过时间、IP地址等特征来刻画用户行为。将后两种方法结合使用可以更加全面地描述用户行为。
(二) 异常检测算法类型
1、专家系统
就当前技术而言,专家系统是误用检测方案中较为有效的技术手段。该系统以领域专家给出的专家法则和用户给出的建议为基础,生成具有“if-then”结构的专家法则,并结合数据库技术,网络技术、分布式操作系统技术等形成专家系统。这种技术通过“if 检测条件,then 系统后续动作”的判别方法对实时检测的用户行为进行分类,提供入侵预警与处理办法。专家系统构建的根本问题就是专家知识库的建立与完备。 2、人工免疫技术
生物的免疫系统,通过对生物体内的细胞是生物“自身细胞”还是“入侵细胞”进行判别,通过大脑指挥相应的白细胞消灭“入侵细胞”,从而保证生物机体健康。受这种生物免疫系统模型的启发,人工免疫技术仿照生物免疫系统以此来发现非法用户网络行为。
基于免疫系统的入侵检测系统依据免疫机理,结合领域专家意见,定义正常的行为法则,以此来识别攻击行为预警和处理。入侵检测系统通过与人工免疫系统的融合,在 IDS 系统中得到了广泛的应用。基于人工免疫的入侵检测系统具有较好的鲁棒性、自学习和自适应性。其关键问题在于采用何种技术和手段来定义和区分“自己”和“非己”。
3、传统机器学习
目前比较常用的传统机器学习技术为:
(1) 分类分析
Kamra等人的工作是分类分析方法的巧妙应用,他们从角色出发建立用户行为模式库,对于拥有角色控制的RBAC数据库,将用户行为检测问题看成经典的分类问题,根据事先训练好的朴素贝叶斯分类器,对用户的操作进行分类,如果分类得到用户所属的角色与本身用户的角色不相符,则认为用户操作属于异常行为,这种方法漏报率较低,但是误报率接近20% 。Sallam等人的工作则分别使用了二分类和朴素贝叶斯分类两种方法,检测准确率较高,但是误报率仍然不低于20%。
贝叶斯方法(Bayes) 是受到条件概率论的启发而形成的。该方法的主要思路是依据某事件发生的先验概率和后验概率,并以此为依据来对的用户行为是否合法进行判定。
其中的先验概率是由该领域的专家和与安全相关的人员依据用户的正常操作和行为给出的,随后通过先验概率假定判别是否产生了非法行为,再结合先验概率和实时检测的用户行为特征,得到该事件发生的后验概率数值,然后进一步形成数学模型,并最终得到该行为是否为入侵行为的判断结果。该技术的难点主要在于如何提高先验概率的准确性。
(2) 关联分析
部分研究工作采用关联分析的方法对用户行为进行建模。Hu等人通过挖掘频繁项集完成模式库的构建,刘玉葆等人则是引入访问模式的概念,基于己有的FP-tree结构,改进FP-Growth算法,提出了一种最大访问模式挖掘算法MMAP (Mining Maximal Access
Profiles),利用从数据库审计数据中挖掘的最大访问模式来检测数据库系统的异常行为。两份研究工作中检测的准确率都不低于85%,但是部分情况下漏报率有14% 。
李银钊等人构建了一种基于自适应模型数据库入侵检测方法,该方法是基于矩阵和最小支持度函数的Apriori关联算法,在训练和自适应入侵检测阶段产生数据库的操作特征,用户根据实际需求动态调整最小支持度函数的值,更高效地挖掘操作特征。
(3) 异常检测算法
异常检测算法是受高斯性原理启发,并结合独立假设条件所形成的一种分析技术。该技术提取用户或者系统正常行为中的大量参数,通过特征选择原理与选择手段,生成正常行为特征模板与相应的特征提取算法,以此模板和提取算法为基础监测正常用户行为生成正常用户行为数据库。
特征选择是通过大量用户正常行为记录的概率分布、方差、频度、均值和偏差等手段表示主体特征选择方法。而相似度计算,则是采用模式识别中相似度的计算方法,将检测到的用户行为与正常行为库的记录进行相似计算。若计算结果显示用户行为与正常行为的相差较远,超过了系统设定的允许特征值,则判定该行为是入侵行为。
(4) 聚类分析
聚类分析的方法也得到了应用,对于没有角色控制的数据库管理系统,他们首先使用k-centers和k-means的方法对所有的审计数据进行聚类分析,聚类结果中包含用户审计数据最多的类别就是该用户所属的类别,从而建立起用户与聚类群组的映射,之后的检测工作可以按照拥有角色控制的数据库一样,视为分类问题,也可以使用离群点检测方法进行异常检测。
(5) 多模型综合分析
进行用户行为模式构建和检测时,不同的数据挖掘方法适用场景不同,其效果也与问题规模息息相关;但当前众多关于用户行为异常检测的研究中,普遍存在误报率较高的问题,需要探讨能够进一步提升检测率、降低误报率的方法,例如,结合使用多种不同的数据挖掘方法,或者引入反馈机制。
Mathew等人的工作就是在提出“data-centric”的方法之后,使用多种机器学习的算法进行训练和检测,与Kamra等人类似,他们从用户角色出发,分别使用朴素贝叶斯、决策树、支持向量机、聚类四种算法进行行为模式建模和异常检测。
Sallam等人在2016年的工作中结合使用了NBC分类方法和COBWEB聚类方法。
陈炜利用基于聚类分析与关联规则挖掘的数据库异常检测技术,对数据库操作行为和数据操作进行审计分析,建立用户正常的行为模式,并通过编写异常检测算法来检测用户的异常行为。
4、深度学习技术
将神经网络、专家系统和统计方法有效融合,实现从数据处理、特征提取,入侵识别的全面创新。在数据处理阶段使用统计学方法,通过 ICA 算法实现用户行为特征的独立性分析;在特征提取阶段,通过 BP 神经网络方法,实现用户行为特征分析与提取;在识别过程中使用了基于专家系统的推理技术。上述方法的融合有效的解决了入侵检测系统的误报警率高,识别率低,自适应能力差的缺欠。
5、其他
Rao等人引入属性的权重,对数据库的读写操作进行规则挖掘,但是检测率并不高。Costante等人2016年的研究工作中,延续了他们之前的思路,通过统计用户行为的特征值和规则匹配,实现用户行为异常检测的目的,这种方法比较直观,生成的模式文件可解释强。
2017年,Guevara等人在系统用户行为分析的工作中使用了马尔科夫链的方法,通过分析用户执行的操作序列,构建出用户的行为模式。为了构造有效的行为模式,这种方法需要三个月或者更长时间的用户操作记录作为训练集。
Ronao等人是在综合考察了几种算法之后采用了随机森林的方法进行异常检测。
此外,有研究工作是从数据库事务或者会话的角度进行异常检测,Fonseca等人提出使用一种通用型的算法来学习能够表示事务“活动简档”的图,事务是由用户通过应用程序向数据库提交完成的。该算法中,一个事务是由一个有向图来表示,有向图描绘了从事务的开始到最后提交或者回滚操作的不同执行路径(select, insert, update, delete的序列),图中的节点代表操作命令,边代表相应的执行序列。值得注意的是,这里的操作命令不是简单的select, insert, update或者delete,而是经过处理过的SQL语句,如语句select
name, address, phone from customer where name= 'John Carter’中where子句中name字段经常变化,可以将原句处理成:操作命令(select)、操作对象(table customer),被选择的列(name, address, phone)、约束字段(name);
Fadolalkarim等人则从操作系统的层面分析数据库中的用户行为,包括数据打印、发邮件、数据存储等操作,但这种方法分析和刻画用户行为比较宏观,不同用户行为之间区分度不大。
(三) 异常评估算法类型
用户行为异常评估的技术尚不够成熟,方法比较单一,目前主流的数据泄露评估的方法为M-Score方法,但是该方法需要数据库专家事先定义详细的敏感值函数,且考虑的影响因子还不够全面,需要考虑数据对象之间的关联关系、推理关系,研究更科学的数据模型的构建方法。
2015年,Vavilis等人提出了针对数据库系统的异常分析框架。在具体的异常评估方法研究中,Costante等人提出使用待检测操作出现的概率来评估行为的异常程度,用操作出现概率的倒数来量化异常值。多数与用户行为异常评估有关的研究工作集中在数据泄露的量化计算上。Bertino等人提出了针对数据库的数据泄露检测框架,但这个框架基本类似于用户行为异常检测机制。Harel等人在2010年提出了一种称为M-Score的数据隐私匿名发布方法,并在2012年对该方法进行了扩展。
M-Score方法可应用于数据库与用户的交互场景,可以分析数据库返回给用户的数据集,即用户提交查询请求之后数据库返回的数据,着眼于暴露给用户的数据的敏感性。具体地说,M-Score方法将属性分为准标识符属性(例如姓名、工作、城市、性别)和敏感属性(例如用户类别、月薪、合同截止日期),敏感值函数表明每个敏感属性中每个可能取值的敏感度。计算M-Score值时,考虑三个因素:数据质量(即数据的重要程度)、数据数量(暴露给用户的数据量)和区分因子(即数据的独特程度)。一方面,该方法需要明确地定义每个敏感属性各个可能取值的敏感值,这显然需要花费数据库相关专家大量的时间精力,也容易出现错误;另一方面,M-Score方法在计算每条记录和整张表格的敏感值时的限制不合理,导致计算的M-Score值并不能较好地区分数据泄露的程度。所以,他们提出了对M-Score的相应的改进:(1)取消计算每条记录和表格敏感值的限制;(2)提出一个数据模型来表示某一特定领域的知识和敏感度。数据模型的应用可以减少很多定义敏感值函数的工作,但是取消计算每条记录和表格敏感值的限制在系统中的有效性可能因不同的数据库环境而不同。
Islam等人在2015年提出了“sensitivity score”的方法,概念上基本类似于M-Score该方法在计算敏感度时分为三种粒度:关系表层次、属性列层次和单元数据层次。无论使用哪种粒度上的计算方法,每一个单元数据都有其对应的敏感度:在关系表层面上时,同一表中每个属性列拥有相同的敏感度;而在属性列层面上时,同一列中每个单元数据的敏感度相同。计算一条记录的敏感值时,提出了“放大因子”的概念,它是一个映射函数,反映不同属性列之间相关联的敏感程度,例如三个属性列(姓名、地址、出生日期)的放大因子明显大于1,因为单一的姓名、地址或者出生日期也许都不能够唯一标识一个人,但是三个属性上的值都得到的话,基本可以唯一确定一个人,所以放大因子可以保证一个包含不同属性值的记录的敏感值大于各个属性值的简单叠加。但文献中并没有实验证明这种方法比M-Score方法更有效。
四、 数据库审计操作框架及流程
面向数据库访问的用户行为异常检测和评估技术:对数据库用户正常的访问行为记录进行预处理、特征提取,而后构建行为模式;当用户再次访问数据库时,使用异常检测算法,对用户的数据库操作行为进行检测,并针对异常行为可能带来的危害给出评估结果,达到规范数据库用户行为目的,为数据库访问提供安全保护。
要解决的问题有两个:
一是使用有效的特征表示用户的操作行为,以区分异常操作与正常操作;
二是使用合适的数据挖掘与机器学习算法发现用户的日常操作习惯,并对未知的操作进行判别。
此外,在处理这些异常操作时,如果发现某些操作是被允许的,只是之前的历史记录中并没有这样的记录,那么系统应当允许管理员进行信息的反馈,以改进用户的行为模式。
异常检测(Anomaly Detection )的假设是异常于正常主体的活动,也称为基于行为的检测,是一种间接的检测方法。主要思路是建立用户正常活动的“活动简档”,如果当前用户的行为与“活动简档”中体现的规律相违背,则将其判断为异常行为。异常检测的难题在于如何建立“活动简档’以及如何设计检测算法,从而不把正常的操作判定为异常(即误报)或把异常的行为判定为正常(即漏报)。 传统的用户行为异常检测应当能够检测内部攻击。S1ritOS等人提出针对数据库的入侵检测系统应当满足以下要求:
(1)分析用户行为、构建“活动简档’,和检测应当着重在四个方面:用户命令、访问到的数据、处理的数据和执行结果;
(2)入侵检测系统应当能够更新,例如从已被确认的入侵警报或者误报中学到相应的知识,从而提高系统检测的准确率、降低误报率。
面向数据库访问的用户行为异常检测模块中,包括三个子模块:审计数据分析处理模块、行为模式构建/更新模块、用户行为检测模块。
行为模式库构建/更新之前,首先进行审计数据分析与处理,包括预处理、SQL解析等步骤,表示出用户的行为,之后选取合适的方法(规则挖掘或分类器)进行用户行为模式构建,生成行为模式库。用户行为检测的第一个步骤同之前的审计数据处理,第二个步骤则是结合之前生成的行为模式库进行行为检测,行为检测的方法与建模的方法是一一对应的。
(一) 用户行为表示即审计数据分析处理模块
负责对获得的审计数据进行数据清洗、数据规约等预处理操作,还负责使用用户行为表示方法进一步加工审计数据,如从SQL语句中拆分出SQL命令、关系表信息、属性列信息和对时间戳进行处理等,最终得到一组有效的特征表征用户的操作行为。
问题一是对审计数据的分析与处理,即从繁杂的审计数据中提取哪些特征来表示出用户行为,以及如何提取并处理的问题。解决第一个问题,可以采用基于语法和基于环境相结合的用户行为表示方法;
从数据库日志中获取审计数据。数据库审计日志中包含直接体现用户行为的数据。以MySQL数据库为例,MySQL数据库中general-log表格中包含SQL语句、操作时间等诸多关键信息。
general-log的表格中event time是查询语句的执行时间;user host是执行该查询语句的用户名和主机名的组合字符串;thread id是执行该查询该语句的线程号;server id是服务器ID;command type是用户请求的类型,例如connect, query等;argument是用户执行的SQL语句。研究用户的异常行为检测,着眼于查询语句、执行者、执行时间以及执行地点,所以event time ,user host和argument这三个属性很重要。
1、基于语法的用户行为表示方法
原始的SQL语句可以从general log中的argument字段获得。接下来的主要工作是进行SQL解析,提取SQL命令、访问的数据关系表、访问的属性列三种特征,公式化表示为((c,R,A),其中:
①c指SQL命令,如select, insert, update, delete;
②R指用户访问的数据关系表,一般从FROM字句中获得; ③A指用户访问的属性列,约束子句中会包含此类信息。
典型的SQL解析流程:词法分析器的主要作用是按照构词规则进行词汇和单词的分析,语法分析器的作用则是将词法分析器提取出来的单词按照某种给定的形式文法构建数据结构(如语法分析树、抽象语法树等)。进行SQL解析时,首先通过词法分析器从SQL语句中提取各种保留字(SELECT, INSERT, UPDATE, DELETE,WHERE, FROM等)、运算符(加号、减号、大于号、小于号等)和界符(逗号、括号等)等SQL语言元素,将SQL语句转变为一系列单词符号,然后语法分析器根据SQL语言的语法规则进行语法分析,并构建SQL语法解析树。建议采用开源项目Jsqlparser进行SQL语句的解析。
2、基于环境的用户行为表示方法
基于环境的用户行为表示方法一般包含用户名、时间戳、操作命令等特征,公式化表示为(u,t,c),其中:
①u指用户名;
②t指操作执行的时间;
③c与基于语法的方法中定义相同,指select, insert, update, delete这些数据库操作命令。
操作执行的时间可以从MySQL的general-log中event time字段获得;user host是执行该查询语句的用户名和主机,可以代替用户名标识不同的用户;操作命令同上文的基于语法的方法,不再赘述。
综合以上基于语法和基于环境方法的分析,使用五元组<用户名,SQL命令,访问的数据关系表,访问的属性列,时间戳>表示用户的行为,公式化表示为(u,c,R,A, t),其中:
①u指用户名,用来标识和区分不同的用户,从general-log中user host字段获
得;
②c指SQL命令,如select, insert, update, delete,通过解析SQL语句获得;
③R指用户访问的数据关系表,解析SQL语句可获得,一般包含在FROM字句中;
④A指用户访问的属性列,解析SQL语句可获得,一般约束子句中会包含此类信
息;
⑤t指操作执行的时间,按照时间段划分转换成数字。
语句模板是一个三元组〈OP,F,T〉,其中,OP 是 SQL 语句的语句类型,F 是 SQL语句涉及的属性集,T 是 SQL 语句中的表集合。
(二) 异常检测
负责根据用户历史操作记录构建行为模式库;
用户行为模式构建主要任务是从用户日常的操作记录中挖掘出用户的行为习惯,并使用数据模型表示出来。 根据检测算法判别用户行为是否异常,如果判定结果为异常,向管理员发送警报,管理员对系统报警的异常行为给出反馈信息,根据反馈信息进行行为模式库更新。
用户行为异常检测是建立一个合法用户的正常行为模式,通过比较该合法用户的当前行为和正常行为特征来识别异常行为,即如果该合法用户的当前行为较大幅度地偏离了其历史上的正常行为特征,则认为发生了异常。这种异常可能是该合法用户本身进行了非授权操作,也可能是系统中其他合法用户或外部入侵者( 非法用户) 冒充该合法用户进行了非法操作。
两个重要问题:
1)对用户行为习惯的建模,即用什么样的模型表示出用户的行为模式的问题;
2)对未知用户行为进行检测判别,即在己知用户行为模式的前提下,使用何种检测算法判别用户行为是否异常的问题。
而这两个问题是相辅相成的,有两种思路可以解决:
1)将用户行为异常检测问题视为规则匹配问题,首先建立用户行为规则库R,已知待检测用户行为x, x能否与R中的规则匹配是判别用户行为是否异常的标准;
2)将用户行为异常检测问题视为二分类问题,首先利用历史操作数据构建分类器C,类别K包括正常( Normal)和异常(Abnormal)两类,己知待检测用户行为x,分类器C给出的分类结果若为Normal,则表示用户的行为是正常的,反之为异常的。
1、异常检测
该模型的工作过程为:
首先,利用传统数据库安全机制中的安全日志和主机访问日志,结合现阶段趋于成熟智能算法,尤其是基于遗传算法和粒子群算法的改进神经网络算法,以监督学习方式,提取用户的网络行为和数据库行为特征,生成基于用户网络与数据库行为的用户安全特征库,依据该特征库建立正常用户行为特征数据库。再视实际情况考虑是否和专家系统联合建议异常检测框架,专家系统是根据领域专家的知识与经验建立的知识库,并根据这些知识和经验来判断特定的情况是否为攻击行为,并根据判断结果执行相应操作。
基于用户行为分析与识别的数据库入侵检测系统中的入侵检测算法涉及到的主要参数包括:BP神经网络参数、遗传算法参数和改进粒子群算法参数。BP神经网络参数主要包括神经网络隐含层数,网络每个层次的神经元个数以及训练相关参数;改进粒子群算法主要参数包括种群规模,学习因子和惯性权重等;遗传算法主要参数包括种群大小,交叉率与变异律等。
其次,以网络正常行为数据库为依据,实时检测、收集网络用户行为,并提取网络用户行为的不变性特征,将此特征与网络正常行为数据库记录做比较,判定用户行为的合法性。并可以根据网络用户行为自适应的修改网络正常用户行为数据库,实现同步动态数据库更新和实时入侵检测。。因此该算法具有自适应能力。
该算法成功的关键点是特征选择方法与模式识别的阈值设计。特征选择方法有效的选择特征是模型设计成败的关键,而与模式相匹配的阈值设计是分类预警的核心,阈值过大,预警失去完备性;阈值过小,正常行为被报警,系统失去正确性。
该方法也存在局限性,系统正常行为全面定义不能被实现,无法鉴别非正常行为的入侵性,因而存在较高的误报率,更新起来也比较复杂。
2、误用检测
与异常检测方法相反,误用检测学习并建立非正常行为的特征信息库,以此为基础检测并预警无用行为。
以具体研究对象、现有系统的缺欠和领域专家的建议为前提,误用检测系统收集并建立尽量包含所有非正常操作的行为特征信息库;对实时采集的网络行为数据进行特征提取,通过匹配算法计算该特征与特征信息库中已经存在的用户非正常行为特征之间的相似程度,根据该相似程度的数值与系统设定的阀值进行比较,决定用户行为的合法性。
误用检测方法对认定过的入侵行为识别判定率十分的高,同时出现误报的概率很低,对对认定过的入侵行为是一种十分理想的检测方法。但也存在如下缺点:全面给出用户非法行为是不可能的,使算法鲁棒性较差。没有入库的非法用户特征对匹配结果也有巨大影响,漏报率高。同时该系统具有非常强的领域针对性,系统迁移需要重新设计或学习规则数据库。
3、异常检测+误用检测
采取黑白两个数据库的方法有效解决这两种检测方法的缺欠,并通过黑白库加权匹配的方法识别用户行为的合法性,实现系统预警。
黑数据库记录了非法用户行为,白数据库记录了合法用户行为,黑数据库具有自动更新能力,白数据库更新需要用户交互式参与。
系统根据推理法则表,实现用户行为识别与预警,同时对于未知行为,在提供预警的基础上,转交用户确认。并根据确认结果决定是否更新两个数据库。
这样就解决了前两种设计方法的缺欠。
00011011;10,正常;00、11,未知,转由人工处理;01,异常-报警
(三) 异常评估
异常检测系统给出的警报可能有很多,在最快的时间内处理好最严重的警报是对数据库管理员的要求,这就需要系统能够对异常行为可能带来的危害做量化评估。用户行为异常评估问题,简单来说,即己知一个异常的数据库操作,量化计算这个异常操作对数据安全造成的危害的问题。评估的是对数据安全造成的影响,那么最直接的切入点就是异常操作访问到的数据。
数据库访问操作包括select, delete,update和insert四种操作,其中select操作是对数据库进行查询,数据库会给予用户查询的返回结果集,这个返回结果集就是用户通过这个异常查询操作接触到的数据,返回结果集暴露出的敏感程度即数据库泄露的危害程度;而除了select操作以外的三种操作,数据库并不会给予返回结果集,同时,与查询操作不同的是:delete, update和insert这三种异常操作一旦发生,会改变数据库中的数据,对数据库数据造成破坏和损毁,一般这种破坏是不可逆的,所以可以考虑从操作的发生概率上侧面体现危害程度。
因此,面向数据库访问的用户行为异常评估模块中,包括三个子模块:数据模型构建模块、数据泄露危害度量模块和数据篡改、损毁危害度量模块。
1、数据模型构建模块
首先数据模型构建模块根据数据库专家的经验知识构建能够计算数据库中数据敏感值的数据模型,包括继承关系数据模型和关联关系数据模型;之后根据操作的类型,选择评估的方法进行异常评估。
对数据泄露的危害度量通过计算返回结果集的敏感程度来体现。而返回结果集中单元数据的敏感值初始时并不可知,即使有数据库专家的参与,让数据库专家定义数据库中所有单元数据敏感值的工作量也太大了,所以需要使用数据模型,根据数据库专家的经验知识建立数据模型,由数据模型获得每个单元数据的敏感值,最后计算整个返回结果集的敏感值。
1)继承关系数据模型
继承关系数据模型(Inheritance Relational Data Model)描绘的是不同层次的数据之间的继承关系,由以下五个元素构成:数据表、属性列、单元数据、层次关系、初始标记函数,用符号表示为:IDM=(T, A, C, HR, IL)
其中,T是数据表的集合;A是属性列的集合;C是单元数据的集合:HR,表示不同层次数据对象之间的继承关系;IL是初始标记函数,定义数据表、属性列和单元数据的敏感值。
2)关联关系数据模型
数据对象与数据对象之间的关联关系有两种,一种是推理关系,另一种则是组合关系。
推理关系,顾名思义,即两个数据对象之间从一个数据对象能够推理得知另外一个数据对象的关联关系,这是一种单方向的关联关系。
在数据库访问中,返回结果集中如果包含这样的推理关系,那么攻击者得到的有效信息变少了,所以这种返回结果集的敏感度较之数据对象完全独立的返回结果集敏感值稍低。
除了推理关系(比如属性ID number与属性Address ),还有一种组合关系。如果数据泄露事故发生时,只有二者之一的属性数据被泄露出去,攻击者只能得到单独的Name或者Password值,在没有其他前提条件下,造成的破坏是有限的,但如果二者同时被泄露了,那么用户账户就失守了,这种数据泄露的危害显然远远大于单独泄露某一属性时危害的累加。换言之,不同属性之间的组合可能会将信息的敏感程度放大,本身敏感程度较低的属性组合之后可能大大提高辨识能力或者加剧数据泄露的危害,因而属性之间的组合关系也是衡量数据泄露程度的重要因素。两个数据对象之间的组合关系是一种双向的关联关系。
关联关系数据模型(Association Relational Data Model)描绘的是不同数据对象之间的推理关系与组合关系,数据对象是指数据表、属性列、单元数据等不同层次的数据形式。
综合以上分析,关联关系数据模型由数据对象、推理关系、组合关系、推理关系标记函数和组合关系标记函数五个部分组成,公式化表示为:ADM--- 。
其中,I指数据对象,包括数据表、属性列、单元数据等不同层次;IR指推理关系;CR指组合关系;IRL指推理关系标记函数,给出部分推理关系的概率值;CRL指组合关系标记函数,给出部分组合关系的敏感值放大倍数。
思路是:首先计算每个单元数据对最终结果的贡献值,最后将各个单元数据的贡献值累加。这个贡献值通过影响因子与此单元数据本身的敏感值相乘得到,而影响因子由组合关系中的最大放大倍数与推理关系中的最大概率相减得到,特殊情况下,当一个单元数据,与其他单元数据既不存在特殊的组合关系,也不存在特殊的推理关系,那么影响因子为1-0=1。
2、数据泄露危害度量模块
对于异常的查询操作,选择数据泄露危害度量方法进行异常评估。数据泄露危害度量模块负责利用构造的数据模型,根据返回结果集的数据敏感程度、数据数量和数据的独特程度,评估数据泄露的危害。
3、数据篡改、损毁危害度量模块
对于非查询异常操作,选择数据篡改、损毁危害度量方法。数据篡改、损毁危害度量负责对没有返回结果集的异常操作,计算操作执行的概率,评估数据篡改、损毁程度。
对于数据篡改和损毁的评估,因为没有具体的返回结果集可以利用,通过计算用户操作的概率来衡量异常程度。
步骤一,己知异常操作Q,首先计算用户提交的操作中每个特征发生的概率:用户历史安全操作记录中某特征出现的次数/该用户历史安全记录中所有审计记录的条数;
步骤二,将各个特征发生概率倒数相乘即为用户操作的异常程度;
假设检测到用户A的一条异常update, insert或delete操作,记为w,.对w进行审计数据分析与处理之后,使用元组(uw,cw,Rw,Aw,tw)来表示此条异常操作。uw即为用户A,
cw、 Rw、Aw、 tw分别对应着特征操作命令、操作表格、操作属性列和操作时间。用户A的历史安全数据中共有N条记录。对该条异常操作进行异常评估。
发布评论