一种访问控制策略的处理方法和装置与流程

文档序号:17664147发布日期:2019-05-15 22:35阅读:231来源:国知局

本发明涉及数据处理领域,特别涉及一种访问控制策略的处理方法和装置。



背景技术:

访问控制是信息安全领域中常用的技术,也是计算机及网络安全的理论基础,其主要目的是根据规则确定主体对客体的访问权限。

访问控制主要包含以下三个要素:主体、客体和控制策略。其中,主体:访问动作的发起方,例如用户、进程、服务等。主体一般是经过身份认证的对象。客体:被访问的对象,例如文件、数据对象、进程、设备、操作系统对象等。控制策略:主体对客体访问时应用的规则集合,描述了授权的机制。

另外,在计算机信息安全系统中访问控制策略的执行者一般为较低层的系统核心组件,以及各种第三方提供的过滤器。

现有对访问控制策略规则的描述通常采用以下三种方式:

(1)访问控制矩阵(accesscontrolmatrix,acm):是最初实现访问控制机制的概念模型,以二维矩阵规定主体和客体间的访问权限,其中一维度描述主体,另一维度描述客体,矩阵格表示主体对客体的访问授权(允许或拒绝)。在实际应用中,由于其存储空间消耗较大并且维护困难而较少使用。

(2)访问控制列表(accesscontrollist,acl):以客体为中心建立一个访问控制规则的列表,在每一条规则中给出不同主体对此客体的访问授权。此方法简单实用,权限回收容易(acl随着客体一并删除),适用于主体数量有限、客体数量庞大的场景,被广泛的应用在计算机操作系统中,例如windows系统中就是应用acl限制用户对文件的访问权限。

(3)访问能力列表(accesscontrolcapabilitieslist,accl):以主体为中心建立其有权访问的客体列表。这种方式的优点是用户间传递权限简单(通过传递accl即可),其缺点是在客体变化时(例如新增、删除客体时需要修改所有主体的accl),因此仅适用于主体数量庞大、客体数量有限的系统。

然而,上述访问控制策略都只适用于常规的操作系统中,在计算机信息安全相关的系统中(例如主机防护系统、网络防护系统),网络环境复杂,并非单用户与客体之间的访问,上述访问控制策略无法满足复杂的访问控制需求。



技术实现要素:

有鉴于此,本发明实施例提出了一种访问控制策略的处理方法和装置,用以解决现有技术的如下问题:在计算机信息安全相关的系统中,网络环境复杂,现有访问控制策略无法满足复杂的访问控制需求。

一方面,本发明实施例提出了一种访问控制策略的处理方法,包括:定义访问控制策略中参与运算的对象信息,其中,所述对象信息至少包括:主体信息、客体信息、动作信息及其相关的属性信息;按照预定构建规则为所述对象信息构建访问控制策略,其中,所述策略包括:策略的声明部分、策略的判定表达式、访问控制规则列表和策略的处置表达式,所述访问控制规则列表中的每个访问控制规则均包括规则的判定表达式和规则的处置表达式,判定表达式为逻辑表达式,处置表达式为代码命令;将所述访问控制策略进行预定处理,以转换为所述访问控制策略的执行者能够识别的数据格式,并将所述数据格式的访问控制策略存储到访问控制策略列表中;在接收到访问时,根据接收到的对象信息遍历所述访问控制策略列表,以执行处置表达式或默认处置表达式对应的操作。

在一些实施例中,判定表达式为由字段部分、运算符部分、常量部分组成的逻辑表达式及其组合;处置表达式为由操作命令和预定符号组成的多行代码命令。

在一些实施例中,将所述访问控制策略进行预定处理,以转换为所述访问控制策略的执行者能够识别的数据格式,包括:将判定表达式转换为通过与运算符和非运算符组成的判定表达式,将转换后的判定表达式转换为表达式树;将处置表达式转换为操作链表。

