一种支持访问控制的索引结构及其检索方法

文档序号:6586794阅读:349来源:国知局
专利名称:一种支持访问控制的索引结构及其检索方法
技术领域
本发明涉及信息检索和信息安全技术领域,具体涉及一种支持访问控制的索引结
构及其检索方法。
背景技术
随着通信、计算机及信息技术的发展,在党政机关、企事业单位、财政金融、国防军
工等相关部门中,信息的保有量和交流量都达到了前所未有的数量级。与此同时,很多商业
组织和国家涉密机构需要在网络环境中存储和处理大量涉密文档。如何构建一个安全的信
息检索系统来检索这些涉密文档并且保证相关文档的安全已成为迫切的需求。 信息检索系统的核心是其索引结构,目前主流的信息检索系统使用的索引结构一
般为倒排索引。倒排索引由多个索引词(term)组成的索引词表以及相对应的记录信息表
(posting list)所组成;索引词表中包含多个域(指构成文档的单元,如标题、正文、作者、
摘要等),索引词表中的索引词可以属于一个或者多个索引词域,例如索引词"中国"可能出
现在标题、正文等多个域中,而索引词"科技"则只出现在正文域中。索引词表中的每个索
引词均指向一个记录信息表,此记录信息表中记录所有包含此索引词的文档信息,一般有
文档ID、词频信息以及索引词在这篇文档中的位置信息等。用户在进行检索时通过检索词
在索引词表查询匹配的索引词,然后通过索引词指向的记录信息表获得相应的包含此检索
词的文档信息。 —般地,使用倒排索引的检索系统进行检索包括以下步骤 (1)对所获得的资源通过分词等技术建立倒排索引文件,并将所建立的倒排索引文件置于服务器端。
(2)当用户查询资源时,搜索程序通过分词技术将用户查询条件分解为索引项。
(3)在已建立的索引文件中进行搜索,并将搜索到的结果反馈给用户。 此类检索系统并没有考虑到涉密文档的安全访问问题,在其中所有可以访问检索
系统的用户用同样的查询条件在检索系统中能够检索到的结果是完全相同的。而在涉密系
统中,这种检索方式并不能很好地满足系统要求,原因在于涉密系统中用户是分级别的,在
此类系统中不同级别的用户使用相同检索词查询得到的结果集按照用户的级别进行分级控制。 基于此原因,需要在涉密检索系统中加入访问控制来对用户访问到的文档进行限制。 一般地,加入了访问控制的检索系统检索的步骤分两步 (1)对登录进来的用户进行识别,判断用户的角色,给予用户相应的权限。
(2)用户进行查询,系统进行检索,并且按照用户相应的权限进行返显。 这种方法能够实现对不同级别用户返回不同的结果集的要求。但是由于需要在搜
索之前对用户的身份信息进行确认,比直接进行检索的方式在效率上低上很多;在返回结
果集的时候也必须依据用户角色控制返回的结果集,难以满足用户在检索速度上的要求。
中国发明专利申请ZL200710052025.6提出了一种基于访问控制的安全搜索引擎系统。其
3中的查询检索模块在单点登录模块的控制之下,在认证通过时,获取用户的访问权限。查询检索模块接受来自用户的查询关键字,对其进行分词并根据获取的用户权限对索引库进行检索并接收返回结果。这种方式虽然满足了基于访问控制的安全搜索,但是效率和速度上难以满足要求。

