具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
图1为本说明书披露的一个实施例的实施场景示意图。如图1所示,实施例中方案的总体思路是,将传统集中式的决策架构改变为分布式决策架构,采用多个策略处理部,或称为策略决策点PDP(policy decision point),对请求进行评估。为此,预先对规则集进行预处理,对其进行分组和聚类,使得各个PDP分别对应处理不同的规则组。
具体地,在预处理过程中,首先根据规则集中各条规则的执行主体,将规则划分为多个主体策略集,每个主体策略集包括具有相同执行主体的多个规则。进一步地,对于各个主体策略集,根据其中包括的规则之间的相似度,将规则聚类为规则类簇,并确定各个规则类簇对应的特征规则。在下面的描述中,一个规则类簇所包含的规则的组合又被称为策略,规则类簇对应的特征规则又被称为策略的质心。
与此对应地,每个PDP对应于一个主体策略集(也就是对应于一个执行主体),并加载该主体策略集中包括的多个规则类簇和特征规则。在获取到请求时,首先由分发中心将该请求分发到与该请求具有相同执行主体的对应PDP,由该对应PDP进行进一步处理。对应PDP接收到请求之后,从其中加载的多个特征规则中确定出与该请求最接近的特征规则,并据此将该请求分配到与该最接近的特征规则对应的规则类簇中。然后,将上述请求与分配到的规则类簇中的各条规则进行匹配,从而对请求进行决策。
通过以上过程可以看到,根据说明书实施例的方案,对规则进行了多层次的分组和聚类,并采用分布式的策略处理部PDP分别基于不同的规则组对请求进行决策。如此,一方面可以通过分布式决策架构并行处理更多请求,另一方面,通过对规则进行分组和聚类,极大缩减需要对比匹配的规则数目,降低决策时间,提升评估性能。下面描述以上思路的具体实施过程。
首先,描述对规则集的预处理阶段。
图2示出根据一个实施例的处理规则集的方法,该方法可以由任何具有计算、处理能力的装置、设备、平台、系统来执行。如图2所示,该方法包括:步骤21,获取预定规则集,所述预定规则集中的各条规则包括执行主体、执行描述和判断结果;步骤22,根据各条规则的执行主体,确定多个主体策略集,每个所述主体策略集包括具有相同执行主体的多个规则;步骤23,对于各个主体策略集,根据其中包括的多个规则之间的相似度,将所述多个规则聚类为多个规则类簇;步骤24,对于所述多个规则类簇,确定各个规则类簇对应的特征规则。下面描述上述各个步骤的具体执行方式。
首先,在步骤21,获取预定规则集。一般地,规则集中包含大量的规则。如前所述,规则是用于对请求进行评估的数据。因此,一条规则至少会包括执行主体、执行描述和判断结果,据此限定,执行主体(某人)按照执行描述进行操作(做某事)判断结果如何(是否允许)。
下面示出一个示例规则集,该规则集中包含如下12条规则:
Rule={1,Tester,Write,D:/coder,11:00<Time<18:00,perimit}
Rule={2,Coder,Open,D:/coder,9:00<Time<11:00,deny}
Rule={3,Tester,Write,D:/text,7:00<Time<8:00,permit}
Rule={4,Tester,Read,D:/coder,13:00<Time<18:00,deny}
Rule={5,Coder,Write,D:/document,15:00<Time<18:00,permit}
Rule={6,Developer,Read,D:/text,11:00<Time<12:00,deny}
Rule={7,Tester,Open,D:/coder,10:00<Time<13:00,permit}
Rule={8,Administrator,Read,D:/text,11:00<Time<15:00,deny}
Rule={9,Coder,Read,D:/coder,1:00<Time<7:00,deny}
Rule={10,Developer,Open,D:/document,00:00<Time<1:00,permit}
Rule={11,Manager,Open,D:/document,1:00<Time<2:00,permit}
Rule={12,Coder,Read,D:/document,1:00<Time<3:00,deny}
可以看到,上述各条规则定义中,都包含执行主体,执行描述和判断结果。例如,第一条规则,即编号为1的规则,包含的执行主体为tester,执行描述为(write,D:/coder,11:00<Time<18:00),即在11:00到18:00之间向D:/coder执行写操作,判断结果为允许(permit)。
可以理解,实际操作中,规则集中的规则数量往往远远大于示例的数量,规则的执行描述也可能与上述示例规则不同。
对于步骤21获取的规则集,在步骤22中,根据各条规则的执行主体,确定多个主体策略集,使得每个主体策略集包括具有相同执行主体的规则。也就是,按照执行主体,将规则集中的规则划分为多个主体策略集,一个主体策略集对应一个执行主体。
图3示出根据一个实施例的确定主体策略集的流程图,也就是,上述步骤22的子步骤。如图3所示,为了确定主体策略集,在步骤31,从规则集中获取某条规则i;在步骤32,获取规则i的执行主体;在步骤33,判断是否存在与该执行主体相对应的主体策略集。如果存在对应的主体策略集,那么在步骤34,将该条规则i添加到对应的主体策略集;如果不存在对应的主体策略集,那么在步骤35,新建与该执行主体对应的主体策略集,并将该条规则i添加到该新建的主体策略集。之后,获取下一条规则,即使得i=i+1,直到遍历规则集中的所有规则。
根据图3所示的方法,遍历前面示出的示例规则集的12条规则,可以确定出5个主体策略集:主体策略集S1包括规则(1,3,4,7),对应的执行主体为Tester;主体策略集S2包括规则(2,5,9,12),对应的执行主体为Coder;主体策略集S3包括规则(6,10),对应的执行主体为Developer;主体策略集S4包括规则8,对应的执行主体为Administrator;主体策略集S5包括规则11,对应的执行主体为Manager。
在一个实施例中,考虑到某些主体策略集只包含一条规则,后续没有必要对其进行聚类处理,因此,可以将这样的主体策略集合并为一个单独的分类,称为单例策略集。
相应地,如图3中虚线框所示,在遍历预定规则集中全部规则之后,在步骤36,将只包含一条规则的主体策略集合并为单例策略集。单例策略集中包括一条或多条规则。在包括多条规则的情况下,这多条规则中任意两条规则都具有不同的执行主体。
对于前述的示例规则集,可以将前述的主体策略集S4和S5合并为一个单例策略集。如此,将整个规则集划分为3个主体策略集S1-S3,和一个单例策略集,每个主体策略集中包括具有相同执行主体的多个规则。
在获得各个主体策略集之后,在步骤23,对于各个主体策略集Si,根据其中包括的多个规则之间的相似度,将多个规则聚类为多个规则类簇。
可以理解,聚类的目的是形成规则类簇,使得每个类簇中的规则有很高的相似度,这样在后续对规则进行搜索和匹配时将会减少回溯的次数,从而提高搜索效率。
在一个实施例中,将各个规则转换为规则向量,然后将各个规则向量映射为多维空间中的点,采用聚类算法对各个规则对应的点进行聚类,从而得到多个规则类簇。其中,可以采用多种方式进行向量转换,例如Word2Vec,Node2Vec等,从而将一条规则转换为一个规则向量。现有技术中存在多种聚类算法,例如K-means算法等,可以对多维空间的点进行聚类。聚类过程中,采用点之间的距离作为对应规则之间的相似度的评价指标,即认为两个点的距离越近,其相似度就越大。聚类结果包含的相近点的类簇,即对应于相似度较高的规则类簇。
在另一实施例中,基于主体策略集中各个规则之间的相似度,形成相似度无向图,利用图分割方式进行聚类,从而将多个规则聚类为多个规则类簇。换而言之,首先将规则之间的相似关系转化为相似度无向图,相应地,将聚类问题转化为图的分割问题。
图4示出根据一个实施例基于相似度无向图进行规则聚类的方法流程,即步骤23的子步骤。
如图4所示,首先在步骤41,获取某个主体策略集Si所包括的规则,假定该主体策略集Si中包括第一数目N个规则。
接着在步骤42,在N个规则中,确定任意两条规则之间的相似度。
如前所述,各个规则除了包含执行主体,还包括执行描述,用于描述操作执行过程。在一个实施例中,基于执行描述确定规则之间的相似度。具体地,获取任意的第i规则和第j规则各自的执行描述,根据所述执行描述,确定第i规则和第j规则之间的相似度。注意,该步骤中的N个规则是同一主体策略集中的规则,具有相同的执行主体,因此在计算相似度时无需再考虑执行主体。
在一个实施例中,根据执行描述确定第i规则和第j规则之间的相似度可以包括,确定第i规则的执行描述和第j规则的执行描述之间的文本相似度,基于文本相似度确定第i规则和第j规则之间的相似度。
在另一实施例中,进一步地将执行描述拆分为多个属性,确定两个规则之间的属性相似度,进而确定规则之间的相似度。更具体地,执行描述包括的属性可以有,执行动作,执行资源,执行条件等。例如,前述的示例规则集中的规则1的执行描述为(write,D:/coder,11:00<Time<18:00),其中write为执行动作,D:/coder为执行资源,11:00<Time<18:00为执行条件。
可以理解,执行描述还有可能包含其他属性或者更多的属性;或者上述举例的属性还可以进一步包括子属性,例如在前述例子中,执行条件实际上包括了时间条件11:00<Time<18:00,但是还可以设定其他执行条件,例如请求的IP地址区段等。
在执行描述包括多个属性的情况下,确定第i规则和第j规则之间的相似度可以包括:首先确定第i规则和第j规则对应属性之间的属性相似度;然后根据为各个属性预设的权重,计算第i规则和第j规则各个属性的属性相似度的加权和,将所述加权和作为第i规则和第j规则之间的相似度。
例如,在执行描述包括执行动作,执行资源,执行条件这3个属性的情况下,可以将两条规则之间的相似度SimilarityDegree定义为:
SimilarityDegree=w1*ASD1+w2*ASD2+w3*ASD3 (式1)
其中,ASD为属性相似度,w为属性的权重。
更进一步地,属性相似度可以定义为:
即,如果两条属性相等,则其属性相似度为1,否则为0。
在一些情况下,有些属性表现为一个范围或区间,例如前面的执行条件实际上是一个时间区间。在一个实施例中,如果两个区间完全相等,则将其属性相似度定义为1,否则为0。在另一实施例中,如果两个区间一个完全覆盖另一个,可以将其相似度定义为0.5。属性相似度的具体定义方式可以根据属性本身的属性值范围灵活设置和修改。
由于在将请求与规则进行匹配时,执行动作、执行资源、执行条件三个属性是按照先后顺序进行匹配的,当前面的属性不匹配时,后面的属性不需要再进行匹配,因此在属性的权重分配上可以给在前面的属性分配更高的权重。例如,在一个例子中,对于执行动作、执行资源、执行条件这三个属性各自的权重W1、W2、W3,分配为0.6、0.3、0.1。
例如对于以下三条规则:
Rule={1,Tester,Write,D:/coder,11:00<Time<18:00,perimit}
Rule={2,Tester,Open,D:/coder,9:00<Time<11:00,deny}
Rule={3,Tester,Write,D:/text,7:00<Time<8:00,permit}
按照公式1和公式2的计算方式,以及按照0.6,0.3和0.1的权重分配,可以计算规则之间的相似度结果为:
Rule1,Rule2的相似度为0.6*0+0.3*1+0.1*0=0.3;
Rule1,Rule3的相似度为0.6*1+0.3*0+0.1*0=0.6;
Rule2,Rule3的相似度为0.6*0+0.3*0+0.1*0=0。
在获得N个规则中任意两条规则之间的相似度的基础上,在步骤43,将这N个规则作为顶点,以任意两条规则之间的相似度作为对应的任意两个顶点之间连线的权值,形成相似度无向图。换而言之,相似度无向图可以定义为G=(V,E),顶点集V表示各个规则,带权值的边(连线)表示各个规则之间的相似度。可以理解,在形成相似度无向图时,可以仅连接权值大于0的顶点(规则),如果两个规则之间相似度为0,即两个顶点之间连线权值为0,则意味着不进行连接。
在一个例子中,假定某个主体策略集Si包括以下10条规则:
Rule={1,Tester,Write,D:/coder,11:00<Time<18:00,perimit}
Rule={2,Tester,Open,D:/coder,9:00<Time<11:00,deny}
Rule={3,Tester,Write,D:/text,7:00<Time<8:00,permit}
Rule={4,Tester,Read,D:/coder,13:00<Time<18:00,deny}
Rule={5,Tester,Write,D:/document,15:00<Time<18:00,permit}
Rule={6,Tester,Read,D:/text,11:00<Time<12:00,deny}
Rule={7,Tester,Open,D:/coder,10:00<Time<13:00,permit}
Rule={8,Tester,Read,D:/text,11:00<Time<15:00,deny}
Rule={9,Tester,Read,D:/coder,1:00<Time<7:00,deny}
Rule={10,Tester,Open,D:/document,00:00<Time<1:00,permit}
为了后续描述方便,将上面的10条规则称为示例规则组1。
图5示出针对以上示例规则组1形成的相似度无向图。
在一个实施例中,还可以基于各个规则之间的相似度生成相似度矩阵。例如,相似度矩阵中的元素aij表示规则i和规则j之间的相似度。该相似度矩阵可以作为相似度无向图的矩阵描述形式,便于后续的一些运算。
在得出规则的相似度无向图之后,在步骤44,基于相似度无向图进行图分割,从而将N个规则聚类为多个规则类簇。
换而言之,在步骤44,通过图分割的方式实现规则聚类。可以理解,聚类的目标是使得,聚类后同一类簇中的规则之间具有较高相似度,不同类簇的规则之间具有较低相似度。那么对应地,转化为图分割问题后,图分割的目标即为,找到一种合理的分割图的方法,使得分割后形成若干个子图,连接不同子图的连线的权值(对应于相似度)尽可能低,同子图内的连线的权值(相似度)尽可能高。或者说,在将相似度图分割为若干子图时,被切断的连线的权值之和尽可能小,而权值比较大的边没有被切断。因为只有这样,才能让比较相似的顶点被保留在同一个子图中,而彼此之间联系不大的顶点则被分割开来。
更一般地说,为了进行图分割,也就是规则聚类,需要基于图中顶点之间的权值确定目标函数,并使得目标函数最小化。也就是,步骤44进一步包括以下过程:首先确定要形成的多个规则类簇的数目k,也就是要分割的子图的数目k。在一个实施例中,k的数目由设计人员根据要聚类的规则数目以及根据经验预先设定。在确定目标类簇数目k之后,基于k个子图中各个子图之间被切断的连线的权值,确定目标函数,确定目标函数最小情况下对应的分割方式即为比较优选的分割方式。目标函数最小情况下形成的k个子图即对应k个规则类簇。
在一个实施例中,设A1…Ak为相似度无向图G的k个子集,或k个子图,可以将目标函数定义为:
其中,Ai表示第i个子图,
表示Ai的补集,
表示Ai子图与
之间所有边的权值之和。根据式3的定义,目标函数Cut值最小时,被切断边的权值之和最小。因此,在一个实施例中,确定式3中目标函数最小情况下k个子图的分割方式,进而确定出规则聚类的结果。
然而,在一些情况下,仅仅最小化式3中的Cut值并不能得到最好的分割方式。例如,如果要将n个顶点的图分成2个子图,根据式3最小化,会将图分成一个点和其余的n-1个点。然而,这并不是最优的分割方法,因为其中一个子图包含的顶点太少了。
在一个实施例中,进一步考虑分割后子图中顶点数目,来定义目标函数,从而进一步优化图分割过程。具体地,在一个实施例中,将目标函数定义为,不仅依赖于各个子图之间被切断的连线的权值,还依赖于各个子图包含的顶点数目。
更具体地,在一个例子中,将目标函数定义为:
其中,|Ai|表示Ai子图中包含的顶点数目。
目标函数足够小,意味着,被切断边的权值之和尽可能小,同时各个子图有合理大小,包含顶点数目足够多。在这样的情况下,规则聚类问题转化为,如何找出令目标函数RatioCut达到最小的分割k个子图的方案。
通过数学分析,独创性地发现,这样的目标函数RatioCut与图论中的拉普拉斯矩阵有着密切的联系。
拉普拉斯矩阵又称为导纳矩阵、基尔霍夫矩阵或离散拉普拉斯算子,是图论中一个图的矩阵表示。给定一个有n个顶点的图G={V,E},其拉普拉斯矩阵被定义为:
L=D-W,其中L为图的拉普拉斯矩阵,D为图的度矩阵,W为图的邻接矩阵。
进一步地,度矩阵D是这样形成的:与顶点某邻接的所有边的权值和定义为该顶点的度d,多个d形成一个度矩阵
显然,度矩阵是个对角矩阵。
邻接矩阵W的定义如下:A子图与B子图之间所有边的权值之和定义如下:
其中,wij定义顶点i到顶点j的权值,如果两个顶点是不相连的,权值为0。
例如,对于某个相似度无向图,其度矩阵D可以为:
拉普拉斯矩阵L如下:
拉普拉斯矩阵L作为图的一种矩阵表示,具有如下的性质:
性质①:L是对称半正定矩阵。
性质②:L1=01,即L的最小特征值0,相应的特征向量是1。证明:L*1=(D-W)*1=0=0*1
性质③:L有n个非负实特征值0=λ1≤λ2≤...≤λn
性质④:对于任何一个属于实向量f∈Rn,有以下式5成立:
证明如下:
事实上,以上的式5为拉普拉斯矩阵L与式4的目标函数的关联建立了基础。
我们可以这样定义向量f:
f=(f1,f2,...fn)′∈Rn (式6)
其中:
其中Vi为图G中某个顶点,Ai为前述式3和式4中均提到的第i子图。
将式6和式7代入到式5中,可以得到:
由上述推导过程我们可以看出,拉普拉斯矩阵L和式4中要优化的目标函数RatioCut有着密切的联系。进一步说,因为|V|是一个常量,所以最小化RatioCut,等价于最小化f'Lf。
同时,因单位向量的各个元素全为1,所以直接展开可得到约束条件:
||f||2=∑fi2=n且f′1=∑fi=0
推导过程如下:
再次引入特征向量和特征值的定义:
若数字λ和非零向量
满足
则
为A的一个特征向量,λ是其对应的特征值。假定Lf=λf,其中λ是特征值,f是L的特征向量。上式等号两边同时左乘f′,得到f′Lf=λf′f,而f′f=n,其中n为图中顶点的数量之和,因此f′Lf=λn,相当于就是要最小化λ。
因此要使得目标函数RatioCut最小化,只要找到拉普拉斯L矩阵的最小特征值λ及对应的特征向量即可。
根据拉普拉斯矩阵L的性质②可知,L最小的特征值为零,并且对应的特征向量正好为1,该特征值不满足f⊥1的条件。根据论文“A Tutorial on Spectral Clustering”中所说的Rayleigh-Ritz理论,我们可以取第2小的特征值,以及对应的特征向量。
更进一步,由于实际中,特征向量里的元素是连续的任意实数,所以可以根据是大于0,还是小于0对应到离散情况下的f=(f
1,f
2,...f
n)′∈R
n,决定f是取
还是取
而如果能求取到前K个特征向量,便可以进行K个类簇的聚类。
通过以上数学分析可知,若要最小化式4中的目标函数,得到最优的k个子图,也就是k个规则类簇,我们可以求出原图的拉普拉斯矩阵L的特征向量和特征值,按照特征值从小到大的顺序排序,特征值对应的特征向量也按照特征值递增的顺序排列。选取前k个非零特征值对应的特征向量,便是所需的前k个特征向量,接下来对这k个特征向量进行聚类,便可以对应到原相似度无向图的子图划分。
图6示出在一个实施例中基于拉普拉斯矩阵进行规则聚类的流程步骤,也就是图4中步骤44的子步骤。图6的流程步骤适用于,将相似度无向图的图分割目标函数确定为,依赖于各个子图之间被切断的连线的权值,还依赖于各个子图包含的顶点数目的情况,例如将目标函数确定为式4的形式,或者基于式4进行一些常数运算的情况。在这样的情况下,基于相似度无向图进行图分割,从而将N个规则聚类为多个规则类簇的过程可以包括:步骤61,确定相似度无向图对应的N*N维的拉普拉斯矩阵L;步骤62,确定所述拉普拉斯矩阵L的非零特征值中,从小到大顺序排列的前k个特征值,以及该前k个特征值分别对应的k个N维特征向量;步骤63,将该k个N维特征向量作为k个列向量,形成N*k的特征矩阵;步骤64,将所述特征矩阵的N个k维行向量映射为k维空间的N个特征点,将N个特征点聚类为k个特征点集;步骤65,将所述k个特征点集对应到所述k个规则类簇,其中各个特征点集中特征点在所述特征矩阵中的行号对应于所述第一数目N个规则中的规则编号。
下面结合前面具体给出的矩阵2的例子,描述以上聚类过程。
假定在步骤61,获取到了前述矩阵2作为某个主体策略集中规则的相似度图对应的拉普拉斯矩阵L。可以看到,该矩阵是10*10维矩阵,N=10。
接着,在步骤62,用常规方式求取拉普拉斯矩阵L的特征值和特征向量,并对特征值进行排序。假定获取的特征值如下所示:
在一个例子中,要聚类的类簇数目k,即要分割的子图数目k,被设定为3。那么可以在上述特征值中,选择3个最小的特征值2.5558,2.9273,6.7735,并获取这3个特征值分别对应的特征向量v1,v2,v3,每个特征向量均为10维向量。
接着在步骤63,将该3个10维特征向量作为3个列向量,形成10*3的特征矩阵。假定形成的特征矩阵如下所示:
可以看到,以上矩阵包含3列,各列分别对应特征向量v1,v2和v3。
然后在步骤64,将特征矩阵的N个行向量映射为k维空间的N个特征点,将N个特征点聚类为k个特征点集。对于上面的矩阵3来说,包含10个3维的行向量。现在,以行为基准,把每个行向量视为一个3维空间的点,如此,把特征矩阵映射为3维空间的10个特征点,每一行对应一个特征点,记为P1,P2,…,P10。于是,可以采用各种聚类方法,对空间中的特征点进行聚类,将其聚类为3个特征点集。典型地,可以采用K-means方法进行空间点的聚类。在其他实施例中,还可以采用例如K-MEDOIDS算法,DBSCAN算法等等,进行聚类。
假定对矩阵3对应的10个特征点P1-P10进行聚类的结果为,形成3个特征点集PS1-PS3,其中特征点集PS1包含特征点(P4,P6,P8,P9),特征点集PS2包含特征点(P1,P3,P5),特征点集PS3包含特征点(P2,P7,P10)。
接着,在步骤65,将k个特征点集对应到k个规则类簇,其中各个特征点集中特征点在特征矩阵中的行号对应于N个规则中的规则编号。
基于这样的对应操作,将以上形成的3个特征点集PS1-PS3分别对应为3个规则类簇C1-C3,各个规则类簇包含的规则编号与特征点集中特征点编号相同,即,得到的规则类簇为:
Cluster={{Rule4,Rule6,Rule8,Rule9},{Rule1,Rule3,Rule5},{Rule2,Rule7,Rule10}}
如此,实现了对一个主体策略集中包含的N条规则进行聚类的过程,也就是执行了图2的步骤23。
回到图2,接下来,在步骤24,对于聚类得到的多个规则类簇,确定各个规则类簇对应的特征规则。特征规则是规则类簇所包含的多条规则中,最能代表该类簇的规则。
可以理解,一般地,通过聚类算法,在得到各个类簇的同时,还可以确定出类簇的中心或质心。一般来说,这样的中心或质心是数学上类簇在相应空间中的中心或质心。在将规则聚类为规则类簇的情况下,类簇中心也只是数学上的中心,多数情况下并不对应于某一条具体规则。因此,还需要进一步处理和计算,才能确定出特征规则。
根据一个实施例,确定各个规则类簇对应的特征规则可以如下进行。对于某个规则类簇,首先确定该规则类簇的类簇中心。该类簇中心可以是数学上的类簇中心,例如是类簇中各个点的平均值。
然后,分别确定该规则类簇所包含的各个规则与类簇中心的距离,并将距离最小的规则作为该规则类簇的特征规则。
下面仍然结合以上通过拉普拉斯矩阵L聚类得到的3个规则类簇的例子,描述该过程。
如前所述,在对矩阵3所对应的n=10个特征点进行聚类后,可以得到k=3个特征点集PS1-PS3,PS1=(P4,P6,P8,P9),PS2=(P1,P3,P5),PS3=(P2,P7,P10)。在聚类过程中,还可以得到各个特征点集的质心,由此形成一个k*k维质心矩阵,该矩阵中每一行代表一个聚类的质心。
该矩阵4即为矩阵3聚类后的质心矩阵,其中第一行对应于特征点集PS1的质心位置,第二行对应于特征点集PS2的质心位置,第三行对应于特征点集PS3的质心位置。
接着,对于每个特征点集(对应一个规则类簇),计算其中所包含的各个特征点(对应于规则)与质心的距离,确定出距离最小的特征点,将该特征点对应的规则作为该规则类簇的特征规则。
例如,对于特征点集PS1,分别计算其中的4个特征点(P4,P6,P8,P9)与矩阵3第一行的质心位置的距离,从中确定出距离最小的特征点。根据矩阵3和矩阵4中的实际数值,经过计算可以得出,P4(即矩阵3中第4行的行向量对应的特征点)距离质心最近,因此,将P4对应的规则,Rule4确定为第一个规则类簇的特征规则。
如此,对于各个规则类簇,可以确定出其中距离质心最近的规则作为特征规则。
假定,对于前述的示例规则组1,聚类结果为:
Cluster={{Rule4,Rule6,Rule8,Rule9},{Rule1,Rule3,Rule5},{Rule2,Rule7,Rule10}}
各个规则类簇的特征规则分别为:
第一类簇特征规则:Rule={4,Tester,Read,D:/coder,13:00<Time<18:00,deny}
第二类簇特征规则:Rule={3,Tester,Write,D:/text,7:00<Time<8:00,permit}
第三类簇特征规则:Rule={2,Tester,Open,D:/coder,9:00<Time<11:00,deny}
至此,实现了对规则集的分层级预处理,在第一层级,根据各个规则的执行主体,将规则集划分为主体策略集;在第二层级,对于主体策略集中包含的多个规则进行聚类,得到规则类簇,并确定出各个规则类簇的特征规则。
对规则集的预处理可以通过规则处理装置来执行。图7示出根据一个实施例的规则处理装置的示意性框图。如图7所示,用于对预定规则集进行预处理的处理装置70包括:规则集获取单元71,配置为获取预定规则集,所述预定规则集中的各条规则包括执行主体、执行描述和判断结果;第一确定单元72,配置为根据各条规则的执行主体,确定多个主体策略集,每个所述主体策略集包括具有相同执行主体的多个规则;聚类单元73,配置为对于各个主体策略集,根据其中包括的多个规则之间的相似度,将所述多个规则聚类为多个规则类簇;第二确定单元74,配置为对于所述多个规则类簇,确定各个规则类簇对应的特征规则。
在一个实施例中,所述第一确定单元72进一步包括:规则获取模块721,配置为从所述预定规则集中获取某条规则;主体获取模块722,配置为获取所述某条规则的执行主体;判断模块723,配置为判断是否存在与该执行主体相对应的主体策略集;添加模块724,配置为,如果存在对应的主体策略集,将该某条规则添加到该对应的主体策略集;新建模块725,配置为,如果不存在对应的主体策略集,则新建与该执行主体对应的主体策略集,并将该某条规则添加到该新建的主体策略集。
在一个实施例中,第一确定单元72还包括合并模块(未示出),配置为,在所述预定规则集中全部规则被遍历之后,将只包含一条规则的主体策略集合并为单例策略集。
根据一个实施例,所述聚类单元73包括:规则获取模块731,配置为获取所述多个主体策略集中某个主体策略集Si所包括的第一数目N个规则;相似度确定模块732,配置为在所述第一数目N个规则中,确定任意两条规则之间的相似度;无向图形成模块733,配置为,将所述第一数目N个规则作为顶点,以所述任意两条规则之间的相似度作为对应的任意两个顶点之间连线的权值,形成相似度无向图;分割聚类模块734,配置为基于所述相似度无向图进行图分割,从而将所述第一数目的规则聚类为多个规则类簇。
在一个实施例中,上述相似度确定模块732进一步包括(未示出):描述获取子模块,配置为获取任意的第i规则和第j规则各自的执行描述;相似度确定子模块,配置为根据所述执行描述,确定第i规则和第j规则之间的相似度。
在一个进一步的实施例中,规则中的执行描述包括多个属性,所述多个属性包括执行动作,执行资源,执行条件中的多项。相应地,相似度确定子模块通过以下方式,确定第i规则和第j规则之间的相似度:首先确定第i规则和第j规则对应属性之间的属性相似度;然后根据为各个属性预设的权重,计算第i规则和第j规则各个属性的属性相似度的加权和,将所述加权和作为第i规则和第j规则之间的相似度。
根据一个实施例,分割聚类模块734进一步包括:数目确定子模块,配置为确定要形成的多个规则类簇的数目k;目标函数确定子模块,配置为基于将所述相似度无向图分割为k个子图时,各个子图之间被切断的连线的权值,确定目标函数;类簇确定子模块,配置为确定目标函数最小情况下,k个子图所对应的k个规则类簇。
在一个具体实施例中,上述目标函数确定子模块将目标函数确定为,依赖于各个子图之间被切断的连线的权值,以及各个子图包含的顶点数目。相应地,类簇确定子模块通过以下方式确定目标函数最小情况下,k个子图所对应的k个规则类簇:
确定相似度无向图对应的N*N维的拉普拉斯矩阵L;
确定所述拉普拉斯矩阵L的非零特征值中,从小到大顺序排列的前k个特征值,以及该前k个特征值分别对应的k个N维特征向量;
将k个N维特征向量作为k个列向量,形成N*k的特征矩阵;
将特征矩阵的N个k维行向量映射为k维空间的N个特征点,将N个特征点聚类为k个特征点集;
将所述k个特征点集对应到所述k个规则类簇,其中各个特征点集中特征点在所述特征矩阵中的行号对应于所述第一数目N个规则中的规则编号。
如此,通过聚类单元73对同一主题策略集中的规则进行聚类,得到多个规则类簇。然后,通过第二确定单元74确定各个规则类簇的特征规则。根据一个实施例,第二确定单元74进一步包括:中心确定模块741,配置为对于某个规则类簇,确定该规则类簇的类簇中心;距离确定模块742,配置为分别确定该规则类簇所包含的各个规则与所述类簇中心的距离;规则确定模块743,配置为将距离最小的规则作为该规则类簇的特征规则。
可以理解,上述处理装置70可以由任何具有计算、处理能力的装置、设备、平台、系统来实现。
如此,通过图2所示的方法,和/或图7所示的装置70,对大量规则进行了预处理,将其进行了多层次的分组,为后续的分布式并行高效处理操作请求提供基础。
如前所述,规则是用于对请求进行评估的数据,一条规则至少会包括执行主体、执行描述和判断结果,据此限定,执行主体(某人)按照执行描述进行操作(做某事)判断结果如何(是否允许)。而操作请求一般至少包括,操作主体和操作描述,用于询问,操作主体(某人)请求按照操作描述进行操作(做某事),是否允许。对操作请求进行决策的过程,一般包括,找到与操作请求中的操作主体和操作描述均相符的适用规则,根据该适用规则中的判断结果,来决策是否允许该操作请求。因此,对操作请求进行决策的关键是,从大量规则中匹配出与操作请求对应的适用规则。
而通过图2所示的方法,和/或图7所示的装置70,已经对大量规则进行了预处理,将其按照主体划分为主体策略集,并进一步地将主体策略集中的规则划分为规则类簇。因此,只要对操作请求进行必要的预判断,将其分配到适合的规则组,就只需要与规则组中的少量规则进行比较,就可以实现操作请求与规则的匹配,从而快速地对该请求做出决策。
下面描述在这一思想下,基于上述预处理的处理结果,采用分布式决策系统来处理操作请求的过程。
图8示出根据一个实施例的分布式决策系统的系统架构。如图8所示,分布式决策系统800至少包括分发中心810,以及多个策略处理部821,822…,82m。策略处理部在本文中又称为策略决策点PDP(policy decision point),可以通过任何具有计算、处理能力的装置、设备、平台、系统来实现。一个策略处理部或一个PDP既可以是计算平台或计算系统中的一个计算单元、计算模块,也可以是一个独立的计算设备或计算装置,还可以是由多个计算设备或计算装置构成的计算平台或计算系统。本文对此不作限定。重要的是,多个策略处理部对应不同的规则组,从而可以分布式并行地对操作请求进行决策处理。
分布式决策系统800预先获取对规则集的处理结果,从而根据规则集处理结果来对操作请求进行决策。
在一个实施例中,对规则集进行处理的处理装置,例如图7所示的处理装置70,也包含在分布式决策系统800中。分布式决策系统800预先通过该处理装置对规则集进行处理,从而获取对规则集的处理结果。
在另一实施例中,对规则集进行处理的处理装置,例如图7所示的处理装置70,位于分布式决策系统800之外。在这样的情况下,处理装置70预先执行图2所示的方法对规则集进行处理,分布式决策系统800通过各种适用的通信方式,从处理装置获取对规则集的处理结果。
如前所述,按照图2所示的方法对该规则集进行处理的处理结果可以包括,多个主体策略集,各个主体策略集包括的多个规则类簇,以及各个规则类簇对应的特征规则。相应地,在分布式决策系统800中,多个策略处理部或多个PDP分别与上述多个主体策略集相对应。更进一步地,在一个实施例中,各个策略处理部或PDP,分别加载或者存储对应主体策略集的信息,包括对应主体策略集包括的规则类簇,各个规则类簇对应的特征规则,以及各个规则类簇中包括的规则条目。
在这样的基础上,分布式决策系统800可以基于规则集的处理结果,高效地实现操作请求的决策。
在一个实施例中,在系统接收到操作请求后,首先由分发中心810从多个策略处理部中确定出与操作请求对应的那个策略处理部,并将操作请求分发到该对应的策略处理部。具体地,如前所述,多个策略处理部分别对应多个主体策略集,而每个主体策略集包括具有相同执行主体的规则。换而言之,多个策略处理部分别对应多个执行主体。而操作请求包括操作主体和操作描述。如此,分发中心810从操作请求中提取出操作主体,从而将该操作请求分发到执行主体与该操作主体相同的那个策略处理部。
例如,对于以下三条操作请求:
Request={1,Coder,Write,D:/document,15:00<Time<18:00}
Request={2,Developer,Read,D:/text,11:00<Time<12:00}
Request={3,Tester,Open,D:/coder,10:00<Time<13:00}
分发中心可以确定,它们的操作主体分别为Coder,Deve l oper,Tester,进而将其分发到对应的PDP中:
CoderPDP={Request1},DeveloperPDP={Request2},TesterPDP={Reuqest3}
也就是说,将操作请求1分发到执行主体为Coder的策略处理部,将操作请求2分发到执行主体为Developer的策略处理部,将操作请求3分发到执行主体为Tester的策略处理部。
在一个实施例中,各个策略处理部具有对应的待处理请求队列。相应地,分发中心810分发操作请求时,可以通过将该操作请求添加到对应策略处理部的待处理请求队列中而实现。如前所述,各个策略处理部分别对应于各个主体策略集,而每个主体策略集又聚类为多个规则类簇。相应地,在一个实施例中,策略处理部的待处理请求队列的最大队列长度,也就是可容纳的最多的操作请求数目,依赖于对应主体策略集中包含的规则类簇的数目。
在分发中心810将操作请求分发到对应的策略处理部之后,由对应的策略处理部继续对操作请求进行分析处理。
图9示出在一个实施例中策略处理部对操作请求的处理方法流程。可以理解,图9所示的方法流程是某个策略处理部接收到分发中心分发过来的操作请求之后,针对该操作请求执行的步骤流程。为了描述的简便,下面将该接收到当前操作请求的策略处理部称为第一策略处理部,将其对应的主体策略集称为第一主体策略集。
如图9所示,在该第一策略处理部中,首先在步骤91,确定第一特征规则和第一规则类簇,其中该第一特征规则为,所述第一主体策略集包括的多个规则类簇所分别对应的特征规则中,与所述操作请求之间相似度最高的特征规则;所述第一规则类簇为,与所述第一特征规则相对应的规则类簇;
步骤92,将操作请求与第一规则类簇中包括的各条规则进行匹配,从而确定出与操作请求相匹配的第一规则;
步骤93,根据第一规则中包括的判断结果,确定对所述操作请求的决策结果。
在一个实施例中,步骤91中确定第一特征规则进一步包括:获取所述第一主体策略集包括的多个规则类簇所分别对应的多个特征规则;计算操作请求与上述多个特征规则中各个特征规则之间的相似度;将最大相似度对应的特征规则作为所述第一特征规则。
更具体而言,在一个实施例中,规则中包括的执行描述包括多个属性,所述多个属性包括执行动作,执行资源,执行条件中的多项;并且,操作请求中所包含的请求描述包括与执行描述相对应的属性。在这样的情况下,可以通过以下方式,计算操作请求与多个特征规则中各个特征规则之间的相似度:
首先确定操作请求的请求描述和各个特征规则i的执行描述所包括的对应属性之间的属性相似度;
然后,根据为各个属性预设的权重,计算所述请求描述和特征规则i的执行描述之间各个属性的属性相似度的加权和,将所述加权和作为所述操作请求与特征规则i之间的相似度。
可以看到,上述计算相似度的过程,与对规则集进行预处理阶段中,计算两个规则之间的相似度的过程是类似的。在一个实施例中,步骤91中属性相似度的确定方式,以及为各个属性预设的权重,可以与图4的步骤42中对应一致。
如此,通过步骤91确定出,当前操作请求与哪个规则类簇最接近。接着,在步骤92,将当前操作请求与该最接近的规则类簇中的规则进行匹配,从而确定出最适用的规则,即第一规则。更具体地,在一个实施例中,步骤92进一步包括,将当前操作请求中的请求描述与第一规则类簇所包括的各条规则的执行描述进行比对;将所述请求描述完全符合的执行描述所对应的规则作为所述第一规则。
于是,在步骤93,根据第一规则中包括的判断结果,就可以对操作请求进行决策。
下面结合具体例子描述上述过程。
在一个具体例子中,当前操作请求为:
Request={1,Coder,Write,D:/document,15:00<Time<18:00}
经过分发,该操作请求被分发给执行主体为Coder的策略处理部,该策略处理部被称为第一策略处理部。
如前所述,各个策略处理部对应于一个主体策略集。假定该执行主体为Coder的第一策略处理部对应于第一主体策略集,并且该第一主体策略集被聚类为3个规则类簇,C1,C2和C3,这三个规则类簇各自的特征规则分别为:
Rule={1,Coder,Write,D:/coder,11:00<Time<18:00,perimit}
Rule={9,Coder,Read,D:/coder,1:00<Time<7:00,deny}
Rule={5,Coder,Write,D:/document,15:00<Time<18:00,permit}
那么,第一策略处理部在上述步骤91中,可以分别计算操作请求与上述3个特征规则的相似度(SD:Similarity Degree)如下:
Rule1SD=0.6*1+0.3*1+0.1*1=1;
Rule2SD=0.6*0+0.3*0+0.1*0=0;
RuleSD=0.6*1+0.3*0+0.1*0=0.6。
可以看到,在计算相似度的过程中,是将操作请求的操作描述中的属性(动作write,资源D:/coder和条件15:00<T<18:00)分别与各个规则的执行描述中的对应属性相比较,得出各个属性的属性相似度,然后根据各个属性的预设权重,将属性相似度的加权和作为操作请求与特征规则的相似度。
通过比较,相似度最高的是Rule1,因此将Rule1确定为第一特征规则;相应地,将Rule1对应的规则类簇C1作为第一规则类簇。
然后,在步骤92,将操作请求与第一规则类簇C1中包括的各条规则进行匹配,从而确定出相匹配的第一规则。
在以上例子中,操作请求与Rule1的相似度为1,完全匹配。可以理解,特征规则也是规则类簇中包含的一条规则,因此,在这个具体例子中,Rule1同时也作为了与操作请求匹配的规则,即第一规则。
于是,在步骤93,可以根据相匹配的规则中包括的判断结果,对操作请求进行决策。在以上例子中,Rule1的判断结果为permit,因此,对于操作请求Request={1,Coder,Write,D:/document,15:00<Time<18:00}的决策结果为,允许该操作请求。
以上结合具体例子描述了在第一策略处理部中的决策过程。在更多例子中,操作请求的操作描述可以具有其他形式,例如包含更多、更少或其他属性。不过,一般来说,操作请求的操作描述与规则中的执行描述是相对应的。取决于操作描述/执行描述的形式,两者的相似度的计算方式可以根据需要调整,此外,确定与操作请求相匹配的规则的过程也可以根据需要调整。例如,在上述例子中,操作请求的操作描述中的时间条件是一个范围,例如区间1,在进行规则匹配的过程中,当规则中的时间条件对应的范围,区间2,完全覆盖区间1时,认为两者在时间条件上匹配。在其他例子中,操作请求的操作描述的时间条件可能是一个时刻,T1,在进行规则匹配的过程中,如果规则中的时间条件对应的范围涵盖了该时刻T1,即认为两者在时间条件上匹配。
图10示出根据一个实施例的策略处理部的示意性功能框图。可以理解,该策略处理部100可以是图8中策略处理部821,822到82m中的任意一个。并且,如前所述,每个策略处理部对应于一个主体策略集。现在假定经过分发中心的确定和分发,策略处理部100是与操作请求的操作主体相对应的策略处理部,其对应的主体策略集此处称为第一主体策略集。如图10所示,策略处理部100包括:确定单元110,配置为确定第一特征规则和第一规则类簇,其中该第一特征规则为,所述第一主体策略集包括的多个规则类簇所分别对应的特征规则中,与所述操作请求之间相似度最高的特征规则;所述第一规则类簇为,与所述第一特征规则相对应的规则类簇;匹配单元120,配置为将操作请求与第一规则类簇中包括的各条规则进行匹配,从而确定出与操作请求相匹配的第一规则;决策单元130,配置为根据第一规则中包括的判断结果,确定对所述操作请求的决策结果。
在一个实施例中,上述确定单元110配置为:获取第一主体策略集包括的多个规则类簇所分别对应的多个特征规则;计算所述操作请求与所述多个特征规则中各个特征规则之间的相似度;将最大相似度对应的特征规则作为所述第一特征规则。
在一个实施例中,所述执行描述包括多个属性,所述多个属性包括执行动作,执行资源,执行条件中的多项,所述操作请求的操作描述包括与所述执行描述相对应的属性。相应地,确定单元110通过以下方式计算所述操作请求与所述多个特征规则中各个特征规则之间的相似度:首先确定所述操作描述和各个特征规则i的执行描述所包括的对应属性之间的属性相似度;然后,根据为各个属性预设的权重,计算所述操作描述和特征规则i的执行描述之间各个属性的属性相似度的加权和,将所述加权和作为所述操作请求与特征规则i之间的相似度。
在一个实施例中,匹配单元120配置为:将所述操作描述与所述第一规则类簇包括的各条规则的执行描述进行比对;将所述操作描述完全符合的执行描述所对应的规则作为所述第一规则。
进一步地,如图10所示,匹配单元120包括多个匹配子单元,或称为匹配器,每个匹配器对应于第一主体策略集中的一个规则类簇。如此,在确定单元110确定出第一规则类簇的情况下,可以将操作请求发送到该第一规则类簇所对应的匹配器,例如称为第一匹配器,由第一匹配器从第一规则类簇中确定出匹配的第一规则。
相应地,决策单元130也可以包括多个决策子单元,或称为决策器,每个决策器对应于一个匹配器,用于从匹配器获取到匹配的第一规则,并基于第一规则进行决策。
通过这样的方式,可以更好地实现操作请求的并行处理。如前所述,各个策略处理部可以对应一个请求队列,假设该请求队列包括依次排列的操作请求Q1,Q2,Q3…等等。确定单元110依次对这些操作请求进行处理,确定其对应的规则类簇,进而可以将其分发到规则类簇对应的匹配器。例如,将Q1发送到匹配器1,将Q2发送到匹配器2,将Q3发送到匹配器3。如此,多个匹配器可以并行地工作,各自对接收到的操作请求进行规则匹配。相应地,各个决策器也可以并行地进行决策。由此,进一步缩减规则匹配和进行决策所需的时间,提高效率。
以上描述了在分布式决策系统800中,多层级的匹配过程。在第一层级,由分发单元根据操作请求的操作主体,将操作请求分发到对应的策略处理部;在第二层级,在策略处理部中,将操作请求分发到最接近的规则类簇,在该规则类簇中进行规则匹配。
在一个实施例中,在对规则集进行预处理的过程中,还产生有单例策略集,单例策略集中包括的规则各自具有不同的执行主体。换而言之,单例策略集可以包含一条或多条规则。在包括多条规则的情况下,这多条规则中任意两条规则都具有不同的执行主体。
在这样的情况下,分布式决策系统800还包括单例处理部,对应于上述单例策略集。相应地,分发中心810如果无法在多个策略处理部中找到与操作请求的操作主体对应的策略处理部,就将该操作请求转发到单例处理部。单例处理部在接收到操作请求后,将该操作请求与对应的单例策略集中的各条规则逐条比对,以确定出匹配的规则;然后根据所述匹配的规则,确定对所述操作请求的决策结果。
结合图1到图10的描述可以看到,根据本文实施例提供的方法和装置,对规则进行了多层次的分组和聚类,并采用分布式的策略处理部PDP分别基于不同的规则组对请求进行决策。如此,一方面可以通过分布式决策架构并行处理更多请求,另一方面,通过对规则进行分组和聚类,极大缩减需要对比匹配的规则数目,降低决策时间,提升评估性能。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行前述各个流程图所描述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现前述各个流程图所述的方法。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。