在一些实施例中,在接收到访问时,根据接收到的对象信息遍历所述访问控制策略列表,以执行所述处置表达式或所述默认处置表达式对应的操作,包括:在接收到访问时,提取访问的对象信息,根据所述对象信息遍历策略对应的表达式树,以检测所述访问控制策略列表中是否存在与所述对象信息相匹配的访问控制策略;在存在所述匹配的访问控制策略的情况下,遍历规则对应的表达式树,以检测所述访问控制规则列表中是否存在与所述对象信息相匹配的访问控制规则;在存在所述匹配的访问控制规则的情况下,执行规则对应的操作链表中的命令;在不存在所述匹配的访问控制规则的情况下,执行策略对应的操作链表中的命令。

在一些实施例中,将所述访问控制策略进行预定处理之前,还包括:检测所述访问控制策略中的各个判定表达式和各个处置表达式是否存在错误;

在存在错误的情况下,发送提示信息。

另一方面,本发明实施例提出了一种访问控制策略的处理装置,包括:定义模块,用于定义访问控制策略中参与运算的对象信息,其中,所述对象信息至少包括:主体信息、客体信息、动作信息及其相关的属性信息;构建模块,用于按照预定构建规则为所述对象信息构建访问控制策略,其中,所述策略包括:策略的声明部分、策略的判定表达式、访问控制规则列表和策略的处置表达式,所述访问控制规则列表中的每个访问控制规则均包括规则的判定表达式和规则的处置表达式,判定表达式为逻辑表达式,处置表达式为代码命令;预处理模块,用于将所述访问控制策略进行预定处理,以转换为所述访问控制策略的执行者能够识别的数据格式,并将所述数据格式的访问控制策略存储到访问控制策略列表中;执行模块,用于在接收到访问时,根据接收到的对象信息遍历所述访问控制策略列表,以执处置表达式或默认处置表达式对应的操作。

在一些实施例中,判定表达式为由字段部分、运算符部分、常量部分组成的逻辑表达式及其组合;处置表达式为由操作命令和预定符号组成的多行代码命令。

在一些实施例中,所述预处理模块,具体用于:将判定表达式转换为通过与运算符和非运算符组成的判定表达式,将转换后的判定表达式转换为表达式树;将处置表达式转换为操作链表。

在一些实施例中,所述执行模块,具体用于:在接收到访问时,提取访问的对象信息,根据所述对象信息遍历策略对应的表达式树,以检测所述访问控制策略列表中是否存在与所述对象信息相匹配的访问控制策略;在存在所述匹配的访问控制策略的情况下,遍历规则对应的表达式树,以检测所述访问控制规则列表中是否存在与所述对象信息相匹配的访问控制规则;在存在所述匹配的访问控制规则的情况下,执行规则对应的操作链表中的命令;在不存在所述匹配的访问控制规则的情况下,执行策略对应的操作链表中的命令。

在一些实施例中,还包括:检错模块,用于检测所述访问控制策略中的各个判定表达式和各个处置表达式是否存在错误;在存在错误的情况下,发送提示信息。

本发明实施例构建访问控制策略时,对访问控制策略的组成进行了重新限定,增加了判定表达式和处置表达式两部分,通过判定表达式判定当前属于何种情况,通过处置表达式执行判定表达式为真时对应的代码命令,丰富了访问控制策略,可以表达复杂的处理关系,即使网络环境再复杂,都可以实现访问。

附图说明

图1为本发明第一实施例提供的访问控制策略的处理方法的流程图;

图2为本发明第二实施例提供的访问控制策略的处理装置的结构示意图;

图3为本发明第三实施例提供的表达式树的示意图。

具体实施方式

为了使得本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

为了保持本发明实施例的以下说明清楚且简明,本发明省略了已知功能和已知部件的详细说明。

本发明第一实施例提供了一种访问控制策略的处理方法,该方法的流程如图1所示,包括步骤s101至s104:

s101,定义访问控制策略中参与运算的对象信息,其中,对象信息至少包括:主体信息、客体信息、动作信息及其属性信息。

具体实现时,上述对象信息还可以根据需求包括更多种信息。

s102,按照预定构建规则为对象信息构建访问控制策略,其中,策略包括:策略的声明部分、策略的判定表达式、访问控制规则列表和策略的处置表达式,访问控制规则列表中的每个访问控制规则均包括规则的判定表达式和规则的处置表达式,判定表达式为逻辑表达式,处置表达式为代码命令。

