一种基于血缘关系的数据库审计方法与流程

文档序号:19155564发布日期:2019-11-16 00:42阅读:324来源:国知局
本发明涉及数据库审计领域,具体是一种基于血缘关系的数据库审计方法。
背景技术
::sql(structuredquerylanguage)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用sql语言提高计算机应用系统的工作质量与效率。sql语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力。数据库的审计是正确应用的基础,现有的数据库审计方法虽然可以达到一定的效果,但是找出异常结果的正确率不高,人们也在进行相关方面的研究。技术实现要素:本发明实施例的目的在于提供一种基于血缘关系的数据库审计方法,以解决上述
背景技术
:中提出的问题。为实现上述目的,本发明实施例提供如下技术方案:一种基于血缘关系的数据库审计方法,具体步骤如下:步骤一,找出数据库的字段之间的血缘关系r;步骤二,基于血缘关系r,分别对数据库进行敏感数据字段、越权操作和重要表操作审计,得到异常结果。作为本发明实施例进一步的方案:步骤一中的方法一为:读取数据库操作记录中的sql语句,对sql语句进行解析,通过sql语句中特有的规则找出体现数据传输的血缘关系,从而建立血缘关系表。作为本发明实施例进一步的方案:步骤一中的方法二为:利用人工智能算法,当数据库操作记录不完整时,可以通过对整个数据库字段先进行聚类再进行相似度计算,找出数据库字段之间的血缘关系,补充到血缘关系表中,结合上述两个方法产生的关系集合,若有冲突,以方法一的结果为准,并将这种关系定义为血缘关系。作为本发明实施例进一步的方案:步骤二中敏感数据字段的审计步骤为:通过客户提供的敏感数据字段和血缘关系r的字段进行关联,找到与敏感列有直接或间接血缘关系的列的结合,并把这些列定义为敏感字段群体,然后结合数据库操作日志审计敏感字段群体,找出对敏感字段群体进行异常操作的用户,分析数据传输日志和敏感字段群体,识别出对敏感数据字段进行大量导出操作的异常用户。作为本发明实施例进一步的方案:步骤二中越权操作的审计步骤为:首先定义用户的权限表,然后将用户的权限表和血缘关系表进行关联,找出进行越权访问操作的异常用户。作为本发明实施例进一步的方案:步骤二中重要表操作的审计步骤为:通过pagerank算法计算出血缘关系表的中心度,根据中心度进行排序找出重要表,最后对重要表操作用户进行审计,找出异常操作的用户。作为本发明实施例进一步的方案:步骤一中方法二的人工智能算法为kmeans算法,k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇,聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。作为本发明实施例进一步的方案:步骤一中方法二中相似度计算的公式为:c,d表示两个进行比较的列,ci,di表示列的元素(即列的具体内容),n,m表示两个列的长度。与现有技术相比,本发明实施例的有益效果是:本发明通过抽取相关的数据,其中用数据库操作记录进行抽取血缘关系的工作,生成血缘关系表,用其他数据关联血缘关系表,用关联后的数据进行数据处理,提取特征,再用相关的模型进行识别,找出异常结果记录,工作效率和正确率高,满足了人们的使用需求。附图说明图1为基于血缘关系的数据库审计方法的工作流程图。图2为基于血缘关系的数据库审计方法中敏感数据字段审计的流程示意图。图3为基于血缘关系的数据库审计方法中越权操作审计的流程示意图。图4为基于血缘关系的数据库审计方法中重要表操作审计的流程示意图。具体实施方式下面结合具体实施方式对本专利的技术方案作进一步详细地说明。实施例1一种基于血缘关系的数据库审计方法,具体步骤如下:步骤一,找出数据库的字段之间的血缘关系r,方法一为:读取数据库操作记录中的sql语句,对sql语句进行解析,通过sql语句中特有的规则找出体现数据传输的血缘关系,从而建立血缘关系表,方法二为:利用kmeans算法,k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇,聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集,当数据库操作记录不完整时,可以通过对整个数据库字段先进行聚类再进行相似度计算,相似度计算的公式为:c,d表示两个进行比较的列,ci,di表示列的元素(即列的具体内容),n,m表示两个列的长度,找出数据库字段之间的血缘关系,补充到血缘关系表中,结合上述两个方法产生的关系集合,若有冲突,以方法一的结果为准,并将这种关系定义为血缘关系;步骤二,基于血缘关系r,分别对数据库进行敏感数据字段、越权操作和重要表操作审计,敏感数据字段的审计步骤为:通过客户提供的敏感数据字段和血缘关系r的字段进行关联,找到与敏感列有直接或间接血缘关系的列的结合,并把这些列定义为敏感字段群体,然后结合数据库操作日志审计敏感字段群体,找出对敏感字段群体进行异常操作的用户,分析数据传输日志和敏感字段群体,识别出对敏感数据字段进行大量导出操作的异常用户;越权操作的审计步骤为:首先定义用户的权限表,然后将用户的权限表和血缘关系表进行关联,找出进行越权访问操作的异常用户;重要表操作的审计步骤为:通过pagerank算法计算出血缘关系表的中心度,根据中心度进行排序找出重要表,最后对重要表操作用户进行审计,找出异常操作的用户,即可得到异常结果。实施例2一种基于血缘关系的数据库审计方法,具体步骤如下:步骤一,从sql语句中提取createtable,insertinto这两种具有“数据传输”的语句。利用sqlparse工具进行语句分析。sqlparse工具可以解析出单词的词性。词性包括:关键词、方法、符号等。依据create或insert关键词可以定位到目标表名tt;依据from关键词可以定位到源表名<ts>集合。(获取单表的表名或者表关联的表名和别名);依据select关键词可以定位到列名和列别名集合(列名为原始列名,列别名为目标表列名,无列别名则目标表列名和原始列名一致)。替换列名集合的表别名为真实的表名。输出sql语句的解析结果:原始表名、原始列名、目标表名、目标列名。血缘关系映射为:原始表名,原始列名–>目标表名、目标列名;步骤二,针对于每个列,加工如下特征:字符类型(数字型、文本型)、平均字符长度、平均数字字符占比(avg(数字字符/总字符))、平均英文字符占比(avg(英文字符/总字符))、平均中文字符占比(avg(中文字符/总字符))。利用kmeans算法,将上述特征进行聚类,将相似的属性的列聚到一个类中。聚类的结果是每个类包含一个或者多个列。在同一类中,计算类内容的相似度。相似度的计算公式是:其中:c,d表示两个进行比较的列,ci,di表示列的元素(即列的具体内容),n,m表示两个列的长度。若相似度超过阈值,则可定义这两个列是具有数据传输关系的。并结合列的创建时间,把创建时间早的列作为原始列,时间创建晚的列作为目标列,结合步骤一和步骤二产生的关系集合,若有冲突,以步骤一的结果为准,并将这种关系定义为血缘关系r,步骤三,基于血缘关系r,分别对数据库进行敏感数据字段、越权操作和重要表操作审计,敏感数据字段审计的步骤为:根据客户提供给的“已标注的敏感数据”,结合血缘关系r,找到与“已标注的敏感数据”有直接或者间接血缘关系的敏感数据群体。关联操作日志和敏感数据群体,得到敏感数据群体的操作日志。并进行特征加工,根据日期维度、统计维度、主体维度组合,可以加工成以用户为对象的特征,见表1;表1将加工后的特征进行数据标准化后、采用异常检测算法进行检测(孤立森林模型+knn算法)、并找出敏感数据操作异常记录。孤立森林(iforest)模型属于无参数和无监督的。模型,即不需要假设数据模型也不需要有label的训练模型。对于查找哪些点容易被孤立(异常点),孤立森林用一个随机超平面来切割数据空间,切一次后可以生成两个子空间,之后再继续用随机一个超平面来切割每个子空间,循环下去,直到每子空间里面只有一个数据点为止。直观上来讲,可以发现那些密度很高的簇需要被切很多次才会停止切割,但那些密度很低的点就会很容易很早的停到一个子空间了。由于切割是随机的,所以需要用ensemble的方法来得到一个收敛值,即反复从头开始切,然后平均每次切的结果。孤立森林(iforest)由t个itree(孤立树)组成,每个itree是一个二叉树结构。孤立森林实现步骤大致如下:1.从训练数据中随机抽取部分样本作为子样本集;2.随机指定一个维度,在当前节点数据中随机产生一个切割的,以此切割点生成一个超平面,将当前节点数据空间分为2个子空间;3.递归步骤2,不断构造新的子节点,直到子节点中只有一个数据或达到限定高度。获得t个itree之后,孤立森林训练就结束了,输入每个样本是否异常标签,以及异常分数。knn算法是数据挖掘分类技术中最简单的方法之一。所谓k最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表,在做异常识别中,我们迭代距离,找出邻居最少的点,定义为异常点。依据上面的异常检测算法,可以识别出异常操作的记录,并根据记录追溯到用户个人;依据表名、列名关联文件传输日志和敏感数据群体,可以生成敏感数据传输记录,并进行特征加工,根据日期维度、统计维度、主体维度组合,可以加工成以用户为对象的特征,见表2。表2越权操作审计的步骤为:关联用户权限数据(禁止用户对某些表进行操作的记录)和血缘关系r。产生禁止用户操作的表群体s(与禁止用户操作的表有直接或者间接血缘关系的表群体)。关联禁止用户操作的表群体s和用户操作记录,找到用户操作了禁止操作的表群体的记录重要表操作审计的步骤为:利用pagerank算法对血缘关系r进行中心度提取。pagerank算法总的来说就是预先给每个表一个pr值(下面用pr值指代pagerank值),由于pr值物理意义上为一个表被数数据传输的概率,所以一般是其中n为表的总数。另外,一般情况下,所有表的pr值的总和为1。如果不为1的话也不是不行,最后算出来的不同表之间pr值的大小关系仍然是正确的,只是不能直接地反映概率。预先给定pr值后,通过下面的算法不断迭代,直至达到平稳分布为止。pripri表示第i个表的pagerank值,用以衡量每一个表的排名;若排名越高,则其pagerank值越大。然后再按中心度进行排名,提取中心度排序前列的表集合,做为重要表t。通过表名来关联操作日志和重要表t。关联后的结果可以实时展示,用来对重要表进行实时监控,可以对关联后的结果加工特征,用异常识别算法进行异常操作识别,加工以表和用户为对象的特征见表3。表3利用相关的异常检测模型(如孤立森林模型和knn算法),可以找出操作重要表的异常记录,从而追溯到操作异常的用户。异常结果显示见表4。表4用户id敏感数据操作越权操作重点表操作100001正常正常正常100002正常异常正常100003异常正常正常100004正常正常正常100005正常正常异常100006正常正常正常100007正常正常正常100008正常正常正常100009异常异常异常100010正常正常正常100011正常正常正常100012正常正常正常100013正常正常正常以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1