发明内容
为了解决上述问题,本发明提出了一种支持访问控制的索引结构,该索引结构能够实现对涉密文档的分级访问控制,具有较高的效率和灵活性;本发明还提供了基于该索引结构的检索方法。 本发明提供的一种支持访问控制的索引结构,包括索引词表和记录信息表,索引词表中包括有标题域和正文域,纪录信息表中存储有索引词对应的文档ID、词频和位置信息,其特征在于所述索引词表中还包含有访问控制域和级别域,访问控制域里的索引词的格式为〈角色/用户,文档域,权限 >,用来表示某个角色或用户对某个文档域的搜索权限,访问控制域索引词后面所指向的纪录信息表由第一位图组成,第一位图的位数等于文档的数目,位的顺序按照文档ID顺序存储,位图的每一位存储的内容表示该位置的文档对应的访问控制域索引词的搜索权限; 级别域中存储n个索引词,分别为数字0 n-l,表示具体的密级,n为用户的级别的总数,级别域中索引词后面所带的纪录信息表由第二位图组成,纪录的是相应级别用户所能访问到的所有文档的信息,第二位图的位数等于文档的数目,位的顺序按照文档ID顺序存储,位图的每一位存储的内容表示该位置的文档对应的访问控制域索引词的搜索权限。 所述的索引结构,其索引构建过程如下
第一步创建一个空的哈希表H;
第二步对每个文档,求出该文档的全路径;
第三步如果哈希表H不为空,跳转到第六步; 第四步将所有角色/用户按照级别抽象成一个角色树,角色树的每个节点对应一个角色或用户,树节点越高角色的级别就越高,该树节点同时对应一个文档目录;
从角色树的根节点目录开始遍历路径中的每个目录,对根节点目录及根节点目录下所有的子节点的目录,求得角色对文档默认的访问权限,并把结果插入到哈希表H中;
第五步再次从根目录开始遍历路径中的每个目录,对根节点目录及根节点目录下所有的子节点的目录,求得该目录上额外定义的对文档的搜索权限集,结果插入到哈希表H中; 第六步遍历角色树,求得用户或角色在角色树上定义到具体文档上的搜索权限集,结果插入到哈希表H中; 第七步遍历哈希表H中的每个值,将遍历到的结果添加到索引的访问控制域中;
第八步结束。 所述的索引结构,其检索过程如下 第1步检索索引中的普通文本域求得初步的满足用户检索要求的结果; 第2步检索索引中的访问控制域求得用户对应的权限以及用户角色对应的权限可以搜索的文档; 第3步检索索引中的级别域求得用户的级别可以搜索的文档; 第4步对以上的结果求交集以对用户检索的初步结果按照用户权限进行过滤;如
果用户有多个检索词检索,还应对求交集后的多个结果求并集来得到最后的结果;
第5步结束。 本发明解决了涉密文档检索效率与访问控制安全之间的矛盾,适用于高安全需求 领域及涉密单位的检索要求。与现有技术相比,本发明具有以下特点 (1)本发明提出的支持访问控制的索引结构能够满足访问控制的安全要求以及检 索的效率要求通过在索引词表中引入访问控制域实现系统访问控制的安全要求,同时通 过统一的索引构建及检索方法实现检索的效率要求。 (2)本发明提出的角色树整合了角色、用户以及文档集,能够满足访问控制的灵活 性要求通过树形结构来实现访问控制的分级控制要求,在角色树中可以灵活的对单篇文 档或单个用户进行设置权限,实现了粒度更小的访问控制,具有更好的灵活性。另外角色树 可以方便的转化为访问控制域中的索引词,可以方便的进行转换。 (3)本发明提出的访问控制域存储方法能够满足空间效率以及运算速度要求对 访问控制域的纪录信息表,采用位图方式进行存储,空间上比原来的字节方式要高效很多, 而且在计算权限时采用位运算也可以大大提升计算访问控制权限的效率。