上述判定表达式为由字段部分、运算符部分、常量部分组成的逻辑表达式及其组合,例如,a>1,或者,a>1&&b<1;上述处置表达式为由操作命令和预定符号组成的多行代码命令。

本发明实施例在构建访问控制策略时增加了判定表达式和处置表达式两部分,判定表达式为逻辑表达式,可以判定不同情况,处置表达式为代码命令,在判定表达式判定结果为真时,即可以执行处置表达式。

为了避免构建的访问控制策略存在错误的规则,还可以检测访问控制策略中的各个判定表达式和各个处置表达式是否存在错误;在存在错误的情况下,发送提示信息,如果没有错误,则进行后续处理。

s103,将访问控制策略进行预定处理,以转换为访问控制策略的执行者能够识别的数据格式,并将数据格式的访问控制策略存储到访问控制策略列表中。

判定表达式是逻辑表达式,处置表达式是代码命令,通常情况下访问控制的主体是计算机程序,但上述两种表达式都不是计算机可以识别的数据格式,因此,需要将两种表达式均进行预定处理,以转换为计算机可识别的数据格式。

具体的,可以将判定表达式转换为通过与运算符和非运算符组成的判定表达式,将转换后的判定表达式转换为表达式树;将处置表达式转换为操作链表。当然,上述只是基础的转换,为了进一步优化处理过程,还可以将包含常用属性部分的表达式前移,进而优先判断。

s104,在接收到访问时,根据接收到的对象信息遍历访问控制策略列表,以执行处置表达式或默认处置表达式对应的操作。

具体实现时,提取访问的对象信息,根据对象信息遍历策略对应的表达式树,以检测访问控制策略列表中是否存在与对象信息相匹配的访问控制策略。在存在匹配的访问控制策略的情况下,遍历规则对应的表达式树,以检测访问控制规则列表中是否存在与对象信息相匹配的访问控制规则;在存在匹配的访问控制规则的情况下,执行规则对应的操作链表中的命令;在不存在匹配的访问控制规则的情况下,执行策略对应的操作链表中的命令。

本发明实施例构建访问控制策略时,对访问控制策略的组成进行了重新限定,增加了判定表达式和处置表达式两部分,通过判定表达式判定当前属于何种情况,通过处置表达式执行判定表达式为真时对应的代码命令,丰富了访问控制策略,可以表达复杂的处理关系,即使网络环境再复杂,都可以实现访问。

本发明第二实施例提供了一种访问控制策略的处理装置,该装置的结构示意如图2所示,包括:

定义模块10,用于定义访问控制策略中参与运算的对象信息,其中,对象信息至少包括:主体信息、客体信息、动作信息及相关的属性信息;构建模块20,与定义模块10耦合,用于按照预定构建规则为对象信息构建访问控制策略,其中,策略包括:策略的声明部分、策略的判定表达式、访问控制规则列表和策略的处置表达式,访问控制规则列表中的每个访问控制规则均包括规则的判定表达式和规则的处置表达式,判定表达式为逻辑表达式,处置表达式为代码命令;预处理模块30,与构建模块20耦合,用于将访问控制策略进行预定处理,以转换为访问控制策略的执行者能够识别的数据格式,并将数据格式的访问控制策略存储到访问控制策略列表中;执行模块40,与预处理模块30耦合,用于在接收到访问时,根据接收到的对象信息遍历访问控制策略列表,以执处置表达式或默认处置表达式对应的操作。

具体实现时,上述对象信息还可以根据需求包括更多种信息。

上述判定表达式为由字段部分、运算符部分、常量部分组成的逻辑表达式及其组合,例如,a>1,或者,a>1&&b<1;处置表达式为由操作命令和预定符号组成的多行代码命令。

本发明实施例在构建访问控制策略时增加了判定表达式和处置表达式两部分,判定表达式为逻辑表达式,可以判定不同情况,处置表达式为代码命令,在判定表达式判定结果为真时,即可以执行处置表达式。

判定表达式是逻辑表达式,处置表达式是代码命令,通常情况下访问控制的主体是计算机程序,但上述两种表达式都不是计算机可以识别的数据格式,因此,需要将两种表达式均进行预定处理,以转换为计算机可识别的数据格式。上述预处理模块,具体可以用于将判定表达式转换为通过与运算符和非运算符组成的判定表达式,将转换后的判定表达式转换为表达式树;将处置表达式转换为操作链表。当然,上述只是基础的转换,为了进一步优化处理过程,还可以将包含常用属性部分的表达式前移,进而优先判断。

