论文部分内容阅读
基于角色的访问控制已经成为一种非常流行的访问模型,通过在用户和权限之间建立角色来实现用户间接拥有特定的权限集合,而角色代表一组权限和相关的策略。基于角色的访问控制能够极大地降低用户权限分配关系中的冗余,并以角色充当中间媒介,防止用户直接操作权限,对管理系统的安全起到了很好的保护作用。而实施基于角色的访问控制的关键在于角色的定义,即如何将现有的用户权限分配关系分解为用户角色分配关系和角色权限分配关系。角色定义的过程被称为角色工程,实现的方法有两种,一种是自顶向下的方法,该方法从企业的业务处理流程,公司的职位要求以及项目的分工等方面搜集相关的信息确定最终的角色,该方法需要人为分析大量的数据,并且需要与专业领域的人员协商沟通,成本较高。与其相反的是自下而上的方法,该方法通过分析现有的用户和权限之间的关系,利用数据挖掘等技术定义最终的角色,该过程也称为角色挖掘。虽然很多的角色挖掘方法已经被提出,但是许多算法并未考虑到需要满足相关的约束,其中包括三种约束,第一种是职责分离约束,该约束规定某项任务至少需要多少个人员完成,以防止欺骗行为的发生;第二种是基数约束,包括四个:用户基数约束,角色使用基数约束,权限分配基数约束和权限基数约束。最后一种是先决条件约束,该约束规定了一个用户需要先具有另外一个角色才能够具有该角色,或者一个角色需要先拥有另外一个权限才能够拥有该权限。本文从静态职责分离约束出发,随机生成一组静态互斥角色约束,提出了一种贪婪算法从该组约束中选出一组互斥角色对,并将角色定义为顶点,若两个角色之间存有互斥关系,在这两个角色之间连一条线,最终构成稀疏图,然后利用韦尔奇鲍威尔着色法进行染色,被染为相同染色的角色归为一组,将该组角色至少分配给一个用户,一个用户不能同时拥有任意两个组中的角色,从而实现职责分离。组数就是满足静态职责分离约束的最小用户数,它代表在存在静态职责分离约束的任务中最少需要多少个人完成任务。相关的实验结果证明了算法的高效性和安全性。对于基数约束,本文选择权限基数约束作为角色挖掘需要满足的约束,将用户和权限之间的访问控制矩阵作为输入,提出了两种满足权限基数约束的角色挖掘算法,两种算法都对访问控制矩阵的行和列进行排序使得原本无序的访问控制变为有序,第一种是基于词频统计的方法挖掘出满足权限基数约束的角色,该算法将每个用户的权限定义为一串字符串,其中不包括用户不具有的权限,然后每隔权限基数个权限定义为一个角色,并且统计出现频率较高的角色。第二种方法是将相邻行的用户所具有的权限作交运算,产生的交集定义为一个候选角色集,然后将候选角色集进行迭代约简,通过调整迭代的标准能够使该算法具有较好的结果。另外,对于由少数用户拥有的权限单独再生成一个角色。实验数据采用公共数据集,通过对比实验,本文提出的两个算法取得了较好的结果。