对现存应用系统的业务及数据安全防护方法、装置及系统与流程

文档序号:23729161发布日期:2021-01-26 19:22阅读:68来源:国知局
对现存应用系统的业务及数据安全防护方法、装置及系统与流程

[0001]
本发明属于计算机信息安全技术领域,尤其涉及对现存应用系统的业务访问安全、数据安全的防护方法、装置及系统。


背景技术:

[0002]
现在计算机技术已经深入普及到方方面面,各种业务处理乃至日常生活都离不开软件应用系统的支持。随着软件应用的普及,业务处理系统所面临的安全风险也越来越多,越来越突出。另一方面,自从大数据的概念提出后,数据的价值日益得到重视,现在已经进入了数据技术时代。随着数据重要性的凸显,其面临的风险也越来越多,数据安全成为计算机与网络安全的重点方向。数据安全问题的难点在于:数据必须在业务部门、职能人员之间流转和分享,才能创造价值;但数据在流转和使用过程中就会面临风险,风险无处不在——可能来自于外部,也可能来自于内部;可能出于故意,也可能是疏忽或无意行为导致。数据一旦遭到破坏,或者泄露出去被人非法使用,则可能会带来巨大损失。所以我们需要在业务正常运行、数据合理流转的同时,防范各种风险,充分保证其安全。
[0003]
这种安全需求,传统的安全措施已经难以满足了。因为现在一方面要求业务和数据被正常使用和流转,另一方面,需要控制使用者或者用户,需要控制他们能操作和访问的范围。这就要求,安全需要做到业务和数据内部,要在对业务功能及数据的形态、结构有深刻认知的基础上来实现安全防护。也就是说,需要基于主体和客体的相关信息,来实现精细化的业务和数据访问控制、安全防护,仅仅提供外围的网络、主机安全环境已经远远不够了。
[0004]
这实际上是对应用系统出了更高的要求,需要其具备内建的安全能力,因为只有应用系统自身才具备其业务功能和数据的关键信息。传统的安全手段防火墙之类,其防护能力往往侧重于网络层面或主机层面,不能深入到业务中来,不能针对具体的数据提供防护能力。
[0005]
其他常见的安全手段还包括数据库安全机制和文件系统安全机制,但它们也不能提供足够的主客体精细化控制能力。
[0006]
数据库安全技术,比如tde或数据库网关,其缺点是不能获知业务系统中的用户主体信息,无法实现主体到人的访问细控。另外还存在其他风险,比如不能应对来自数据库管理员、工程或运维人员、外包人员等的内部人员风险问题,因为数据在被访问的时候,离开数据库就被解密,所以各种运维管理工具都能轻易获得明文数据。
[0007]
文件加密技术,包括特定文件/夹加密技术、卷加密技术,其缺点同样包括不能获取用户主体信息。此外还不能实现进一步的数据客体细化控制,比如针对结构化文件内的字段内容进行防护控制。同样也不能防范来自内部人员的风险,因为数据被读取的时候就会被自动解密。
[0008]
所以,依靠外在的安全手段来提供一个安全环境,还是难以深入、彻底地解决具体应用系统中的业务、数据安全问题,需要应用系统自身具备内建的安全能力,才能有效的提
供精细控制的安全防护能力。
[0009]
大量的现存应用系统中,往往只重视系统的业务功能和特性,很少在系统的建设过程中注重安全。就算是考虑到安全,大多也还是借重网络安全、主机安全等机制,来为系统提供一个安全防护环境,很少注重考虑应用系统内建的安全防护能力;就算考虑了一些内建的安全手段,但在系统的存在及发展过程中,会出现新的安全风险,而当初其研发过程中所考虑的安全机制并不能有效应对这些新出现的安全风险。
[0010]
所以这些存量应用系统缺乏足够的内建安全机制,自身不具备有效的安全防护能力。但是为了解决安全风险,对运行中的应用系统进行改造是不现实的,如同给行驶中的汽车更换车轮,代价很大,而且有非常大的风险。因此,亟需有针对存量应用系统的免改造、精细化的业务和数据安全防护方案。


技术实现要素:

[0011]
本发明旨在解决大量存量应用系统中缺乏足够内建安全能力、无法进行主客体精细控制的业务及数据安全防护的问题。构造抽象信息模型对象access并且根据所述抽象信息模型对象access,决策出适用于本次所述业务操作和数据访问的有效安全防护策略,使所述应用系统本身无需开发级改造,其业务处理及数据访问过程能获得增强的、精细化的访问授权控制、数据防护能力,控制粒度主体方面能到用户、以及客体方面能到行级和字段级。
[0012]
基于上述目的,本发明提供了一种针对现存的应用系统,为其提供免改造、主客体精细控制的业务及数据安全防护方法,其技术方案具体是这样实现的:
[0013]
本发明提供一种对现存应用系统的业务及数据安全防护方法,所述方法为现存应用系统提供免改造的主客体精细控制,其包括以下步骤:
[0014]
s304、制定针对所述应用系统的安全防护策略;
[0015]
s305、当所述应用系统发生业务操作和数据访问时,在其通讯、数据访问或程序运行流程中进行拦截,获取通讯内容、数据访问内容或程序数据;
[0016]
s306、解析并识别出所述通讯内容、数据访问内容或程序数据中的要素信息,构造抽象信息模型对象access;具体包括以下步骤:
[0017]
a.基于访问行为的抽象信息模型,为其各成员对象及属性构建关键词库,所述关键词库是能配置及维护的,或简化为具体代码实现中的常量;
[0018]
b.解析的方法包括对网络通讯报文进行基本结构解析,提取出主体载荷内容并对其进行解析,解析方法包括uri词元及参数解析、json解析和分词处理;对api及其参数进行解析,解析过程结合api方法定义及数据结构,从而解析到单个成员变量的层次并继续对其内容进行解析;
[0019]
c.所述解析过程会持续进行,将内容和数据分解到足够小的粒度,然后和所述关键词库中的条目进行匹配,所述匹配是基于字符串精确匹配或模糊匹配,如果匹配则将解析片段作为识别出的一个要素属性记录下来;
[0020]
d.所有识别出的要素属性,都是构造访问行为的抽象信息模型对象的基础信息成分;
[0021]
基于所述要素属性构造访问行为的抽象信息模型对象access,其包括四类成
员——主体、操作、客体和环境条件,具体为:主体即subject,是指发起业务操作和数据访问的用户或用户端agent,主体具有各种属性,包括角色、id、名称、身份和联系方式;操作即operation,是指所要执行的业务操作和数据访问动作,其具有各种属性,包括动作类型和所用参数;客体即object,是指被访问的客体数据资源,所述客体数据资源包括数据库或者文件,其具有各种属性,包括文件名、数据库及表名列名、数据在文件或数据库表中的位置以及数据特征;环境条件即context,是指访问动作发生的上下文环境或者条件,包括时间、客户端ip地址、客户端地理位置、客户端设备类型及硬件规格、客户端操作系统类型及版本、客户端软件类型及标识或版本、本次会话已经发生的访问操作;在构造所述抽象信息模型对象access的过程中,能从所述应用系统的数据库中获取上述各对象的属性数据;
[0022]
s307、根据所述抽象信息模型对象access,决策出适用于本次所述业务操作和数据访问的有效安全防护策略;针对某一条安全防护策略rule具体决策的算法为:
[0023]
matchingscore(rule,access)=totalscorefunc(
[0024]
subjectmatching(rule.subject,access.subject),
[0025]
operationmatching(rule.operation,access.operation),
[0026]
objectmatching(rule.object,access.object),
[0027]
contextmatching(rule.context,access.context))
[0028]
上述算法分别通过主体匹配函数subjectmatching对抽象信息模型对象的主体access.subject与该条策略的主体rule.subject中的属性进行符合度的评判,得到主体符合度;通过操作匹配函数operationmatching对抽象信息模型对象的操作access.operation与该条策略的操作rule.operation中的属性进行符合度的评判,得到操作符合度;通过客体匹配函数objectmatching对抽象信息模型对象的客体access.object与该条策略的客体rule.object中的属性进行符合度的评判,得到客体符合度;通过环境条件匹配函数contextmatching对抽象信息模型对象的环境条件access.context与该条策略的环境条件rule.context中的属性进行符合度的评判,得到环境条件符合度;然后通过一个综合评判函数matchingscore来对上述各项符合度进行综合评价,得到汇总匹配度分数;最后根据汇总匹配度分数与阈值的关系判断是否执行这条安全防护策略rule;
[0029]
s308、执行所述有效安全防护策略中的防护措施;所述防护措施应用模式包括:
[0030]
a.所请求的业务操作和数据访问在所述有效安全防护策略中不被允许,则给用户端返回拒绝访问的响应;
[0031]
b.如果通讯内容、数据访问内容、程序数据的流向是从用户端传向服务端、数据库、或文件系统的后端,则对其中的在策略中指定的重要数据进行加密,并将加密处理后的内容沿原流转路径继续向后端传送;
[0032]
c.如果通讯内容、数据访问信息、程序数据的流向是从后端传向用户端,则对其中的在策略中指定的重要数据进行解密或者遮掩、替代或模糊化的脱敏,并将处理后的内容沿原流转路径继续向用户端传送;
[0033]
d.进行审计操作,以记录所述应用系统中所发生的业务操作和数据访问行为和事件,以及所进行的处理;
[0034]
由于以上步骤使所述应用系统本身无需开发级改造,其业务处理及数据访问过程能获得增强的、精细化的访问授权控制、数据防护能力,控制粒度主体方面能到用户、以及
客体方面能到行级和字段级。
[0035]
可优选的是,所述安全防护策略包括以下要素信息:
[0036]
a.执行业务操作和数据访问的主体subject,以其某些特征或属性来指定;如果没有指定,则所述安全防护策略默认适用于所有主体;
[0037]
b.所要执行的业务操作和数据访问动作operation,如果是业务性质的操作,或程序中的过程及方法,或对数据库、文件的某种操作,能通过名称或属性来指定;如果没有指定,则所述安全防护策略默认适用于任何业务操作和数据访问动作;
[0038]
c.被访问的客体数据资源object,如果是数据库或者文件,通过其特征或属性来指定;如果没有指定,则所述安全防护策略默默认适用于所有数据资源;
[0039]
d.业务操作和数据访问发生的上下文环境或条件context,包括时间、客户端ip地址、客户端地理位置、客户端设备类型及硬件规格、客户端操作系统类型及版本、客户端软件类型及标识或版本、本次会话已经发生的访问操作,如果没有指定环境条件,则所述安全防护策略默默认适用于所有环境条件;
[0040]
e.针对所述主体在所述上下文环境条件下执行所述业务操作和数据访问动作来访问所述客体数据资源时,应该采取的防护措施。
[0041]
进一步,当所述应用系统发生业务操作和数据访问时,在其通讯或数据访问路径中进行拦截以获取通讯内容或数据访问内容,包括以通讯中介、代理或旁路监听的方式,获取所述应用系统的客户端与服务端之间的通讯内容,或获取所述应用系统与数据库之间的通讯内容;以驻留在数据库或文件系统中的组件、模块、服务、驱动或者嵌入代码方式,在所述应用系统访问数据库或文件数据时,获取到数据访问内容。
[0042]
可优选的是,当所述应用系统发生业务操作和数据访问时,在其程序运行流程中进行拦截以获取程序数据:将拦截处理功能植入到所述应用系统或其组件、构成部分及子系统的进程中,在进程运行到特定的节点时,获取程序中的数据。
[0043]
进一步,将所述拦截处理功能植入到所述应用系统或其组件、构成部分及子系统的进程中的方法,包括通过开发语言提供的机制在所述应用系统启动或运行期间对运行时代码进行调校或者修改;通过api拦截及各种进程注入技术在所述应用系统运行期间实现功能注入;通过所述应用系统本身提供的扩展机制来实现补充功能,包括插件机制、servlet、filter、面向服务编程sop、依赖注入di或控制反转ioc;通过对所述应用系统的功能实现进行一定的后期修改或组件替代的方式;通过利用所述应用系统的运行时引擎或虚拟机、应用服务器或容器、应用框架等所提供的功能和信息,或对其进行修改的方式。
[0044]
可优选的是,识别出主体及其属性的方法包括:利用拦截到的内容中识别出来的session信息,包括sessionid以及包含用户id、用户名、邮件地址或手机号码的用户标识信息;利用拦截到的用户登录请求或登录处理过程中所包含的用户id、用户名、邮件地址或手机号码的用户标识信息;利用拦截到的程序运行流程的线程信息;在文件系统层拦截所述应用系统对文件资源的读写行为,识别出进行读写的线程,并进一步关联所述应用系统中从所述线程中识别出的session及用户信息。
[0045]
可优选的是,识别出客体资源及其属性的方法包括利用拦截到的内容中所包含的数据库操作指令,解析出其中的sql指令动作、目标对象、各子句中包含的传入值信息;在文件系统层拦截所述应用系统对文件资源的读写行为,识别出目标文件。
[0046]
本发明的另一方面,提供一种针对现存的应用系统为其提供免改造的主客体精细控制的业务及数据安全防护装置,其包括:
[0047]
a.策略管理模块,用于制定和管理针对所述应用系统的安全防护策略;所述策略管理模块能制定、修改、删除和查询安全防护策略,并将所述安全防护策略发送给所述策略决策模块;
[0048]
b.拦截模块,用于当所述应用系统发生业务操作和数据访问时,在其通讯、数据访问或程序运行流程中进行拦截,获取通讯内容、数据访问内容或程序数据;所述拦截模块的实现形式包括通讯中介、代理或旁路监听,注入应用系统、其子系统或构成部分进程中的功能实现,驻留在文件系统、数据库、系统服务中的组件、服务或可执行代码/脚本;当所述应用系统发生业务操作和数据访问时,所述拦截模块进行拦截,拦截的内容包括通讯内容、数据访问内容或者程序运行中的数据;
[0049]
c.识别模块,用于解析并识别出通讯内容、数据访问内容或程序数据中的要素信息,所述识别模块从所述拦截模块拦截到的内容中解析并识别出要素信息,所述要素信息可以用来构建描述访问行为的抽象信息模型对象的各个成员:执行业务操作和数据访问的主体;所要执行的业务操作和数据访问动作;被访问的数据库或文件的客体数据资源;访问动作发生的上下文环境、条件,包括时间、客户端ip地址、客户端地理位置、客户端设备类型及硬件规格、客户端操作系统类型及版本、客户端软件类型及标识;
[0050]
d.策略决策模块,用于根据所述要素信息,决策出适用于本次所述业务操作和数据访问的有效安全防护策略,所述策略决策模块从所述策略管理模块获取针对所述应用系统的安全防护策略,并对本地缓存的安全防护策略进行更新;根据所述识别模块识别出来的所述要素信息,通过决策算法判定出适用于本次业务操作和数据访问的有效安全防护策略;其中根据所述抽象信息模型对象access,决策出适用于本次所述业务操作和数据访问的有效安全防护策略;针对某一条安全防护策略rule具体决策的算法为:
[0051]
matchingscore(rule,access)=totalscorefunc(subjectmatching(rule.subject,access.subject),operationmatching(rule.operation,access.operation),objectmatching(rule.object,access.object),contextmatching(rule.context,access.context))
[0052]
上述算法分别通过主体匹配函数subjectmatching对抽象信息模型对象的主体access.subject与该条策略的主体rule.subject中的属性进行符合度的评判,得到主体符合度;通过操作匹配函数operationmatching对抽象信息模型对象的操作access.operation与该条策略的操作rule.operation中的属性进行符合度的评判,得到操作符合度;通过客体匹配函数objectmatching对抽象信息模型对象的客体access.object与该条策略的客体rule.object中的属性进行符合度的评判,得到客体符合度;通过环境条件匹配函数contextmatching对抽象信息模型对象的环境条件access.context与该条策略的环境条件rule.context中的属性进行符合度的评判,得到环境条件符合度;然后通过一个综合评判函数matchingscore来对上述各项符合度进行综合评价,得到汇总匹配度分数;最后根据汇总匹配度分数与阈值的关系判断是否执行这条安全防护策略rule;
[0053]
e.策略执行模块,用于执行所述有效安全防护策略中的防护措施,所述策略执行模块执行所述策略决策模块决策出的所述有效安全防护策略中的防护措施,具体场景包
括:

.所请求的业务操作和数据访问在所述有效安全防护策略中不被允许,则给用户端返回拒绝访问的响应;

.通讯内容、数据访问内容、程序数据的流向是从用户端传向服务端或数据库、文件系统的后端,则对其中的在策略中指的重要数据进行加密,并将处理后的内容沿原流转路径继续向后端传送;

.和/或通讯内容、数据访问内容、程序数据的流向是从后端传向用户端,则对其中的在策略中指定的重要数据进行解密或者遮掩、替代或模糊化的脱敏,并将处理后的内容沿原流转路径继续向用户端传送;

.进行审计操作,以记录所述应用系统中所发生的业务操作和数据访问行为和事件,以及所进行的处理。
[0054]
进一步,前述装置还包括:密钥管理模块,用于管理加解密需要用到的密钥;审计模块,用于对所述应用系统及所述各模块中的事件和行为进行记录;发现模块,用于发现所述应用系统及其所处环境的特性及相关信息,其包括硬件构成、操作系统、网络配置、数据库的架构和元数据。
[0055]
再一方面,本发明提供一种针对现存的应用系统为其提供免改造的主客体精细控制的业务及数据安全防护系统,其包括已经存在的应用系统、数据库管理系统和/或文件数据存储系统;还包括:根据前述的针对现存的应用系统为其提供免改造的主客体精细化控制的业务及数据安全防护装置。
[0056]
本发明又一个方面提供一种针对已经存在的应用系统,为其提供免改造、主客体精细控制的业务及数据安全防护系统,包括已经存在的应用系统,还可以包括:数据库管理系统,文件数据存储;还包括:如上述的针对已经存在的应用系统为其提供免改造、主客体精细化控制的业务及数据安全防护装置。
[0057]
由上述本发明提供的技术方案可以看出,通过本发明提出的免改造、主客体精细控制的数据安全防护方法、装置和系统,针对大量缺乏内建安全能力的现存系统,可以无需开发改造就能为其提供精细化的业务及数据安全防护能力,可以主体到用户,客体到行级、字段级;这种细粒度的主客体安全防护能力,也是传统的安全机制,包括网络安全、主机安全、数据库安全、文件系统安全,所不能提供的。
附图说明
[0058]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0059]
图1是本发明为对现存应用系统提供免改造、主客体精细控制的数据安全防护方法的流程图;
[0060]
图2是本发明为对现存应用系统提供免改造、主客体精细控制的数据安全防护装置的结构示意图;
[0061]
图3是本发明为对现存存在的应用系统提供免改造、主客体精细控制的数据安全防护装置中的策略管理模块的结构示意图;
[0062]
图4是本发明为对现存存在的应用系统提供免改造、主客体精细控制的数据安全防护系统的结构示意图。
具体实施方式
[0063]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064]
在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或数量或位置。
[0065]
实施例1
[0066]
在本发明实施例中,提供了一种针对已经存在的应用系统为其提供免改造、主客体精细控制的业务及数据安全防护方法。图1是本实施例提供的业务及数据安全防护方法的流程图,如图1所示,该方法主要包括以下步骤s304-s308,以及可选地,s303和s309。
[0067]
步骤s304,制定针对已经存在的应用系统的业务及数据安全防护策略。
[0068]
在具体实施时,对已经存在的应用系统并没有特定的要求和限制,可以是各种类型的应用:可以采用各种架构模式,包括但不限于2层、3层乃至n层;可以采用各种开发语言,包括但不限于java、.net、c/c++、php、python、ruby、perl、go、rust;可以使用各种类型的数据库,包括但不限于oracle、mysql、sql server、db2、informix、postgresql、mongodb;可以是本地、私有化部署,也可以是云应用。
[0069]
安全防护策略rule,包含几个方面的要素信息:进行业务操作和数据访问的主体例如业务用户、操作人员,即rule.subject;所发生的业务操作和数据访问动作,即rule.operation;该业务操作和数据访问动作发生的环境和上下文,如时间、客户端ip地址、客户端地理位置、客户端其他信息等,即rule.context;被访问的客体数据对象,即rule.object;以及当主体在环境下执行动作访问客体时,所应采取的安全防护措施。如果一条安全防护策略中没有指定主体的限定条件,那么该条策略默认对所有主体有效;如果一条安全防护策略中没有指定客体的限定条件,那么该条策略默认对所有客体有效;如果一条安全防护策略中没有指定环境上下文的限定条件,那么该条策略默认对所有环境上下文有效;如果一条安全防护策略中没有指定业务操作和数据访问动作的限定条件,那么该条策略默认对所有业务操作和数据访问动作有效。
[0070]
步骤s305,在应用系统发生业务操作及数据访问时,对其进行拦截。
[0071]
在具体实施时,可以拦截应用系统的网络通讯内容:以网络代理、中介的形式,过滤网络通讯内容,或以旁路监听的方式,监听通讯内容;或拦截其对资源比如文件系统、数据库的访问,或拦截其程序运行流程中的数据。这些拦截行为可以采取其中的一种,也可以同时采用多种。
[0072]
对于网络拦截来说,可以拦截应用系统的客户端与服务端之间的通讯,或者拦截应用系统与数据库之间的通讯。拦截的目的是获取到网络通讯内容,以便进行后续的处理,并有可能对其进行修改。
[0073]
对于拦截资源访问来说,可以拦截应用系统对文件的读写等访问操作,或者在数据库中拦截对数据库的访问。拦截的目的是获取到资源访问中包含的数据,以便进行后续的处理,并有可能对其进行修改。
[0074]
对于拦截程序运行流程中的数据来说,通常是在应用系统的枢纽子系统进程中进
行拦截,比如多层架构系统的服务端进程;两层架构(独立应用程序访问数据库的应用模式)的主进程;但如果有需要,也可以在其它子系统或组件的进程中进行拦截,比如说客户端进程。拦截的目的是获取到程序运行进程中的数据,以便进行后续的处理,并有可能对其进行修改。
[0075]
步骤s306,对拦截到的网络通讯内容、资源访问内容、程序数据进行解析,识别出其中的要素属性信息。解析并识别的过程如下:
[0076]
a.基于访问行为的抽象信息模型,为其各成员对象及属性构建关键词库,关键词库是可配置及维护的,或简化为具体代码实现中的一些常量;
[0077]
b.解析的方法包括对网络通讯报文进行基本结构解析,提取出主体载荷内容并对其进行解析,解析方法包括uri词元及参数解析、json解析、分词处理等;对api及其参数进行解析,解析过程会结合api方法定义及数据结构,从而解析到单个成员变量的层次并继续对其内容进行解析;
[0078]
c.解析过程会持续进行,将内容和数据分解到足够小的粒度,然后和关键词库中的条目进行匹配,匹配是基于字符串精确匹配或模糊匹配,如果匹配则将解析片段作为识别出的一个要素属性记录下来;
[0079]
d.所有识别出的要素属性,都是后面构建访问行为的抽象信息模型对象的基础信息成分。
[0080]
要素属性信息,是指和业务及数据安全相关的一些信息,用于构建访问行文的抽象信息模型对象,包括:正在执行业务操作和数据访问的主体或具体用户,及其相关信息如姓名、角色、部门等,即access.subject;该业务操作和数据访问行为发生的环境、上下文,比如时间、客户端ip地址、客户端地理位置、客户端设备信息、客户端软件信息等等,即access.context;所发生的具体业务操作和数据访问行为是什么,即access.operation;所要访问的客体数据,及其相关信息,即access.subject。
[0081]
之所以需要综合考虑这些方面的信息,是因为本发明方法中要对业务及数据进行精细化的安全防护,所以没有局限在传统的基于角色的访问控制(rbac)方法,而是综合考虑了基于属性的访问控制(abac)等更具弹性的访问控制模型,在进行防护控制时可以综合考虑主体、客体、业务操作、环境上下文的各种属性信息,从而能实现极细粒度的控制,主体可以明确到具体的业务用户,客体可以精确到行级和列级。
[0082]
步骤s307,基于识别出的各项要素信息,决策出适用于本次业务操作和数据访问行为的有效安全防护策略。
[0083]
决策算法的基本思想是:对于某条安全防护策略,如果识别出的主体满足该条策略中主体的特征,并且识别出的客体满足该条策略中客体的特征,并且识别出的业务操作和数据访问动作属于该条策略中指定的业务操作和数据访问动作,并且识别出的环境上下文属于该条策略中指定的环境上下文的范畴,那么该条策略适用于本次业务操作和数据访问;在此基础上可以补充其他的限制条件,如:符合可选的附加规则判别,符合基于先验知识的智能化判别。
[0084]
算法分别通过主体匹配函数subjectmatching对抽象信息模型对象的主体access.subject与该条策略的主体rule.subject中的属性进行符合度的评判,得到主体符合度;通过操作匹配函数operationmatching对抽象信息模型对象的操作
access.operation与该条策略的操作rule.operation中的属性进行符合度的评判,得到操作符合度;通过客体匹配函数objectmatching对抽象信息模型对象的客体access.object与该条策略的客体rule.object中的属性进行符合度的评判,得到客体符合度;通过环境条件匹配函数contextmatching对抽象信息模型对象的环境条件access.context与该条策略的环境条件rule.context中的属性进行符合度的评判,得到环境条件符合度;然后通过一个综合评判函数matchingscore来对上述各项符合度进行综合评价,得到汇总匹配度分数;最后根据汇总匹配度分数与阈值的关系判断是否执行这条安全防护策略rule。
[0085]
下面给出决策算法的一种抽象实现,请注意这并不是该算法的唯一实现形式,基于该算法思想的具体实现形式的变种均在本申请方案的范畴之内:
[0086]
首先,通过判别函数subjectmatching对access.subject与rule.subject的符合度进行评判。subjectmatching基于对subject的若干个被考量的属性attr的评判,其基本算法可以表述为:
[0087]
subjectmatching(rule.subject,access.subject)
[0088]
=sub_cond1or sub_cond2…
or sub_cond
k
[0089]
sub_cond
i
=value_match(rule.subject.attr
i1
,rule.subject.attr
i1
)and|or value_match(rule.subject.attr
i2
,rule.subject.attr
i2
)and|or