上述执行模块,具体可以用于:在接收到访问时,提取访问的对象信息,根据对象信息遍历策略对应的表达式树,以检测访问控制策略列表中是否存在与对象信息相匹配的访问控制策略;在存在匹配的访问控制策略的情况下,遍历规则对应的表达式树,以检测访问控制规则列表中是否存在与对象信息相匹配的访问控制规则;在存在匹配的访问控制规则的情况下,执行规则对应的操作链表中的命令;在不存在匹配的访问控制规则的情况下,执行策略对应的操作链表中的命令。

为了避免构建的访问控制策略存在错误的规则,上述装置还可以包括:检错模块,用于检测访问控制策略中的各个判定表达式和各个处置表达式是否存在错误;在存在错误的情况下,发送提示信息,在没有错误的情况下,触发预处理模块工作。

本发明实施例构建访问控制策略时,对访问控制策略的组成进行了重新限定,增加了判定表达式和处置表达式两部分,通过判定表达式判定当前属于何种情况,通过处置表达式执行判定表达式为真时对应的代码命令,丰富了访问控制策略,可以表达复杂的处理关系,即使网络环境再复杂,都可以实现访问。

本发明第三实施例提供了一种访问控制策略的处理方法,该方法用表达式描述访问控制策略,应用该方法,可在访问控制处理过程中将主体和客体的动态属性引入判定计算,从而满足计算机安全系统中准确、高效、灵活的实施访问控制技术的需要。

现有描述访问控制规则的方法均有局限性,具体如下:

信息安全系统的访问控制应用中,主体和客体的定义范围是相对宽泛的,与常规操作系统不同,常规操作系统常规的访问控制主要应用在用户与客体之间,例如用户->文件,然而,信息安全系统中,主体对象则可能是用户、进程、服务、网络地址,客体对象则可能是文件、配置项、账号、进程、线程、设备实例对象、网络地址、数据库中的表和行、api等一切需要防护的系统对象。例如进程->网络地址、网络地址->网络地址、进程->进程等。

信息安全系统中,应用访问控制规则时,主体的属性通常要作为判定条件,而且这些属性可能是动态变化的,采用上述的方法难以在访问控制规则中描述主体的属性。例如,对于一个进程主体,相对稳定的属性可能有进程路径、进程名称、所在会话、启动账号、父进程等,易变的属性可能有线程数、cpu占用、内存占用、io计数等,采用常规的方法无法描述类似在主体进程的内存占用数大于指定的阈值时,禁止其访问目标资源的规则。

信息安全系统中,涉及的对象数量多,访问控制的判定频繁发生,这就要求对其访问控制规则的描述方法在应用时对存储空间的消耗要尽量小,判定流程的执行效率要尽量高,上述常规的描述方法均无法满足。

现有的描述方法,判断依据单一,难以表达复杂的逻辑关系(与、或、非)。

本发明实施例在构建访问控制策略时,每个访问控制策略主要包括以下四个部分:

(1)策略的声明部分:指定策略的标识,适用的客体对象类型,优先级等信息。

(2)触发判定表达式(即策略的判定表达式):其是一个逻辑表达式,判定表达式中可以包含对主体、客体、动作、及环境参数的计算。用于判定在什么情况下,应用本策略的后续判断流程。

(3)访问规则列表:列表中每个规则均包含以下两个部分:

判定表达式(即规则的判定表达式),是一个逻辑表达式,描述在什么情况下应用本条规则的处置方法。判定表达式里可以包含对主体、客体及环境参数的计算。

处置表达式(即规则的处置表达式),由一行或多行命令组成。用于指定在判定表达式的计算结果为真时,所要进行的处置,这里处置方法可包括(但不限于)对访问的允许/拒绝、审计及对特定对象的操作。

在访问判定过程中,依次处理判定表达式和处置表达式。

(4)默认处置表达式(即策略的处置表达式),由一行或多行命令组成,也可以为空。用于指定在没有命中上述的访问规则时,对此访问的默认处置方法。

