强制实行对于索引文档的本地访问控制的制作方法

文档序号:6568107阅读:175来源:国知局

专利名称::强制实行对于索引文档的本地访问控制的制作方法
技术领域
:本发明的实施例涉及强制实行对于索引文档的本地访问控制。技术背景企业可被描述为使用计算机的任何组织(例如,商业机构、政府机关、慈善团体等等)。在企业中找到的信息可以以任何形状和形式存在。信息可以分布在整个企业中,并通过各种软件程序被管理,这取决于手头的任务。例如,企业用户可以使用SQL应用程序来接进关系数据库,或使用文档管理应用程序来访问与他们的工作有关的文档。控制对包含在这些仓库中的敏感信息的访问典型地由管理软件程序强制实行。信息被保护的程度可以随不同的系统而变化,每个系统强制实行它自己的安全策略和要求。例如,文件系统通常控制对文件的读、写和执行操作,并把安全组与允许的操作相关联。一个安全组可包括单个用户或多个用户。然而,文件系统并不控制对一个文件内的各个单元的访问。一旦用户被允许打开一个文件,用户就能对它的所有内容进行访问。与文件系统安全模式相反,关系数据库管理系统可以控制对数据库的一个表中的各个数据列的访问,并且文档管理程序可以强制实行安全策略以限制在规定的时间间隔内对文档的访问。企业搜索引擎可以被描述为能够响应于查询(一种搜索请求的形式)来检索企业的相关文档。用于不同类型的企业内容的安全模式的多样性对于企业搜索引擎来说是有问题的。企业搜索引擎的目标是提供对于用户被授权观看的文档的询问的快速和相关的应答。为了满足性能和相关的要求,大多数企业搜索引擎建立代表要搜索的内容的搜索索引。用户实际上提交对于索引的查询,而不是搜索原始内容,这就像搜索图书馆的目录卡一样。搜索索引包括从各种后台仓库中提取的文档。仓库可被描述为数据源。后台仓库可被描述为把数据源贡献给搜索索引。在这些后台仓库中包含的文档通过抓取器被提取,所述抓取器具有访问该仓库的所有文档的足够权限的安全凭证。通常,呈现给抓取器的用户身份("userld")是对仓库中的大多数文档(即使不是全部文档的话)有访问权限的"超级,,用户。因此,企业搜索索引的初始文档访问权限代表了这个"超级,,用户的访问权利。不同的企业搜索引擎使用不同的方法来限制各个用户的访问权限。一种方法是企业搜索引擎提供它自己的安全模式。企业搜索引擎的管理员规定访问编目文档的各个访问权限。这种方法有几个缺点。首先,这种方法试图利用公共安全模式,它将满足所贡献的后台仓库的所有安全要求。如前所述,当不同类型的仓库和访问控制增加时,这可能是不现实的或者不可能的。典型地,最终结果是对于安全性的最小公分母效应,使得多个文档失去某些(即使不是全部)它们的本地安全控制。其次,这种方法需要管理员对于在原始仓库中已定义的文档重新定义受控访问,这是双倍的任务。最后,该方法暗示管理员具有对于所有企业内容的访问控制的企业范围的了解,这是不太可能的情况。所以特别希望搜索引擎能够接受由后台仓库的本地访问控制所规定的文档访问权限。本地访问控制是指在从其检索文档的仓库处实施的访问控制。典型地,本地访问控制表(ACL)与每个文档相关联,并被用来强制实行对于该文档的访问控制。在许多情况下,本地ACL包括代表安全组和/或对一个文档具有访问权限的各个用户的安全令牌。本地ACL也可以以比后台仓库内的文档更高的级别存在。例如,文档可以被组织到文件夹中,文件夹本身就可以具有规定的ACL(即,文件夹级别的ACL)。文件夹又可被组织到逻辑文件拒中,它们也可以具有它们自己规定的访问控制(即,文件拒级别的ACL)。通常有两种方法用于使搜索引擎接受这些本地ACL。一种方法是把本地ACL复制到搜索引擎中。另一种方法是把本地ACL留在后台仓库中,并使得搜索引擎通过模仿从仓库请求文档访问权限。ACL方法是把由后台仓库规定的文档的本地ACL自动复制到企业搜索引擎的搜索索引中。虽然这种方法减轻了管理员重新规定文档的ACL的负担,但该方法有几个缺点。如果本地ACL是要保持它们的原始安全模式,则企业搜索引擎重新实施由后台使用的相应安全机制,以强制实行这些ACL。这可能是一项繁难的任务。作为替代,搜索引擎可以尝试把这些ACL变换成单个的公共模式,从而可以使用单个的安全过滤机制。真正的归一化的模式可能是无法实现的。术语"归一化"可被描述为使得遵循标准或成为一致的。如果归一化模式是可实现的,结果将是代表所有做出贡献的仓库的最小公分母的安全模式。模仿方法在搜索索引中根据不保存任何安全信息。响应于查询,从索引生成结果集合。然后,在结果集合被呈现给用户之前,企业搜索引擎通过实时咨询文档的原始后台仓库而去除不允许用户观看的那些文档。当与本地仓库互动时,企业搜索引擎在某种意义上是模仿最终用户。通过模仿,企业搜索引擎询问本地仓库用户是否可以具有访问先前抓取得到的和从该仓库提取的一个或多个文档的权限。通过这种方法,文档访问由原始仓库的本地安全机制控制,然而这可能是很复杂的。另外,过滤实时地进行,因此反映了对于任何给定文档的最新的本地ACL改变。虽然模仿方法确实满足了接受文档的原始访问权限的要求,但该方法具有一些缺点。首先,该方法要求与对索引有贡献的所有后台仓库的连接性。如果一个特定的后台仓库是不可获得的,则可能无法确定一个结果集合中文档的属性。也就是说,如果后台是不可获得的,则有可能看不到该文档。在这个条件下,文档将自动从结果集合中被去除。然而,模仿方法可能要花费一些时间。搜索索引在速度方面被优化,并且通常可以在子第二响应时间中被搜索。通过模仿方法,增加了与每个后台仓库通信以确定文档是否应当被包括在返回给用户的最终结果集合内的时间。结果集合相差越多,通信的数目越大。当用户被拒绝访问大多数结果时,问题变得很复杂。例如,假设通过提交对于索引的查询,查询生成了按相关性划分等级的1000个中间结果。另外,假设用户没有对由后台仓库所规定的前面900个结果进行访问的权限。然后,超过900个以上的模仿在结果集合被其余的100个结果所占据之前已经被企业搜索引擎执行。因此,在本
技术领域
中需要更为有效的强制实行对索引文档的本地访问控制。
发明内容提供了一种用于处理搜索请求的方法、计算机程序和系统。对于在搜索索引中识别的每个文档,一个或多个索引级别的访问控制表信息被存储在搜索索引中。通过使得和每个所述文档相关联的一个或多个索引级别的访问控制表信息与和搜索请求相关联的一个或多个安全组相匹配,从而生成中间结果集合。通过执行模仿,由中间结果生成最终结果集合。现在参考附图,其中相同的附图标记在全文中代表相应的部件图l示出了其中可以实施某些实施例的计算机结构的细节。图2示出了按照某些实施例的、用于创建搜索索引的逻辑。图3示出了按照某些实施例的、用于创建用户资料的逻辑。图4示出了按照某些实施例的、用于收集用户安全凭证的样本屏图5示出了按照某些实施例的、由企业搜索引擎执行的逻辑。图6示出了按照某些实施例的结构。图7示出了按照某些实施例的中间结果集合和最终结果集合。图8示出了可以按照某些实施例使用的计算机系统的结构。具体实施方式在以下的说明中,参考构成本发明的一部分并描迷了几个实施例的附图。应当理解,也可以利用其它实施例并且可以做出结构上和操作上的改变,而不背离本发明的实施例的范围。图1示出了其中可以实施某些实施例的计算机结构的细节。客户端计算机100被耦合到web服务器120。客户端计算机100包括可以以易失性和/或非易失性设备实现的系统存储器102。一个或多个客户端应用程序104(即,计算机程序)被存储在系统存储器120中,以便由处理器(例如,中央处理单元(CPU))(未示出)执行。web服务器120被耦合到客户端计算机100和企业搜索服务器140。web服务器120包括可以以易失性和/或非易失性设备实现的系统存储器122。至少一个身份管理器124(即,计算机程序)被存储在系统存储器122中,以便由处理器(例如,中央处理单元(CPU))(未示出)执行。web服务器120还被耦合到包含用户资料126的数据存储器。企业搜索服务器140被耦合到web服务器120和多个后台服务器160a,.,.,160n。椭圆表示任意数目的后台服务器可被耦合到企业搜索服务器140。企业搜索服务器140包括可以以易失性和/或非易失性设备实现的系统存储器142。至少一个企业搜索引擎144(即,计算机程序)被存储在系统存储器142中,以便由处理器(例如,中央处理单元(CPU))(未示出)执行。企业搜索服务器140还被耦合到容纳搜索索引146的数据存储器。一个或多个后台服务器160a,…,160b中的每一个均包括可以以易失性和/或非易失性设备实现的系统存储器162a,.,.,162b。一个或多个服务器应用程序164a,.,.,164b(即,计算机程序)被存储在每个相应的系统存储器162a,…,162b中,以便由处理器(例如,中央处理单元(CPU))(未示出)执行。每个后台服务器160a,…,160b分别被耦合到容纳文档166a,…,166b的数据存储器。在替代实施例中,计算机程序可被实现为硬件、软件、或硬件和软件的组合。客户端计算机IOO、web服务器120、企业搜索服务器140和后台服务器160a,…,160b可包括在本领域已知的任何计算设备,如服务器、主机、工作站、个人计算机、手持式计算机、膝上电话设备、网络设备等等。客户端计算机IOO、web服务器120、企业搜索服务器140和后台服务器160a,…,160b可以经由网络互相耦合,如存储区域网络(SAN)、局域网(LAN)、广域网(WAN)、互联网、内部网等等。每个数据存储器可包括存储设备阵列,如直接存取存储设备(DASDs)、简单磁盘捆绑(JBOD)、独立软盘冗余阵列(RAID)、虛拟设备等。图2示出了按照某些实施例的、用于创建搜索索引的逻辑。控制过程从方块200开始,企业搜索引擎144抓取具有"超级"用户访问的文档。在方块202,企业搜索引擎144从本地后台服务器检索一个或多个本地级别的访问控制表信息,本地后台服务器在这里将被称为"本地级别"。在某些实施例中,不获取拒绝控制表信息。访问控制表信息包括一个或多个本地级别的访问控制表信息。本地级别的访问控制表信息例如可以与服务器、数据库和每个文档相关联。在方块204,企业搜索引擎144把检索到的一个或多个本地级别的访问控制表信息映射到存储在搜索索引146中的索引级别的访问控制表信息。术语"索引级别,,是指与搜索索引146相关联的访问控制表信息级别。例如,搜索索引146可包括服务器和数据库级别的访问控制表信息。本地级别和索引级别可被定义为安全组(例如,经理、职员、销售)。在方块206,企业搜索引擎把所映射的访问控制表信息级别存储在搜索索引146中。在文档级别下的安全模式可能有很大不同,妨碍实现共同模式的任何努力。但由于考虑到较高级别的访问控制表信息,提高了达到归一化模式的可能性。例如,许多文档管理系统提供在集合或数据库级别下的访问控制。其它文档管理系统通过登录认证过程附加地提供在服务器或系统级别下的访问控制。在抓取期间,企业搜索引擎144从后台服务器160a,.,.,160b选择对于不同类型的仓库具有类似语义的特定级别的访问控制表信息(即,一类访问控制表信息的最小公分母集合)。虽然较高级别的访问控制表信息并不控制对各个文档的访问,但该信息可被用来预测对文档成功的模仿访问的可能性。例如,可以预测到如果搜索用户具有对文档的数据库的访问权限,则用户最可能具有对数据库中的文档的访问权限。当搜索索引146被构建或刷新时,在文档提取过程期间得到较高的级别的访问控制表信息。检索到的较高级别的访问控制表信息被映射到在搜索索引146中表示的一个或多个索引级别。在某些实施例中,搜索索引146中的索引级别的数目通过由所有做出贡献的后台服务器1603,...,1601)支持的较高级别的访问控制表信息的交集而被确定。在搜索索引146中每个索引级别下归一化的高级别访问控制表信息被企业搜索引擎144用来快速产生搜索用户具有高访问可能性的文档的中间结果集合。正是这个中间结果集合由企业搜索引擎144通过模仿对它进行后过滤。在某些实施例中,模仿牵涉到通过使用搜索用户的安全凭证以编程方式建立与后台服务器160a,…,160b的会话。一旦后台服务器160a,…,160b对模仿的用户进行了认证,企业搜索引擎144因此就把最终用户有可能被授权观看的文档的列表呈现给后台服务器。后台服务器用拒绝或准许访问每个文档的指示对搜索引擎做出应答。在某些实施例中,一旦最终用户已经被主系统认证(即,用户在登录到web服务器120期间已经输入了有效的用户ID和密码),并且在用户向企业搜索引擎144发出搜索请求(例如一条查询)之前,启动身份管理器124。身份管理器124负责生成用户的安全上下文(securitycontext),它包括其一个成员是该用户的一个或多个安全组,被用于模仿该用户,并且用于基于其一个成员是该用户的一个或多个安全组对索引文档进行预过滤。用户的安全上下文包含对于每个后台仓库安全域的用户的安全凭证,以及在这些安全域中用户的相关的一个或多个安全组。安全域可被描述为包括一个或多个后台服务器160a,…,160n,其存储由企业软件系统管理的一个文件集合。在某些实施例中,安全域可以由一个以上的同一种类型的仓库组成,并且提示用户输入安全域的凭证,而不是安全域中每个各个仓库的凭证,因为凭证是相同的。在某些实施例中,安全上下文是经过格式化的XML字符串。图3示出了按照某些实施例的、用于创建用户资料的逻辑。在客户端计算机100处的用户例如以用户身份("userld")和密码组合的形式把登录数据提供给主系统(例如,web服务器120)。在图3中,控制过程在方块300开始,身份管理器124接收有效的用户登录数据(例如用户ID)。在方块302,身份管理器124确定是否存在对于具有接收的登录数据的用户的用户资料。如果是的话,则处理过程进行到方块308,否则进行到方块304。在方块304,身份管理器124提示输入并接收对于一个或多个安全域的用户安全凭证,每个安全域包括一个或多个后台仓库。具体地,用户把用于访问包含在后台服务器1603,...,1601)处的数据存储器中的文档的用户安全凭证提交到身份管理器124。用户对于每个后台服务器160a,.,.,160b和相关的安全域可以具有不同的身份(即,不同的登录数据)。例如,用户可以提交对于每个安全域的用户ID和密码,其中用户想要从这些安全域得到针对索引文档执行的搜索。在方块306,身份管理器124把对于一个或多个后台仓库的用户安全凭证存储在用户资料126中。在某些实施例中,对于每个所提供的安全凭证,身份管理器124尝试登录到后台仓库,得到对于该安全域的用户的一个或多个安全组。如果登录失败,则假设用户的安全凭证已改变(例如,密码过期),并提示用户重新输入正确的安全凭证。否则用户的一个或多个安全组被后台仓库返回,并被存储在用户资料中。在任何时间,用户可以选择忽略所建议的对用户资料的更新,但这导致受到改变影响的那些文档被排除在搜索以外。在方块308,身份管理器124尝试从一个或多个后台仓库中的第一后台仓库开始用存储在用户资料中的用户安全凭证登录到该一个或多个后台仓库的下一个后台仓库。在方块310,身份管理器124判断登录是否成功。如果是的话,处理进行到方块312,否则,处理进行到方块304。如果登录不成功,可能是用户的安全凭证已改变。在方块312,身份管理器124从后台仓库提取其一个成员是该用户的一个或多个安全组,以及在方块314,身份管理器124把对于该后台仓库提取的一个或多个安全组存储在用户资料中。在方块316,身份管理器124确定用户对于其提供了用户安全凭证的所有后台仓库是否已经被访问。如果是的话,处理进行到方块318,否则,处理环路回到方块308。在方块318,身份管理器124通过使用用户资料126而生成安全上下文。在方块310,身份管理器124使得安全上下文对于客户端应用程序104是可用的,该客户端应用程序又把安全上下文附加到被转发给企业搜索引擎144的每个搜索请求。在某些实施例中,身份管理器使用轻便目录存取协议(LDAP)用户注册表来存储用户资料。身份管理器124在LDAP用户注册表中的用户的现有的个人条目下面为用户存储多个用户安全凭证。LDAP用户注册表的位置和结构经由例如由实施例提供的用户接口被提供到身份管理器124。当LDAP被使用时,用户通过提供在LDAP中记录的用户ID和密码初始登录到web服务器120。身份管理器124使用所接收的用户ID,定位LDAP中的用户记录,或把用户安全凭证加到LDAP中的用户记录上。图4示出了按照某些实施例的、用于收集用户安全凭证的样本屏幕400。屏幕400包括"LDAP登录安全凭证"部分410和"仓库登录安全凭证,,部分420。最初,为了创建或更新用户资料,用户使用用户ID412和密码414进行登录。用户可以向系统表示它是否要记住密码,从而在以后的尝试中跳过登录过程。一旦用户已经登录,身份管理器就提示用户把用户安全凭证输入到屏幕400的"仓库登录安全凭证"部分420。"仓库登录安全凭证,,部分420包括使能搜索指示器422,它在用户提交搜索请求到企业搜索引擎144时可被检查,以表示相关的域对于搜索是可用的。"仓库登录安全凭证"部分420还包括一个域的列表424。在某些实施例中,根据对于企业搜索引擎144可用的集合和在这些集合中需要认证的文档,计算该域列表424(例如,IBM或企业搜索)。"仓库登录安全凭证"部分420包括对于每个域424的用于用户名称426和密码428的字段。一个集合可以由从许多不同类型的后台仓库抓取得到的文档组成。例如,一个集合可包含从文件系统和几个数据库抓取得到的某些文档。身份管理器124区分不同的类型,并提示输入对于访问这些分开的安全域所需的安全凭证。在某些实施例中,缺省地,使能每个凭证进行搜索,因此需要用户提供相应的用户名称和密码。如果用户忘记到特定的域的用户名称和/或密码,则用户可以选择禁止搜索该域(即,不选中使能搜索指示器的方框)。这避免了在这些域中任何保密文档被搜索和返还到结果集合。图5示出了按照某些实施例的、由企业搜索引擎144执行的逻辑。控制过程在方块500开始,其中企业搜索引擎144接收搜索请求。在方块502,企业搜索引擎144生成匹配于通过使用搜索索引146所确定的搜索请求项的预先过滤的文档列表。在方块504,企业搜索引擎144通过使与每个文档相关联的一个或多个索引级别匹配于与搜索请求相关联的一个或多个安全组(例如,对于每个安全域其一个成员是该用户的一个或多个安全組),从满足搜索请求中的搜索标准的预先过滤的文档列表生成中间结果集合。在某些实施例中,该一个或多个安全组是与发出搜索请求的用户相关联的。在方块506,企业搜索引擎144根据针对在中间结果集合中的文档的模仿生成最终的结果集合。具体地,企业搜索引擎144请求后台服务器1603,...,1601)检验通过模仿对文档的访问。模仿牵涉到通过使用搜索用户的安全凭证建立与后台服务器160a,…,160b的会话。后台服务器160a,…,160b可以相信它正在与用户直接互动,并因此可以用授权最终用户访问的数据进行应答。然而,后台服务器160a,…,160b正在与模仿该用户的企业搜索引擎144通信。为了模仿一个用户,企业搜索引擎144从伴随着搜索请求的用户的安全上下文得到用户的安全凭证。安全上下文包括用于每个后台服务器160a,…,160b的用户的登录消息。正像请求用户向原始后台服务器160a,…,160b提供标识以便执行搜索和访问文档一样,企业搜索引擎144对于包含在搜索索引中的需要认证的任何文档提供相同的安全凭证。在某些实施例中,当用户建立与企业搜索引擎144的会话时,身份管理器144检索该用户的安全上下文。该安全上下文然后可以在以后的搜索中由用户重复使用。在某些实施例中,该用户的所有安全凭证在每次搜索时被提供,因为事先不知道哪些后台服务器160a,…,160b可以被模仿《在方块508,企业搜索引擎144把最终的结果集合提供给用户,使得用户能够选择然后可被后台服务器160a,…,160b提供的文档。因此,实施例提供一种技术用由被索引的文档的本地访问控制所规定的、允许搜索用户观看的那些文档来应答搜索请求。实施例组合了在搜索索引146中较高级别的访问控制表信息的存储以及原始后台服务器160a,…,160b的实时咨询,以确定用户可以访问的文档。在搜索索引146中较高级别的访问控制表信息的存储使得能够实现很好的搜索性能,并且通过模仿,文档的原始后台服务器160a,…,160b的主机软件变为关于是否允许用户访问该特定文档的最终的判别器。因此,该技术强制实行本地访问控制表信息。图6示出了按照某些实施例的结构。在图6中,后台服务器A604是安全域SECOl602的一部分,且包括数据库A1606和数据库A2608。后台服务器B614是安全域SEC02612的一部分,且包括数据库B1616和数据库B2618。后台服务器A604和后台服务器B614为访问文档提供了n个本地级别的归一化的访问控制表信息。安全域可被描述为由企业软件系统及其相应的安全机制所管理的文档集合。在本例中,每个后台服务器604,614保留它自己的访问控制表,并分开地认证它的用户。文档提取过程通常被称为抓取,并由抓取器630执行。抓取器630检索文档的实际内容,以及关于文档的任何元数据(例如,作者、创建曰期等等)。这个信息由企业搜索引擎144进行解析和索引。典型地,搜索索引146包含在该文档中的所有字的高度压缩的交叉参考。具体地,抓取器630连接到具有足够权限来访问和提取对于该仓库的所有文档的安全凭证的后台系统。通常,由抓取器呈现给后台系统的用户ID是可以访问仓库中的大多数(如果不是全部的话)文档的"超级"用户标识。连同文档一起提取的是仓库的较高级别(例如,服务器级和数据库级)访问控制表信息。访问控制表信息识别允许访问仓库中的文档的那些用户和/或用户组。这个信息是与每个文档相关联的,并被存储在搜索索引636中,以由企业搜索引擎640使用。抓取器630通过访问后台服务器A604从数据库A1601和数据库A2检索文档信息610。抓取器630还通过访问后台服务器B614从数据库B1和数据库B2检索文档信息620。用于检索允许访问这个服务器的该一个或多个安全组的编程技术对于抓取器630是可用的。抓取器630把访问控制表信息与每个抓取得到的文档相关联。在图6的例子中,索引的级别是服务器级和数据库级,并且被提取的本地级别的访问控制表信息是服务器级和数据库级的信息。不是所有的后台服务器都可以使用"服务器"和"数据库,,级的术语,并且不是所有的后台服务器都支持这两个级别。如果至少一个级别的访问控制表信息得到后台服务器的支持,则抓取器630把该级别映射到存储在搜索索引636中的适当的索引级别。例如,许多企业后台服务器提供用户登录到系统,这可以近似为服务器级访问。作为另一个例子,归一化的"数据库,,级被用于把它们的文档进一步组织成可以指定为分立的访问控制的逻辑集合的那些后台服务器。例如,文档管理系统可以限制哪些用户组在它的控制下可以访问哪些集合。这类访问控制表信息然后可以被映射到与在搜索索引640中的数据库级相关联的索引级别。如果从后台服务器604、614只能提取一个本地级别的访问控制表信息,则抓取器630可以把该本地级别映射到服务器和数据库的索引级别。然后,搜索用户的用户标识或其一个成员是该用户的一个或多个安全组在查询过程期间针对这两个索引级别被检验。由抓取器630提取的文档内容由索引器634进行解析、令牌分解和摄取,以构建搜索索引636。搜索索引636代表可被搜索和可以针对速度和精度进行优化的文档的全体。搜索索引636从后台服务器604、614(即,企业仓库)提取的经过综合的文档内容被构建和周期地刷新。和每个文档一起被存储在搜索索引636中的是多级别访问控制表信息。由于搜索索引636由从许多不同种类的后台仓库抓取的文档组成,搜索索引636可包含来自不同安全域的访问控制表信息。当用户在用户计算设备650上向企业搜索引擎640发出一个查询时,企业搜索引擎640允许用户接收对匹配于用户的搜索标准的文档的参考列表。具体地,用户从用户计算设备650向企业搜索引擎640发出一个查询。企业搜索引擎640接收安全上下文以及该查询。具体地,与被提交给企业搜索引擎640的每个查询相关的是用户可具有的用户安全凭证的完整集合。用户可具有的多个身份由身份管理器642请求并被存储到用户注册表644中。企业搜索引擎640使用搜索索引636来产生经过预过滤的结果。然后,企业搜索引擎144通过使得与每个文档相关联的一个或多个索引级别匹配于与发出搜索请求的用户相关联的一个或多个安全级别,从经过预过滤的结果集合生成中间结果集合。企业搜索引擎144根据对中间结果集合中文档的模仿生成最终的结果集合。虽然抓取器630、索引器634和企业搜索引擎640被示出为分开的部件,但这些部件可被组合以形成一个部件。用于后台服务器604,614的用户的安全凭证可能不是相同的。安全凭证可以由代表用户的用户识别号("userld")、用来认证用户的密码和用户的安全组列表(即,其一个成员是该用户的一个或多个安全组的列表)组成。除非两个后台服务器604和614共享一个公共的用户注册表,否则安全凭证的任何部分在不同的后台服务器604,614之间都可以不同。例如,用户JohnSmith可以是在后台服务器604中规定的管理者安全组的一个成员,但用户JohnSmith可能仅仅是由后台服务器614所规定的职员安全组的一个成员。即使JohnSmith是在两个后台服务器604,614中名称相同的安全组的一个成员,但这两个安全组之间的实际的成员可以是不同的。例如,JohnSmith是由后台服务器604所管理的职员安全组的一个成员,但不是由后台服务器614所管理的职员安全组的成员。在某些实施例中。企业搜索引擎640通过把安全域名附加到搜索索引636中的每个访问控制表条目上而保持这种区别。表A示出了在后台服务器604,614处对于文档DA1和DA2的本地级别的访问控制表信息表A<table>tableseeoriginaldocumentpage20</column></row><table>在表A中,文档DA1是来自后台服务器A604的,后台服务器A604位于安全域SECOl602中,并包括表示具有安全级别Staff(职员)和Sales(销售)的用户可以访问该文档的原始访问控制表信息。文档DB1是来自后台服务器B614的,后台服务器B614位于安全域612中,并包括表示具有安全级别Staff(职员)和Manager(经理)的用户可以访问该文档的原始访问控制表信息。表B示出了搜索索引636:表B<table>tableseeoriginaldocumentpage20</column></row><table>在表B中,对于每个文档,存储两个索引级别的信息服务器级和数据库级。对于每个文档,对每个索引级别在搜索索引636中存储信息,表示为了访问该文档用户需要的安全访问等级。例如,为了访问文档DA1,用户需要属于销售安全组,以便能够通过存储在该索引中的访问控制级别1和级别2。对于DBl,用户需要属于职员安全组,以便能够通过存储在索引中的访问级别1和级别2。当用户首先建立与企业搜索系统640的会话时,汇编对于该用户的所有安全凭证的集合。这组安全凭证代表包含在搜索索引636中的所有安全域,并被企业搜索引擎640所使用,以生成中间结果集合和通过模仿进行后过滤。当用户向企业搜索引擎640提交一条查询时,该查询伴随着用户的安全凭证集合。表C示出了对于后台服务器604,614的用户安全凭证。表C<table>tableseeoriginaldocumentpage21</column></row><table>例如,在表C中,在安全域SEC01中,用户识别号是JohnSmith,密码是X7fh567,其一个成员是该用户的安全组是Staff(职员)和Personnel(人事)。另外,在安全域SEC02中,用户识别号是JSmith,密码是EBDCAOOl,其一个成员是该用户的安全组是Staff(职员)和Finance(财务)。企业搜索引擎640将这些安全组与在搜索索引636中的索引级别相匹配。企业搜索引擎640使用其一个成员是该用户的安全组(在表C中的"安全组成员")作为当选择匹配于用户的搜索标准的文档时所要满足的附加标准。在用户的安全凭证集合中列出的安全组可以附加它们各自的安全域,以消除在后台服务器上类似安全组名称的冲突。在某些实施例中,对于特定的文档,如果在增扩的用户的安全组列表中至少一个安全组匹配于在存储在该索引中的每个访问控制级别中的至少一个安全组,则允i午访问该文档。表D示出了样本文档匹配于用户的查询。表D<table>tableseeoriginaldocumentpage22</column></row><table>在某些实施例中,索引级别中的一个级别可以是索引级别的另一个级别的子集合。例如,在表D中,数据库级访问控制表信息可以是服务器级访问控制表信息的一个适当的子集合,并可被用来进一步限制哪些安全组具有对该特定数据库的访问权限。另外,有可能在两个访问控制表信息的集合之间具有交集,如由文档"DA1"所表示的。应当指出,安全组经理:SEC01在数据库级访问控制表信息中示出,而没有在服务器的访问控制表信息。这个服务器的管理员可能从服务器访问控制表信息中去除经理:SEC01安全组,有效地向经理拒绝对该服务器的访问,但不会影响在这个服务器下更新每一个数据库。另外,应当指出,对于文档"DB2",名为"所有组:SEC02"的安全组存在于服务器级访问控制表信息。令牌"所有组:SEC02,,是安全组的识别号,并像任何其它的访问控制表信息条目那样被对待。也就是说,在某些实施例中,令牌不是照字面含义被解译。所以,想要访问该服务器的用户必须属于名为"所有组,,的安全组。在本例中,表D的文档集合根据从表C得到的用户的一个或多个安全组的下述布尔表达式(l)被过滤,得到表E中的文档服务器级ACL包含(1)(职员SEC01OR人事SEC01OR职员SEC02OR财务:SEC02)AND数据库级ACL包含(职员SEC01OR人事:SEC01OR职员SEC02OR财务:SEC02)下表提供了中间结果集合的例子。表E<table>tableseeoriginaldocumentpage23</column></row><table>表E的中间结果集合代表在本例中匹配于用户的查询并由企业搜索引擎640在服务器级和数据库级上计算的、用户有权访问的那些文档。然而,仍然有可能不允许用户观看在他们的原始源系统中所反映的这些文档中的任一个文档。企业搜索引擎640模仿该用户并咨询每个文档的后台数据库604,614,以确定该文档是否应当被包括在最终的结果集合中。在表E中的每个文档来自不同的安全域,这些安全域为确定访问需要分开地模仿。企业搜索引擎使用文档的安全域来查看在表C中为进行模仿所要使用的适当的安全凭证。实施例提供了改进模仿的性能的几种增强方案。例如,搜索索引由从很多不同种类的企业后台仓库抓取的文档构成。因此,结果组集合可包含来自这些后台仓库的任一个后台仓库的文档。当最终结果集合包含源自不同的后台仓库的文档时,则操作系统的多任务能力被用来通过每个不同种类的后台服务器160a,…,160b同时执行模仿。相反,当最终结果集合包含来自同一个后台仓库160a,…,160b的多个文档时,则这些文档通过同一个模仿过程一起被呈现给后台服务器160a,…,160b。这使得对话建立和认证过程对于这组文档只执行一次。另外,通过使得所执行的模仿的次数最小化而改进了性能。如前所述,当用户被拒绝访问结果集合中的大多数文档时,可能进行超常次数的模仿。实施例通过把对于每个后台服务器160a,…,160b的索引级别的访问控制表信息(即,本地访问控制表信息的归一化集合)存储在搜索索引146中而减小了失败的模仿的次数(即,导致访问一个或多个文档被拒绝的模仿)。较高级别的访问控制表信息可被用来生成中间结果集合,并对于中间结果集合执行模仿。也就是说,通过使用户的安全级别匹配于与中间结果集合中的每个文档相关联的索引级别(例如,服务器级和数据库级),文档已具有通过模仿测试的改进的机会。实施例还通过利用最终的结果集合的页面大小减小了进行的模仿的次数。典型地,搜索应用程序给出对于一个查询的应答作为一系列页。典型地,第一页给出最相关的结果,用户可以选择(例如,在超级链接上点击)最终结果集合中的文档,以观看实际的文档。通过相关性降低而排序的后续的页通常没有显示出,但这些页可以由用户请求(例如,通过在最终结果集合的第一页上显示的所希望的页码上点击)。因此,在某些实施例中,当一页能够示出m个结果时,企业搜索引擎144执行足够的模仿以显示这m个结果。为了完成这一点,企业搜索引擎144必须保持与代表完成一页的最后一次成功的模仿的中间结果集合的分开的偏移。使用通过搜索应用程序请求的页码来计算在中间结果集合中哪个地方开始进行后过滤是不够的。例如,假设页面尺寸被设置为显示10个结果。而且,假设执行13次模仿来填充10个结果的第一页(即,因为由于拒绝访问而造成三个结果被滤除)。当请求最终结果集合的下一页时,企业搜索引擎144开始在文档14处模仿,而不是在文档ll处模仿。另外,企业搜索引擎144可以验证足够数量的中间结果,从而显示具有预定数目的结果的所请求的页。例如,如果中间结果集合包含许多结果,则模仿和检验访问步骤可能是一个很长的过程。再次地,这个性能上的缺点可以通过验证足够的结果完成所请求的页(例如,通过模仿显示10个结果而验证足够的结果)而得到很大改进。假设中间结果集合包含满足用户的原始查询的超过100个结果,但页面尺寸被设置为10的预定结果数目(例如,通过客户端应用程序104)。最好情况的情景将导致10次模仿来填充显示10个结果的一页。另外的模仿被执行,以替代模仿测试失败的那些文档,但预期这种情况的可能性是很低的,并且预期如果用户具有对与文档相关联的索引级别(例如,服务器级和数据库级)有访问权限的话,则用户有很大可能被授权观看该文档。此外,不是重新发出对于后续的页请求的相同的搜索,企业搜索引擎144可以緩存中间结果集合并从緩存的结果中提取所请求的页。结果集合的緩存改进了性能,并且是可选的。图7示出了按照某些实施例的中间结果集合710和最终结果集合720。考虑没有通过模仿检验访问测试的那些结果,企业搜索引擎144管理在所请求的页的范围中的差异和与中间结果集合的偏移。在图7中,每个页可以显示4个结果。在它们的相应的模仿测试失败的中间结果集合710中的结果用X标记打叉。应当注意的是,需要6次模仿满足最终结果的第一页(即,在模仿期间,发现用户没有对文档2和3的访问权限),而对于最终结果的第二页的请求导致7次模仿(即,在模仿期间,发现用户没有对文档8,11和13的访问权限)。附加实施例细节所描述的操作可以作为使用标准编程和/或工程技术来产生软件、固件、硬件或它们的组合的方法、设备或制造的物品来实现。这里使用的术语"制造的物品"是指在介质中实现的代码或逻辑,其中这样的介质可包括硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)或计算机可读介质,诸如磁存储介质(例如,硬盘驱动器、软盘、磁带等等)、光存储装置(CD-ROM、光盘等等)、易失性和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、固件、可编程逻辑等等)。在计算机可读介质中的代码由处理器访问和执行。代码或逻辑被编码在其中的介质还可包括通过空间或诸如光纤、铜线等的传输介质传播的传输信号。代码或逻辑被编码在其中的传输信号还可包括无线信号、卫星传输、无线电波、红外信号、蓝牙等等。代码或逻辑被编码在其中的传输信号能够由发送站发送并由接收站接收,其中在传输信号中编码的代码或逻辑可以质中。另外,"制造的物品,,可包括其中代码被体现、处理和执行的硬件和软件部件的组合。当然,本领域技术人员将认识到,对于本配置可以作出许多修改而不背离本发明的范围,并且制造的物品可包括本领域已知的任何信息承载介质。术语"逻辑"例如可包括软件或硬件和/或软件与硬件的组合。虽然这里的某些例子是指与用户相关联的安全组,但在替换实施例中,安全组例如可以与计算机程序相关联。计算机程序然后可以发出与用来生成中间结果集合的一个或多个安全组相关联的搜索请求。图2,3和5的逻辑描述了以特定的次序发生的特定操作。在替换实施例中,某些逻辑操作可以以不同的次序执行、被修改或去除。另外,操作可以添加到上述的逻辑,并仍旧遵循所描述的实施例。而且,这里描述的操作可以顺序地发生或者某些操作可以并行地处理,或者被描述为由单个处理执行的操作可以通过分布处理被执行。图2,3和5所示出的逻辑可以以软件、硬件、可编程或非可编程门阵列逻辑或以硬件、软件、或门阵列逻辑的某种组合被实现。图8示出了可以按照某些实施例被使用的计算机系统的结构800。客户端计算机IOO、web服务器120、企业搜索服务器140、和/或每个后台服务器160a,…,160b可以实现结构800。计算机结构800可实现处理器802(例如,微处理器)、存储器804(例如,易失性存储器装置)、和存储装置810(例如,非易失性存储区域,诸如磁盘驱动、光盘驱动、磁带驱动等等)。操作系统805可以在存储器804中执行。存储装置810可包括内部存储装置或附加的或网络可访问的存储装置。在存储装置810中的计算机程序806可被加栽到存储器804中,并由处理器802以本领域已知的方式被执行。该结构还包括能够与网络通信的网卡808。输入设备812被用来将用户输入提供到处理器802,并可包括键盘、鼠标、笔尖、麦克风、触摸敏感显示屏、或本领域已知的任何其它启动或输入机制。输出设备814能够呈现来自处理器802或其它部件,诸如显示监视器、打印机、存储装置等等的信息。计算机系统的计算机结构800可包括比所示更少的部件、这里没有示出的附加部件、或所示部件与附加部件的某些组合。计算机结构800可包括在本领域已知的任何计算设备,诸如主机、服务器、个人计算机、工作站、笔记本电脑、手持式计算机、电话设备、网络电器、可视化设备、存储控制器等等。可以使用在本领域已知的任何处理器802和操作系统805。实施例的上述说明是为了描述和说明而给出的。这些实施例不是试图穷举或限于所公开的具体形式。基于以上的指导可以做出许多修改和改变。实施例的范围不是由本详细说明所限制,而是由所附权利要求来限定。以上的技术说明书、例子和数据提供了对制造的完整说明和实施例的复合使用。由于可以做出许多实施例而不背离本发明的精神和范围,实施例体现在此后所附的权利要求,或任何以后提交的权利要求和它们的等价物。权利要求1.一种用于处理源自不同后台仓库的对文档的搜索请求的方法,包括对于在搜索索引中所识别的每个文档,把一个或多个索引级别的访问控制表信息存储在搜索索引中;通过使与每个所述文档相关联的一个或多个索引级别的访问控制表信息匹配于与所述搜索请求相关联的一个或多个安全组,生成中间结果集合;并通过用由中间结果集合参考的一个或多个文档所源自的每个所述不同的后台仓库执行模仿,从中间结果集合生成最终的结果集合。2.如在权利要求l中所述的方法,还包括对于文档检索一个或多个本地级别的访问控制表信息;把检索到的一个或多个本地级别的访问控制表信息映射到一个或多个索引级别的访问控制表信息;并把所映射的信息存储在搜索索引中。3.如在权利要求l中所述的方法,还包括接收用户的有效用户登录数据;并且确定用户资料是否存在,其中存在的用户资料存储与该用户相关联的一个或多个安全组,以便在生成中间结果集合时使用。4.如在权利要求3中所述的方法,还包括响应于确定用户资料不存在的情况,接收用于一个或多个后台仓库的用户安全凭证;把用户安全凭证存储在该用户的用户资料中;对于与存储在用户资料中的用户安全凭证相关联的一个或多个后台仓库中的每一个后台仓库(1)登录到所述后台仓库中;并且(2)响应于确定登录成功的情况,(a)从所述后台仓库提取其一个成员是该用户的一个或多个安全组;并(b)把所提取的一个或多个安全组存储在用户资料中;并且用所存储的一个或多个安全组生成对于该用户的安全上下文。5.如在权利要求4中所迷的方法,还包括响应于确定登录不成功的情况,提示用户输入用户凭证以访问所述后台仓库。6.如在权利要求3中所述的方法,还包括响应于确定用户资料存在的情况,对于与存储在用户资料中的用户安全凭证相关联的一个或多个后台仓库中的每一个后台仓库;(1)登录到所述后台仓库中;并(2)响应于确定登录成功的情况,(a)从所述后台仓库提取其一个成员是该用户的一个或多个安全组;并(b)把提取的一个或多个安全组存储在用户资料中;并且用所存储的一个或多个安全组生成对于该用户的安全上下文。7.如在权利要求6中所述的方法,还包括响应于确定登录不成功的情况,提示用户输入用户凭证以访问所述后台仓库。8.如在权利要求l中所述的方法,还包括通过使用搜索索引来匹配搜索请求的项目而生成经过预过滤的文档列表,其中中间结果集合是从经过预过滤的文档列表生成的。9.如在权利要求l中所述的方法,还包括向用户提供最终结果集合,其中用户能够选择随后由后台仓库所提供的文档。10.如在权利要求l中所述的方法,还包括当最终结果集合包含源自不同的后台仓库的文档时,用每个不同的后台仓库同时执行模仿。11.如在权利要求l中所述的方法,还包括当最终结果集合包含来自一个后台仓库的多个文档时,对所述多个文档执行单次模仿。12.如在权利要求l中所述的方法,当一页能够显示预定数目的结果时,还包括执行一次或多次模仿,从而在该页上显示预定数目的结果或少于预定数目的结果。13.如在权利要求12中所迷的方法,还包括保持与代表最后一次成功模仿的中间结果集合的分开的偏差。14.一种用于处理源自不同后台仓库的对文档的搜索请求的系统,包括能够使操作被执行的逻辑,所述操作包括对于在搜索索引中所识别的每个文档,把一个或多个索引级别的访问控制表信息存储在搜索索引中;通过使与每个所述文档相关联的一个或多个索引级别的访问控制表信息匹配于与所述搜索请求相关联的一个或多个安全组,生成中间结果集合;并通过用由中间结果集合参考的一个或多个文档所源自的每个所述不同的后台仓库执行模仿,从中间结果集合生成最终的结果集合。15.如在权利要求14中所述的系统,其中所述操作还包括对于文档检索一个或多个本地级别的访问控制表信息;把检索到的一个或多个本地级别的访问控制表信息映射到一个或多个索引级别的访问控制表信息;并把所映射的信息存储在搜索索引中。16.如在权利要求14中所述的系统,其中所述操作还包括接收用户的有效用户登录数据;并确定用户资料是否存在,其中存在的用户资料存储与该用户相关联的一个或多个安全组,以便在生成中间结果集合时使用。17.如在权利要求16中所述的系统,其中所述操作还包括响应于确定用户资料不存在的情况,接收用于一个或多个后台仓库的用户安全凭证;把用户安全凭证存储在该用户的用户资料中;对于与存储在用户资料中的用户安全凭证相关联的一个或多个后台仓库中的每一个后台仓库(1)登录到所述后台仓库中;并且(2)响应于确定登录成功的情况,(a)从所述后台仓库提取其一个成员是该用户的一个或多个安全组;并(b)把所提取的一个或多个安全组存储在用户资料中;并且用所存储的一个或多个安全组生成对于该用户的安全上下文。18.如在权利要求17中所述的系统,其中所述操作还包括响应于确定登录不成功的情况,提示用户输入用户凭证以访问所述后台仓库。19.如在权利要求16中所述的系统,其中所述操作还包括响应于确定用户资料存在的情况,对于与存储在用户资料中的用户安全凭证相关联的一个或多个后台仓库中的每一个后台仓库;(1)登录到所述后台仓库中;并(2)响应于确定登录成功的情况,(a)从所述后台仓库提取其一个成员是该用户的一个或多个安全组;并(b)把所提取的一个或多个安全组存储在用户资料中;并且用所存储的一个或多个安全组生成对于该用户的安全上下文。20.如在权利要求19中所述的系统,其中所述操作还包括响应于确定登录不成功的情况,提示用户输入用户凭证以访问所述后台仓库。21.如在权利要求14中所述的系统,其中所述操作还包括通过使用搜索索引来匹配搜索请求的项目而生成经过预过滤的文档列表,其中中间结果集合是从经过预过滤的文档列表生成的。22.如在权利要求14中所述的系统,其中所述操作还包括向用户提供最终结果集合,其中用户能够选择随后由后台仓库所提供的文档。23.如在权利要求14中所述的系统,其中所述操作还包括当最终结果集合包含源自不同的后台仓库的文档时,用每个不同的后台仓库同时执行模仿。24.如在权利要求14中所述的系统,其中所述操作还包括当最终结果集合包含来自一个后台仓库的多个文档时,对于所述多个文档执行单次模仿。25.如在权利要求14中所述的系统,当一页能够显示预定的数目的结果时,所述操作还包括执行一次或多次模仿,在该页上显示预定数目的结果或少于预定数目的结果。26.如在权利要求22中所述的系统,其中操作还包括保持与代表最终的成功模仿的中间结果集合的分开的偏差。27,一种计算机程序,当在可编程计算机上执行时用于执行权利要求1至13中任一项的步骤。全文摘要提供了用于处理源自不同后台仓库发源的对文档的搜索请求的技术。对于在搜索索引中所识别的每个文档,将一个或多个索引级别的访问控制表信息存储在搜索索引中。通过使与每个所述文档相关联的一个或多个索引级别的访问控制表信息匹配于与所述搜索请求相关联的一个或多个安全组,生成中间结果集合。通过用由中间结果集合所参考的一个或多个文档所源自的每个所述不同的后台仓库执行模仿,从中间结果集合生成最终的结果集合。文档编号G06F21/24GK101218590SQ200680025342公开日2008年7月9日申请日期2006年7月14日优先权日2005年7月14日发明者尤斯托·L·佩雷兹,托德·雷巴,约汉·迈克弗森,罗尼·莱姆派尔申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1