value_match(rule.subject.attr
im
,rule.subject.attr
im
)
[0090]
其中:sub_cond
i
表示使得subject被评判为满足符合度的一种可能性条件,该条件是基于对subject的若干个属性进行匹配度评判结果的一种逻辑表达式;value_match是对属性值的简单匹配函数如字符串相等、包含或数值比较,或某种模糊匹配函数如剔除无意义字符之后的字符串比较、包含,匹配则为真值。比如某rule可能对主体做出了这样的限定:主体的userid属性为user001,或者主体具有role001这个角色,那么subjectmatching有两种满足条件:
[0091]
subjectmatching(rule.subject,access.subject)=sub_cond
1 or sub_cond2[0092]
sub_cond1=value_match(

user001

,access.subject.userid)
[0093]
sub_cond2=value_match(

role001

,access.subject.role)
[0094]
类似地,通过评判函数operationmatching、objectmatching、contextmatching分别对access.object与rule.object的符合度、access.operation与rule.operation的符合度、access.context与rule.context的符合度进行评判,这几个函数都采用与subjectmatching类似的思想来实现。
[0095]
其次,可以提供额外的评判因子函数。这些评判函数都作为可选、可配置的评判模块,根据配置来加载和使用,如:此外还会进行附加规则匹配处理additionalrulematching(rule,access)和基于知识的匹配处理knowledgebasedmatching(rule,access),附加规则是可以动态配置、调整的其他可以匹配的规则,基于知识的匹配,则是基于先验知识的、智能化的识别和匹配处理过程。
[0096]
然后,通过一个综合评判函数matchingscore来对上述各项评判结果进行综合评价,将上述subject、object、operation、context及其他评判函数得到的总计n项布尔值vbool
i
进行综合评判。matchingscore的基本算法可以表述为:matchingscore(rule,access)=cond
1 or cond2…
or cond
k
cond
i
=vbool
i1 and|or vbool
i2
and|or