其中,关于判定表达式有:

1)逻辑表达式,即其计算结果为真或假。

2)判定表达式可由多个部件组合,其间可应用“与”、“或”、“非”等逻辑运算符。

3)对于每个部件,由<字段>+<运算符>+<常量>组成,具体的:

字段:可以是预定义的主体属性标识、客体属性标识、其它代表特定环境变量的标识或一个预定义的函数。每个字段的值是区分类型的(如整数、字符串、二进制数据等)。

运算符:除了常规的比较运算符(等于,大于,小于,大于等于,小于等于,不等于)之外,还可以定义扩展的运算符,例如“包含”、“匹配”。

常量:可以是整数、字符串、二进制数据。

其中字段和常量的类型需要匹配;运算符的可用性也跟类型相关,例如对于非数字类型的字段或常量,不适用大小比较运算符。

4)可以用括号括起一个表达式,使其作为另一个表达式中的部件。

关于处置表达式,则有:

1)处置表达式的内容可由多行操作命令组成,其间可用特定符号分隔(例如西文的分号)。

2)处置表达式的命令可能是以下三种:

访问控制操作:阻断、放行相关操作的命令,例如”deny”、“permit”。

审计操作:指定产生审计事件的命令,由命令行形式组成,例如:audit(‘进程’,subject.name,action,object.type,object.name)。

对相关对象的操作命令。其可包括:主体操作,例如:subject.set_trust_flag();客体操作,例如:object.delete();环境参数的操作,例如:g_alarmcount.inc()。

本发明实施例的访问控制策略在具体实施的过程中主要包含以下步骤:

(一)定义访问控制策略执行者中可参与运算的对象(主体、客体及其相关属性和操作)、动作及环境参数。需要建立对象及其相关属性、操作的文本标识到执行者内部可识别的常量标识(通常可用枚举值表示)。具体有:

定义所有可能参与运算的操作符,包括逻辑操作符(与、或、非),比较操作符及其适用的数据类型。

定义对主体、动作、客体的分类标识。

各对象类型的文本标识和常量标识(例如:进程,“proc”,1)。

对象的通用属性的文本标识和常量标识(例如:”name”、”time”)。

对象各属性的文本标识、常量标识及其类型标识。

对象各操作的文本标识和常量标识,以及操作相关的参数值类型。

(二)在采用本发明方法描述的访问控制策略下发到执行者之前,应该经过“文本”-“二进制”的转换。具体包括:

(1)策略中的判定表达式应转换为执行者可解析的表达式树,关于判定表达式树,具体有:

表达式树是二叉树。

表达式树上的每个非叶节点都是一个运算符对应的常量标识。

表达式树上的每个左叶节点,存放的都是字段的常量标识。

表达式树上的每个右叶节点,存放的都是常量。

表达式树可转换成二进制数据存储格式。

(2)为了提高执行者对表达式的计算效率,可对判定表达式进行如下的优化处理:

将表达式可转换为与非式,即将表达式中的“或”运算符去掉,转换成等价的与非式。

在参与与关系运算的表达式中,按计算规模小的表达式前置。

(3)策略中的处置表达式应转换为执行者可解析的操作链表,即将每个操作从描述的文本转换为预定义的用来存放操作的常量标识和操作参数的数据结构,按次序存储到二进制的数组中。

(三)对于访问策略执行者,其通用的处理流程包括:

(1)策略处理:在接收到上层经转换的二进制格式的策略后,解析策略,并按策略的优先级别将其组织到策略列表中。

(2)访问控制处理:在访问发生时,提取出主体、客体、动作的信息,遍历策略列表,按每一条策略如下处理:

a.触发判定,即根据策略的触发判定表达式树,按“深度优先”进行表达式树的遍历计算,在返回值为真的情况下继续处理,返回值为假时忽略当前策略,继续遍历下一策略。

b.在触发判定命中的情况下,按次序遍历访问控制规则列表:

1.判定,对访问控制规则中的判定表达式树,按“深度优先”进行遍历计算,如返回为真则进行本规则的处置,如返回值为假则忽略当前规则,继续遍历下一规则。