图1是本发明的提供的索引结构的示意图; 图2是角色树示意图; 图3是访问控制索引存储示意图; 图4是建立索引流程图; 图5是检索流程图。
具体实施例方式
下面通过借助实例更加详细地说明本发明,但以下实施例仅是说明性的,本发明 的保护范围并不受这些实施例的限制。 如图l所示,本发明所述的索引结构包括索引词表和记录信息表两个部分。索引 词表中包含多个域,其中有一些普通的文本域,例如标题域、正文域等,在这些域中存储的 索引词是用来满足检索要求的普通索引词,比如"中国、科技"等。在检索时如果用户输入 查询词"中国",通过在这个索引词表中查找就可以得到匹配的索引词,然后通过此索引词 指向的纪录信息表就可以找到包含关键词"中国"的文档。在这些普通的域所对应的纪录 信息表中一般存储的是相应的索引词对应的文档ID、词频、位置信息,用来构造相应查询的 结果集。 索引词表中还包含两个特殊类型的域访问控制域和级别域。这两个域用来实现 本发明中的访问控制需求。 访问控制域里的索引词的一般格式为一个〈角色(用户),文档域,权限〉三元组, 用来表示某个角色或用户对某个文档域的搜索权限。
在访问控制系统中,对系统操作的各种权限不是直接授予具体的用户,而是在用 户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。 一旦用户被 分配了适当的角色后,该用户就拥有此角色的所有操作权限,一个用户可以拥有多个角色。
访问控制域里的索引词可以通过以下例子进行解释例如在索引词'、#3#1"中a 对应三元组中的角色或者是用户;第一个数字3对应文档域,其中3表示文档域的编号;最 后一个数字1表示权限,此数字只有0和1两种,当为0时表示没有搜索权限,为1是表示 有搜索权限;索引词中间的#号是为了方便处理而采用的间隔符号。此索引词表示的具体 含义是a对文档域3拥有检索权限,在索引中此索引词所指向的纪录信息表存储的是所有 符合此权限的文档的信息。此外由于角色拥有对角色树中该角色及该角色节点所有子节点 文档目录中所有文档域的默认检索权限,所以角色的权限一般用"r^k"表示,其中,k表示 对应的文档域,省略了三元组中的权限信息。 访问控制域索引词后面所指向的纪录信息表由第一位图组成,位图结构如图3所 示,具体描述为假设有n篇文档,满足访问控制域索引词权限的文档共有M(0《M《n)篇 (即位图中"l"的个数),这些文档对应的记录信息表用位图存储。其中位图的位数为文档 的数目n。如图3所示,在位图中,位的顺序按照文档ID顺序存储,如位图第一位表示第1 篇文档,第L位表示第L篇文档;位图的每一位存储的内容为数字0或1,当此位为0时表 示该位置的文档不符合对应的访问控制域索引词的搜索权限,为1表示符合相应的搜索权 限。搜索权限集的集合运算通过位运算(与或运算)来计算结果。每当记录信息表添加一 个文档时,相应位设为O。 图1中所示的级别域较简单,如果用户的级别总共有n级(n为正整数,以下同), 则级别域中存储n个索引词,分別为数字0 n-l,具体的数字表示具体的密级,索引词后面 所带的纪录信息表纪录的是相应级别用户所能访问到的所有文档的信息,结构也由位图组 成,该位图称之为第二位图。其中位图中位的顺序按照文档ID顺序存储,如位图第一位表 示第1篇文档,第L位表示第L篇文档;位图的每一位存储的内容为数字O或1,当此位为0 时表示该位置的文档不符合对应的访问控制域索引词的搜索权限,为1表示符合相应的搜 索权限。搜索权限集的集合运算通过位运算(与或运算)来计算结果。
图2所示的是一种角色树结构。所有角色按照级别组成一个角色树,树节点越高 角色的级别就越高。在角色树中,角色r。为级别最高的节点,处于角色树的根节点,在角色 树中的每个节点都有一个文档目录,此目录下包含多个文档(图中用圆圈表示,例如角色^ 所对应的文档目录中的文档d)。树节点的层次越高表示该文档目录的文档级别越高。在 此角色树中,根节点上的角色r。默认拥有根节点以及根节点一下所有节点所对应文档目录 的所有文档域的检索权限,树中的每个节点默认拥有该节点以及该节点所有子节点所对应 文档目录的所有文档域的检索权限。除了这些默认权限外,可以灵活地对某个具体的用户 或对某篇具体的文档赋予权限,拥有比较大的灵活性。角色树中有两个特殊角色Users和 Guest,所有合法用户都属于Users角色,所有未登录的用户都属于Guest角色。所有内部 文档(Users角色可以访问的文档)都存放在P(Users) (P(Users)表示角色树中Users节 点,下文中出现此类符号均按此解释)目录下,所有公开文档(Guest角色可以访问的文档) 都存放在P (Guest)目录下。 为了方便对相应目录文档的搜索权限进行表示,本发明把搜索权限表示为一个四元组〈U, 0, k, S〉,此四元组具体描述如下
U为角色或用户的ID; 0为搜索权限所对应的文档集合,此集合根据搜索权限所定义的目标客体的不同 而不同,具体取值为如果搜索权限定义在单独的文档上则0为相应的文档;如果搜索权限 定义在目录上,则0为此目录下所有的文档的集合,例如搜索权限定义在目录P (r2) (P (r2) 表示角色r2所对应的角色树上的目录),则0形式化表示为D (r2)。 k为文档的域编号用正整数表示,如文档集合中总共有m个域,则k的取值为0 m-1 ; s有两种权限,分别用数字0和1表示。s为1时表示允许搜索,s为0时表示不 允许搜索; 〈U, 0, k, s>四元组具体表示用户或角色U,对集合0中所有文档的编号为k的域, 拥有搜索权限s。 文档分为多个密级,令数字越大对应的密级就越高。公开文档任何人都可以访问,
密级大于等于l的文档只有合法用户才能访问。对于公开文档和内部文档,不用考虑定义
的访问权限。对于公开文档,任何人都可以访问。同样的,任何合法用户都可以访问内部文
档。对于访问密级大于等于2的文档,除了要检查是否为合法的用户外,还要检查用户的密
级权限(用户密级权限^文档密级)以及定义的访问权限。在定义的读、写、修改、删除、搜
索等访问权限中,只有搜索权限需要存储到索引中,后文中仅限于搜索权限。 默认情况下,角色对本角色下的所有文档的所有域有默认的搜索权限。除了默认
权限以外,也可以对角色树中任意目录或文档单独设置额外的搜索权限。 如果目录或文档上定义的多个搜索权限之间存在冲突,则按如下规则处理(不同
默认权限所定义的目标客体不同,它们之间不会出现冲突,因此只有下面两种情况) (1)额外设置的权限之间存在冲突直接在文档上设置的权限其优先级要高于目录
上设置的权限;子目录上设置的权限其优先级要高于父目录上设置的权限。
(2)默认权限和额外设置的权限之间存在冲突。 额外设置的权限其优先级要高于目录对应角色的默认权限,例如假设一篇文档 d的路径为"P(r2) \P(r4) \d"(此结构表示文档d为r2节点下的r4节点下的文档目录中的 文档d),其中P(ig是P(r》的父目录,在父目录P(r》上额外定义了搜索权限〈iv D(r2), 3, 0> (表示角色r4对目录P (r2)及其子目录下的所有文件的编号为3的域没有搜索权限), 子目录P (r4)上有默认权限集{〈r4, D (r4) , k, 1> | k = 0 m_l}(表示默认情况下角色r4对
目录P(r4)及其子目录下的所有文件的0 m-1域有搜索权限),综合上面两个权限定义, 角色1~4对文档d(d G D(r2) n D(r4))的编号为3的域没有搜索权限。 如果额外定义了某个用户不能搜索某个文档的某个域,则不管该用户是否拥有能 搜索该文档的该域的角色,该用户都无权搜索这个文档域。如果用户拥有多个角色,且没有 直接定义该用户不能搜索某文档的某个域,则只要其中一个角色拥有能搜索该文档该域的 权限,该用户就能搜索该文档域。 如图4所示的是本发明中构建基于访问控制地索引方法。访问控制域的创建步骤 通过扫描角色树,分别求得角色的默认权限,额外定义权限以及定义在文档上的特定权限, 来完成索引的创建。具体描述如下
步骤401 :创建一个空的哈希表H(哈希表是一种数据结构,里面存储的单位是键 值对,通过拥有唯一值的键来存储和检索这个键的值,在本算法中,得到的中间结果和最终 结果均用哈希表存储); 步骤402 :对每个文档,求出该文档的全路径;
步骤403 :如果哈希表H不为空,跳转到步骤406 ; 步骤404 :从角色树的根节点目录开始扫描路径中的根节点目录及其下的每个目 录对每个目录P (r》,往哈希表H中插入键值对〈"r^k", 1> ; 步骤405 :再次从根节点目录开始扫描路径中的根节点目录及其下的每个目录。 对每个目录P(ri),求得该目录上额外定义的搜索权限集,此权限集用前述定义的四元组 〈U,D(r》,f, s〉来表示。如果U是用户或者s二 1,则将键值对〈"U#f", s〉加入到哈希表 H中(如果有相同的键存在,则覆盖其值),如果U是角色且s = 0,则将此键值对〈"U#f ", s>从哈希表H中移除; 步骤406 :求得具体文档上定义的搜索权限集。同样,此权限集用前述定义的四元 组〈U, {d} , f, s>来表示,其中U为某用户或角色的ID, f为文档某域的编号,对权限集中的 每个元素,s为对应的搜索权限。如果U是用户或者s = 1,则将此键值对〈"U#f", s〉加 入到哈希表H(如果有相同的键存在,则覆盖其值),如果U是角色且s = 0,则将此键值对 〈"U#f ", s>从哈希表H中移除; 步骤407 :遍历哈希表H中的每个键值对〈"U#k", s〉,对每个键值对添加索引的访
问控制域中; 步骤408:结束。 图5所示的是本发明中检索的流程图,其流程为 步骤501 :检索索引中的普通文本域求得初步的满足用户检索要求的结果;
步骤502 :检索索引中的访问控制域求得用户对应的权限以及用户角色对应的权 限可以搜索的文档; 步骤503 :检索索引中的级别域求得用户的级别可以搜索的文档;
步骤504 :对以上的结果求交集以对用户检索的初步结果按照用户权限进行过 滤;如果用户有多个检索词检索,还应对求交集后的多个结果求并集来得到最后的结果;
步骤505:结束。 对此流程,我们以一个例子说明,设某用户u拥有角色r。,巧,此用户的密级权限为 3。如果该用户有一个查询请求,需要查询倒排索引中f域中的索引词即ple和g域的索引 词data。具体按以下步骤来实现 首先在倒排索引f域中搜索即ple,得到的结果集表示为Sapple ;
然后在倒排索引g域中搜索data,得到的结果集表示为Sdata ; 在访问控制域中搜索键"uftfftl"(此键值表示用户u对文档f域有搜索权限)得 到的结果集形式化表示为Sfp搜索键"uftf糾"(此键值表示用户u对文档f域没有搜索权 限)得到的结果集形式化表示为Sf2。对g域进行类似操作分别得到结果集形式化表示为
Sgi禾口 sg2; 在访问控制域中搜索键"r。ftf"(此键值表示角色r。对其目录下的文档的f域有
搜索权限)得到的结果集形式化表示为Sf3,搜索键"I^f"(此键值表示角色巧对其目录下的文档f域有搜索权限)得到的结果集形式化表示为Sf4 ;对g域进行类似操作分别得到结 果集形式化表示为Sg3和Sg4 ; 在级别域中搜索密级为3的文档集,得到的结果集表示为Ssl ;
则原查询的搜索结果集可以表示为以下表达式 (swle n ((sfl u sf3 u sf4-sf2) n ssl)) u (sdata n ((sgl u sg3 u sg4-sg3) n ssl)) 此表达式说明如下结果集S『Sf3, Sf4先进行合并,然后在结果中去掉与结果集
sf2重复的部分,最后与结果集sap*和ssl求交集,得到的结果(公式中形式化符号的意思
前文已经解释)和公式第二部分合并,第二部分的解释和第一部分完全类似。按照这个表 达式在倒排索引中操作即可求得满足本例中用户查询要求并且满足用户访问控制等级的 结果集。本例详细讲解了如何构建一个基于访问控制的查询请求,对于一般的查询要求也 可以根据用户查询请求及访问控制等级构造类似的查询表达式返回结果集。 本发明不仅局限于上述具体实施方式
,本领域一般技术人员根据实施例和附图公 开的内容,可以采用其它多种具体实施方式
实施本发明,因此,凡是采用本发明的设计结构 和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
权利要求
一种支持访问控制的索引结构,包括索引词表和记录信息表,索引词表中包括有标题域和正文域,纪录信息表中存储有索引词对应的文档ID、词频和位置信息,其特征在于所述索引词表中还包含有访问控制域和级别域,访问控制域里的索引词的格式为<角色/用户,文档域,权限>,用来表示某个角色或用户对某个文档域的搜索权限,访问控制域索引词后面所指向的纪录信息表由第一位图组成,第一位图的位数等于文档的数目,位的顺序按照文档ID顺序存储,位图的每一位存储的内容表示该位置的文档对应的访问控制域索引词的搜索权限;级别域中存储n个索引词,分别为数字0~n-1,表示具体的密级,n为用户的级别的总数,级别域中索引词后面所带的纪录信息表由第二位图组成,纪录的是相应级别用户所能访问到的所有文档的信息,第二位图的位数等于文档的数目,位的顺序按照文档ID顺序存储,位图的每一位存储的内容表示该位置的文档对应的访问控制域索引词的搜索权限。
2. 权利要求1所述的支持访问控制的索引结构,其特征在于该索引结构按照下述过程构建第一步创建一个空的哈希表H ;第二步对每个文档,求出该文档的全路径;第三步如果哈希表H不为空,跳转到第六步;第四步将所有角色/用户按照级别抽象成一个角色树,角色树的每个节点对应一个角色或用户,树节点越高角色的级别就越高,该树节点同时对应一个文档目录;从角色树的根节点目录开始遍历路径中的每个目录,对根节点目录及根节点目录下所有的子节点的目录,求得角色对文档默认的访问权限,并把结果插入到哈希表H中;第五步再次从根目录开始遍历路径中的每个目录,对根节点目录及根节点目录下所有的子节点的目录,求得该目录上额外定义的对文档的搜索权限集,结果插入到哈希表H中;第六步遍历角色树,求得用户或角色在角色树上定义到具体文档上的搜索权限集,结果插入到哈希表H中;第七步遍历哈希表H中的每个值,将遍历到的结果添加到索引的访问控制域中;第八步结束。
3. —种基于权利要求1所述索引结构的检索方法,其特征在于检索过程按如下步骤进行第1步检索索引中的普通文本域求得初步的满足用户检索要求的结果;第2步检索索引中的访问控制域求得用户对应的权限以及用户角色对应的权限可以搜索的文档;第3步检索索引中的级别域求得用户的级别可以搜索的文档;第4步对以上的结果求交集以对用户检索的初步结果按照用户权限进行过滤;如果用户有多个检索词检索,还应对求交集后的多个结果求并集来得到最后的结果;第5步结束。
全文摘要
本发明公开了一种支持访问控制的索引结构及检索方法,索引结构包括索引词表和记录信息表。索引词表中包含有访问控制域和级别域,访问控制域里的索引词的格式为(角色/用户,文档域,权限),访问控制域与级别域的索引词后面所指向的纪录信息表由位图组成。本发明公开的索引构建过程包括普通域索引和访问控制域及级别域的构建过程,访问控制域的构建过程通过扫描本发明描述的角色树来实现。本发明公开的检索过程包括普通域及访问控制域和级别域的检索,把普通域检索到的结果与访问控制域和级别域的结果求交集来实现对访问控制信息的过滤。本发明解决了涉密文档检索效率与访问控制安全之间的矛盾,适用于高安全需求领域及涉密单位的检索要求。
文档编号G06F17/30GK101714172SQ200910272749
公开日2010年5月26日 申请日期2009年11月13日 优先权日2009年11月13日
发明者卢正鼎, 吴炜, 文坤梅, 李成洲, 李瑞轩, 汤学明, 胡和平, 辜希武, 雷小强, 黄亮, 黄保华 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1