vbool
im
[0097]
其中:cond
i
是该rule的条件被满足的多种可能性之一,它是否满足取决于某几项评判函数结果的一个布尔关系表达式。
[0098]
如果该rule针对访问行为access的matchingscore评判结果为逻辑真值,那么该rule中指定的安全防护措施适用于该access,反之则不适用。
[0099]
针对一次访问行为access,会判别出所有rule中适用于该access的那些。
[0100]
步骤s308,执行上一步决策出的有效安全防护策略中的安全防护措施。
[0101]
在具体实施时,执行措施的位置和方式,是同拦截行为相对应的;如果采用了多种拦截行为相结合,那么可以在其中的一个或多个拦截位置去实施安全防护措施。
[0102]
策略可以具有优先级。如果步骤s307决策出了多项适用的策略,可以依照其优先级来依次执行这些策略中的安全防护措施。
[0103]
安全防护措施可以分为两个方面:一是访问授权控制,二是数据保护处理。具体的防护措施包括但不限于下述的使用场景:
[0104]
就访问授权控制而言,如果用户所要执行的业务操作不被允许,那么返回拒绝的响应。
[0105]
就数据保护而言,需要区分数据的流向。如果数据是从用户侧流向应用系统的后端,比如说要新增数据、修改数据,那么需要对数据中的重要成分进行加密,这样数据在应用系统后端保存下来时,就是密文数据,能有效保护数据。如果数据的流向是从应用系统的后端流向用户侧,比如是用户在查询、获取数据,那么如果用户对数据有完整权限,则将数据中的密文部分都解密后再返回给用户侧;如果用户对重要数据完全没有查看权限,则将密文数据不解密返回给用户侧;如果用户没有对重要数据的完全访问权限,但是为了进行业务操作,需要查看其中的部分数据,那么可以对密文数据进行解密后,再进行脱敏,使得用户看不到真实的数据,但仍能看到数据的整体格式以及其中的部分数据。
[0106]
在具体实施时,在步骤s304之前,还可以执行步骤s303:发现应用系统的各种信息,比如硬件配置及规格、操作系统、数据库系统及其中的数据库方案元数据,将这些发现的信息用于步骤s304中的数据安全防护策略制定。
[0107]
在具体实施时,在步骤s308之后,还可以执行步骤s309:对所发生的各种事件及相应处理都记录下来,以便后期进行审计和追溯。
[0108]
实施例2
[0109]
在本发明实施例中,提供了一种针对已经存在的应用系统为其提供免改造、主客体精细控制的业务及数据安全防护装置。该装置可以实现实施例1中的为已经存在的应用系统提供免改造、主客体精细控制的业务及数据安全防护方法。
[0110]
图2是本实施例提供的业务及数据安全防护装置的架构图示意,如图2所示,该业务及数据安全防护装置主要包括:策略管理模块504、拦截模块505、识别模块506、策略决策模块507、策略执行模块508。
[0111]
下面对上述的业务及数据安全防护装置的各个模块进行说明。
[0112]
策略管理模块504,用于制定和管理针对已经存在的应用系统的安全防护策略。
[0113]
安全防护策略所包含的内容参见实施例1步骤s304中关于安全防护策略的说明。
[0114]
策略管理模块504的典型架构方式如图3所示,管理员通过管理终端访问策略管理模块的服务,进行安全防护策略的管理,包括但不限于:新建策略,修改策略,删除策略,查
询策略。策略管理模块一般将策略数据保存在数据库中,也可以将其保存在文件或其他存储载体、容器中。
[0115]
在系统初始化阶段,策略管理模块504会将针对应用系统的全部安全防护策略发送给策略决策模块507。发送方式可以是从策略管理模块504推送给策略决策模块507,也可以是策略决策模块507向策略管理模块504请求获取。
[0116]
在具体实施时,策略管理模块504与策略决策模块507之间的交互是通过网络协议进行的,另一种可选的方式是使用进程间通讯,还可以使用一种特殊的方式,即二者共存在同一个程序及进程中。
[0117]
在具体实施时,还可以进行重复的策略发送:一种方式是每隔一段时间,策略管理模块504再次将策略发送给策略决策模块507,或者将策略的变动情况发送给策略决策模块507;另一种方式是在策略管理模块504中的安全防护策略有改变后,将变动发送给策略决策模块507。
[0118]
策略管理模块504有一种简化模式:策略管理模块504的退化实现形式是作为安全防护策略的配置文件或数据库,而不作为软件程序的形式实现,将安全防护策略保存在配置文件中或者数据库中,然后策略决策模块507可以直接从文件或数据库中读取安全防护策略。
[0119]
拦截模块505在应用程序发生业务操作和数据访问时,对其进行拦截。
[0120]
在具体实施时,可以有不同的实现形式,灵活采取多种方式,在不同的位置进行拦截。
[0121]
可选方式之一是对网络通讯进行拦截。具体拦截的位置,可以是应用系统的客户端与服务端之间的通讯,或者应用系统与数据库之间的通讯。进行网络通讯拦截的功能一般采用网络中介、透明代理或网络代理等形式来实现。拦截得到的是网络通讯内容,其中在应用层协议层面的内容是有价值的,将会用于后续处理。
[0122]
可选方式之二是在应用系统在进行资源访问时进行拦截,比如说在其访问文件、数据库的过程中。在进行这种拦截时,拦截功能可以实现为文件系统访问层的一种服务,可以拦截应用系统对文件的读写操作;或者是数据库中的一个插件或前置处理过程,能截获应用系统对数据库的访问。拦截得到的,是对资源进行访问的请求或应答数据。
[0123]
可选方式之三是在应用系统的程序运行流程中进行拦截,获取程序进程中的数据。在进行这种拦截时,需要将拦截功能注入到应用系统的进程中。实现进程注入功能的技术手段多种多样,难以一一列举,包括但不限于:
[0124]
第一种是通过程序语言提供的工具、机制,或其他工具,在应用系统的进程启动时,对其运行时代码进行调校和修改,以及补充新的功能。这种方式的一个典型应用就是java agent。
[0125]
第二种是通过应用系统自己提供的扩展机制,比如插件、di、soa、接口的可替代实现等方式。
[0126]
第三种是通过应用服务器、容器、框架提供的扩展机制。比如说filter、servlet、事件处理框架等。
[0127]
第四种是通过对应用系统的运行环境进行一定的修改,比如说对其运行引擎、虚拟机等进行修改以改变或增加功能。比如说可以对php的运行引擎进行修改,以便在其中嵌
入功能。
[0128]
第五种方式,是通过对应用系统的某些功能进行一定的修改,这种修改并不一定非要在原有应用系统研发工程的基础上进行——通过某种方式的逆向工程分析,然后在特定锚点进行轻微修改以便进行所需要的功能修改或增加。
[0129]
在程序中进行拦截可以得到运行时的真实数据,其中和业务和数据安全有关的主要是:所有和主体、环境上下文、所执行的业务操作和数据访问动作、被访问的客体有关的对象或属性数据。包括但不限于:session会话数据,用来表示用户的对象和数据,所要执行的sql语句或所要访问的文件,所执行的业务方法等。
[0130]
识别模块506用于从拦截模块505拦截得到的数据内容中识别出要素信息。
[0131]
识别处理方法根据拦截到的内容而有所不同。
[0132]
如果拦截到的是应用系统的客户端与服务端之间的通讯内容,那么可以从其中识别出以下信息:
[0133]
第一是主体的信息。具体来说,可以通过拦截用户登录过程,获知用户的标识信息,及其本次会话的sessionid信息,并建立关联,在后续该sessionid的所有通讯中都能知道是该用户在进行操作。
[0134]
第二是环境上下文信息。一方面,可以利用网络层协议了解客户端的网络信息;另一方面,可以通过应用层协议了解客户端的软件信息及系统信息;此外还可以知道时间信息。
[0135]
第三可以识别出业务操作信息。这通常是基于引用层协议分析来获知。比如对于典型的web应用来说,业务操作是通过请求特定的url来进行,因此可以通过客户端请求的url来识别出其要进行哪种业务操作。
[0136]
第四可以识别出部分客体信息。一方面是特定的业务操作通常是访问特定的客体数据资源,另一方面,在通讯内容中会携带客体数据信息。
[0137]
虽然对网络通讯内容的解析和识别能获取到上述四个方面的信息,但是在具体实施中可能存在一定的要求。比如识别出业务操作及客体信息,需要有一定的先验知识,获取这些先验的方法包括但不限于:借助于辅助工具或者人工方法,通过对应用系统的通讯内容进行采样分析,总结出数据特征,然后在识别时利用这些数据特征;利用程序中的配置信息,比如说典型的web.xml配置文件。
[0138]
如果拦截到的是应用系统与数据库之间的通讯,那么可以获取到应用系统意图执行的sql语句。通过对sql进行解析,可以识别出跟客体有关的信息,包括所要执行的sql指令,以及该指令所针对的数据库表、列,还有条件等信息。
[0139]
如果拦截到的是应用系统的程序运行时数据,那么根据拦截的位置,可以获取多种信息,包括:
[0140]
主体的信息一方面,可以在程序运行流程中拦截用户登录处理的过程,从而能获知用户的标识信息;另一方面,也能获知程序中的session对象及其中包含的信息,它们可以和用户标识信息建立关联。
[0141]
业务操作信息,在应用程序中能获取到关于用于请求及应答的信息,其中通常包括用户所要执行的业务操作。
[0142]
环境上下文信息,在用户执行业务操作和数据访问的时候,进行交互的环境上下
文信息通常被应用系统解析出来,放在跟请求和应答相关的信息中,可以被获取到。
[0143]
客体相关的信息,在应用系统进行数据库访问之前进行拦截,可以获知其所要执行的sql语句。对sql语句进行解析,可以知道所要访问的数据库表、列,以及所要执行的sql指令。
[0144]
如果拦截到的是对资源的访问,比如访问文件系统,那么可以识别出所要访问的文件,所进行的io操作,以及访问的具体数据位置。
[0145]
策略决策模块507用于从识别模块506所识别出的要素信息的基础上,决策出适用于当前所发生的业务操作和数据访问的安全防护策略。决策算法的基本思想是:对于某条安全防护策略,如果识别出的主体subject满足该条策略中主体的特征,并且识别出的客体object满足该条策略中客体的特征,并且识别出的业务操作和数据访问动作operation属于该条策略中指定的业务操作和数据访问动作,并且识别出的环境上下文context属于该条策略中指定的环境上下文的范畴,那么该条策略适用于本次业务操作和数据访问;在此基础上可以补充其他的限制条件,如:符合可选的附加规则判别,符合基于先验知识的智能化判别。
[0146]
下面给出决策算法的一种抽象实现,请注意这并不是该算法的唯一实现形式,基于该算法思想的具体实现形式的变种均在本设计方案的范畴之内:
[0147]
首先,通过估值函数subjectmatching对access.subject与rule.subject的符合度进行评判。subjectmatching基于对subject的k个被考量的属性attr的评判,其基本算法可以表述为:
[0148][0149]
其中:value_match是简单的值匹配函数(如字符串的比较、包含或数值的比较),可以简单地实现为匹配则得分,不匹配则不得分,或采用典型的模糊值匹配算法,得到一个区间中的分值;weight
i
是第i个属性attr
i
的权重值,这些权重值可以实现为可配置的或简化为固定值;normalize对求和值进行归一化,该步骤可选。
[0150]
类似地,通过估值函数operationmatching、objectmatching、contextmatching分别对access.object与rule.object的符合度、access.operation与rule.operation的符合度、access.context与rule.context的符合度进行评判,这几个函数都采用与subjectmatching类似的思想来实现。
[0151]
其次,可以提供额外的评判因子估值函数或模型检测函数,如本次会话异常评判函数except、近期会话异常评判函数、入侵模型检测函数、特殊异常行为检测函数等。这些估值函数或检测函数都作为可选、可配置的估值模块,根据配置来加载和使用。
[0152]
然后,通过一个综合估值函数matchingscore来对上述各项估值进行综合评价,将上述subject、object、operation、context及其他估值函数得到的总计m项得分score进行综合估值。matchingscore的基本算法可以表述为:
[0153][0154]
其中:score
i
是第i个估值函数得到的得分值;weight
i
是第i个估值函数的得分权重值,该权重值可以实现为可配置方式或简化为固定值;normalize对求和结果进行归一
化,该步骤可选。
[0155]
rule的条件中可以针对部分(或所有)估值项及综合估值函数分别设置阈值,只有当各项估值得分都分别达到对应的阈值要求时,该rule的条件被满足。这些阈值可以实现为可配置的,或简化为固定值。
[0156]
如果某次访问行为access根据数据决策过程满足了某rule的条件,该rule中的安全防护策略适用于该access。
[0157]
针对某次访问行为access,会根据上述算法决策出所有适用于该access的安全防护策略。
[0158]
策略执行模块508,用于对策略决策模块507所决策出来的有效安全防护策略,执行其中的防护措施。安全防护策略可以具有优先级,如果某次访问行为,有多条适用的安全防护策略,可以按照其优先级来依次执行。
[0159]
防护措施包括两个方面:一是进行访问授权控制,二是进行数据保护处理。具体的防护措施包括但不限于下述的使用场景:
[0160]
就访问授权控制而言,如果用户所要执行的业务操作不被允许,那么返回拒绝的响应。
[0161]
就数据保护而言,需要区分数据的流向。如果数据是从用户侧流向应用系统的后端,比如说要新增数据、修改数据,那么需要对数据中的重要成分进行加密,这样数据在应用系统后端保存下来时,就是密文数据,能有效保护数据。如果数据的流向是从应用系统的后端流向用户侧,比如是用户在查询、获取数据,那么如果用户对数据有完整权限,则将数据中的密文部分都解密后再返回给用户侧;如果用户对重要数据完全没有查看权限,则将密文数据不解密返回给用户侧;如果用户没有对重要数据的完全访问权限,但是为了进行业务操作,需要查看其中的部分数据,那么可以对密文数据进行解密后,再进行脱敏,使得用户看不到真实的数据,但仍能看到数据的整体格式以及其中的部分数据。
[0162]
在具体实施时,还可以包括密钥管理模块502,用于管理装置中用来进行数据加解密的密钥。密钥管理模块502中的密钥通常和策略管理模块504中的策略相结合,典型方式是:为了充分保证数据的安全,不是使用同一个密钥对所要需要加密的数据进行加密,而是对数据进行划分然后使用不同的密钥,比如说一个数据表使用一个密钥,然后将这种对应关系在安全防护策略中体现出来。在交互方式上,为了简化交互和管理的复杂性,较好的方式是策略管理模块504同密钥管理模块502进行交互,然后将策略及相应的密钥交付给策略决策模块。当然也可以选择其他的交互模式,凡是可行的方式都是可以采用的,比如:策略执行模块508在具体执行数据加解密时,向密钥管理模块502获取密钥。
[0163]
在具体实施时,还可以包括审计模块509,用于记录其他各模块中所发生的事件、所进行的处理,以便于后期进行审计,或者事件追溯。
[0164]
在具体实施时,还可以包括感知模块503,用于感知应用系统中的软硬件信息,包括硬件配置与规格、操作系统信息、文件系统信息、数据库信息等。通常,感知模块503采集到的这些信息被用来进行策略制定,所以将这些信息发送给策略管理模块。
[0165]
实施例3
[0166]
在本发明实施例中,提供了一种针对已经存在的应用系统为其提供免改造、主客体精细控制的业务及数据安全防护系统。该装置可以实现实施例1中的为已经存在的应用
系统提供免改造、主客体精细控制的业务及数据安全防护方法,或使用实施例2中的为已经存在的应用系统提供免改造、主客体精细控制的业务及数据安全防护装置。
[0167]
如图4所示,在本发明实施例中,以一个三层结构的应用系统为例来进行说明,该应用系统包括客户端613、服务端614、数据库615、文件系统616。但是在其他实施例中,可以针对不同类型的应用来实施,其要点在于拦截模块505和策略执行模块508实施的位置。在本发明实施例中,策略管理模块504、拦截模块505、策略决策模块507、识别模块506、策略执行模块508的作用参见实施例2中的策略管理模块504、拦截模块505、策略决策模块507、识别模块506、策略执行模块508。
[0168]
在具体实施时,可以选择在几个不同的地方实施拦截模块505、策略执行模块508。并非在图4中所有实施拦截模块505、策略执行模块508的地方,都要进行对应的实施,而是根据需要来选择。也并非实施了拦截模块505的地方,一定要实施策略执行模块508;可以在某个或者几个位置实施拦截模块505,在其中的一个位置或者另一个其他的位置实施策略执行模块508。
[0169]
具体实施时,本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现前述为已经存在的应用系统提供免改造、主客体精细控制的数据安全防护方法。
[0170]
综上,本发明提出的为已经存在的应用系统提供免改造、主客体精细控制的数据安全防护方法、装置及系统,可以有效为已经存在的大量存量应用系统提供增强的业务及数据安全防护,具体的安全防护措施包括但不限于数据加解密、脱敏、访问控制等。可以实现的效果包括:
[0171]
1.落盘数据是密文,从而解决源自内部或入侵产生的数据泄露风险,包括来自数据库管理维护人员、工程人员、外包人员的风险;
[0172]
2.不具备权限的用户在访问数据时,可以对数据中的部分敏感信息脱敏,让用户看不到真实内容;具备权限的用户可以访问到明文数据;
[0173]
3.允许或拒绝主体对某个业务功能或数据资源的访问。
[0174]
本发明中尤其具有创新性的地方在于,在不对目标系统进行改造的情况下,识别出目标系统通讯内容中的主体信息和客体信息,并基于主客体信息来实施安全防护措施。
[0175]
本领域的技术人员应明白,本发明的实施例可提供为方法、装置、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、cd-rom、光学存储器等上实施的计算机程序产品的形式。
[0176]
本发明是参照根据本发明实施例的方法、设备/系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的组合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0177]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特
定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0178]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0179]
以上所述各实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应该理解:其依然能对前述实施例所记载的技术方案进行修改,或者对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1