2.处置,在判定本访问控制规则命中后,逐条执行处置操作列表中的命令,如果处置中包含了明确的阻断或放行操作,则完成本次访问控制处理;否则,继续本策略后续的访问控制规则处理及后续策略的处理。

c.默认处置,在没有命中任何本策略的访问控制规则列表,执行默认处置操作列表中的操作,同样,如果处置中如果包含了明确的阻断或放行动作,则完成本次访问控制处理;否则继续后续策略的处理。

下面结合具体示例对本发明实施例上述过程进行详细说明,该实例为windows的网络访问控制实现。

windowsvista之后的操作系统新增的windowsfilteringplatform(wfp)组件提供了网络过滤支持,除了常规的主机防火墙实现外,wfp还支持开发者通过编写wfpcallout驱动程序的方式对网络流量进行更复杂的过滤操作。

本实施例基于wfp,阐述使用本发明提出的访问控制策略描述方法构造一个针对tcp协议的网络访问控制系统的方法和步骤。

系统由用户程序和wfpcallout驱动程序(以下简称callout驱动)两部分组成。其中:

1、用户程序主要负责:

解析用户输入的访问控制策略文本,包括相关表达式语法的正确性。

将访问控制策略转换callout驱动所需要的二进制格式。

创建wfp过滤器,将过滤规则下发到callout驱动。

2、callout驱动,工作在windows的内核层,是本实施例的访问控制策略执行者,具体负责:

a)在指定的网络分层位置上创建过滤器实例。本实施例的过滤器规则工作在wfp中定义的applicationlayerenforcement(ale)层上,在ale层的过滤器能够捕获tcp/ip协议中的监听、连接、数据传输等网络流量,包括操作相关的进程信息。

b)接收用户程序下发的二进制格式的访问控制策略,维护访问控制策略列表。

c)判定表达式树和处置表达式的计算,主要是将相应的操作符和命令替代成驱动中对应的函数指针。

d)在过滤器拦截到网络流量时,遍历访问控制策略列表,判定是否命中策略及相关规则,进行相关的处置。

本实施例的具体方法如下:

一、按照本发明详细描述中的方法,本实施例定义了相关的对象、相关属性和操作(相关的常量取值定义在本实施例中没有明确指定,原则上不重复即可):

(1)操作符:

逻辑操作符包括:与(&&),(||),(!)。

比较操作符包括:

大于(>),小于(<),大于等于(>=),小于等于(<=),这些操作符仅适用于整数比较;

等于(=),不等于(!=),适用于整数、字符串和二进制类型的数据;

匹配(~=),此操作符适用于字符串的模糊匹配,其右侧的操作数可以是包含通配符的字符串;

包含(@),此操作符适用于二进制数据,其右侧的操作数是用base16或base64表示的二进制数据。

(2)主体、客体及动作的分类标识:

主体:subject。可用作主体的对象类型有:进程:proc;远端网络地址:remote_addr;本地网络地址:local_addr。

客体:object。可用作客体的对象类型有:远端网络地址:remote_addr;

本地网络地址:local_addr;数据:data。

动作:action。具体定义的动作类型有:监听:listen;连接:connect;断开连接:disconnect;发送:send;接收:receive。

(3)对象的通用属性。

名称:name。

(4)对象的属性。

进程对象的属性包括:进程的全路径:proc.path;进程的id:proc.id。

远端网络地址的属性包括:ip地址:remote_addr.ip;端口:remote_addr.port。

本地网络地址的属性包括:ip地址:local_addr.ip;端口:local_addr.port。

数据的属性包括:长度:data.length。

对象的操作包括:

阻断:block();

放行:permit();

审计:audit(desc,…),其中参数1为用户输入的文本,后续可以有任意的字段,例如:主体类型、主体名称、动作、客体类型、客体名称等;

进程对象的操作包括:将进程标记为不可通讯的:proc.set_blocked()。

数据对象的操作包括:

从数据中提取指定的数据:data.get(offset,length),其参数是整数,返回值是二进制数据;

替换数据中的内容:data.replace(data0,data1),其参数是用base16或base64表示的二进制数据,返回值是二进制数据。

二、在用户程序中,主要流程有:

(1)通过命令行或图形界面响应用户对策略的输入,包括:

a.策略的id,优先级。

b.策略的触发判定表达式,例如:

subject.type=”proc”&&action=”listen”,即在进程开始监听网络连接时进入判断流程。

c.策略的访问控制规则列表,例如:

判定表达式:local_addr.port=8010&&proc.name=”myapp.exe”;

处置表达式:block();audit(“禁止开放8010端口”,subject.name);

本规则的含义即:在myapp.exe进程尝试监听8010端口的tcp连接时,阻断该操作,并发送相应的报警。

d.默认处置操作:例如,audit(“开放8010端口”,subject.name);其含义是产生一条审计信息,并继续后续的策略匹配。

(2)解析用户输入的各表达式,如果输入有错误则给出相应的提示,可能的错误有:

错误的字段、错误的操作符、错误的常量输入、不匹配的数据类型、错误的括号嵌套等。

将策略转换为二进制格式,具体有:

a.将判定表达式转换为表达式树,例如,对于:local_addr.port=8010&&proc.name=”myapp.exe”,其表达式树的图示如图3。

b.可对处置表达式进行优化,以提高判定效率,具体有:

转换成与非式:即将与、或、非组成的逻辑表达式转换为仅包含与、非运算符的等价表达式。

例如:proc.name=”myapp.exe”||proc.name=”ieapp.exe”)&&local_addr.port=8010可转换为!(proc.name!=”myapp.exe”&&proc.name!=”ieapp.exe”)&&local_addr.port=8010。

将包含常用属性的表达式部件前移,优先判断。例如,上例的表达式可以转换为local_addr.port=8010&&!(proc.name!=”myapp.exe”&&proc.name!=”ieapp.exe”)(因为端口的数字比较要比进程名的字符串匹配效率高)。

c.将处置表达式转换为操作链表。

d.将相应的数值、表达式树、链表,转换为二进制数据格式的策略数据。

将策略数据作为过滤器的参数通过wpf相关的api(fwpmfilteradd等)下发到底层的wpf引擎,进而到callout驱动。

三、callout驱动是本系统中访问控制策略的执行者,其主要流程有:

(1)使用fwpscalloutregisterapi注册ale层各操作(监听、连接、数据传输等)的callout,指定相关的分层id、通知回调函数和过滤回调函数。

(2)在通知回调函数中,响应上层api新建过滤器的通知,从参数中提取出策略数据并将其转换为本驱动内的数据结构。具体有:

将策略表达式树中的操作符节点替换成对应的函数指针。例如,等号操作符(=)替换成指向boolcompare(expr*op1,expr*op2)类型的函数指针。

将相关的处置操作转换为对应的函数指针。例如,block()操作转换成指向boolblock(void*context)类型的函数指针。

将转换后的数据结构设置到过滤器的上下文中,以便过滤回调函数中使用。

(3)在ale层的各过滤回调函数中。

提取出主体和客体中需要参与表达式计算的属性值。

进行触发判定表达式的计算,在结果为真时,继续后续的访问控制规则匹配;否则返回。

进行访问控制规则的匹配,在访问控制规则的判定表达式计算的返回值为真的情况下,执行对应的处置操作,如果处置操作中包含显式的阻断或放行操作,则返回过滤结果;否则继续后续的访问控制规则匹配处理。

在没有命中任何访问控制规则后,执行默认的处置操作。

应用本发明提出的访问控制描述方法,可以构造出灵活、高效的访问控制系统。具体有如下:

适用复杂的逻辑表达:相对传统的访问控制列表,应用逻辑表达式进行判断能够处理各种复杂的访问控制需求。高效:在表达式的计算过程中,对表达式树的遍历计算规模要比一般的访问控制列表依次匹配计算效率高。低资源占用:使用表达式描述的判定条件,可以仅引用相关的输入,相对于常规的采用定长数据结构描述访问控制规则的方法,存储空间的占用是较低的。

此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本发明的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。

以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本发明。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本发明的主题可以少于特定的公开的实施例的全部特征。从而,以下权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本发明的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。

以上对本发明多个实施例进行了详细说明,但本发明不限于这些具体的实施例,本领域技术人员在本发明构思的基础上,能够做出多种变型和修改实施例,这些变型和修改都应落入本发明所要求保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1