智能使用用户数据以抢先阻止违反访问控制的查询的执行的制作方法

文档序号:6417639阅读:190来源:国知局
专利名称:智能使用用户数据以抢先阻止违反访问控制的查询的执行的制作方法
技术领域
本发明一般涉及数据处理,特别涉及与在物理上表示数据的特定方式无关地访问数据。
背景技术
数据库是计算机化的信息存储和检索系统。关系数据库管理系统是使用关系技术来存储和检索数据的计算机数据库管理系统(DBMS)。最普及的数据库类型是关系数据库,即数据被定义成可以以多种不同方式对其进行重新组织和访问的表式数据库。
与特定架构无关,在DBMS中,请求实体(例如,应用程序或操作系统)通过发出数据库访问请求来要求对指定数据库的访问。这样的请求例如可包括简单的目录查询请求或事务,以及用来在数据库中读取、改变和添加指定记录的事务的组合。这些请求使用高级查询语言如结构化查询语言(SQL)来创建。示例性地,SQL用来创建用于从数据库如国际商业机器公司(IBM)的DB2、Microsoft的SQL Server以及来自Oracle、Sybase和Computer Associates的数据库产品获得信息和更新数据库的交互式查询。术语“查询”是指一组用于从所存储的数据库检索数据的命令。查询采取让编程人员和程序选择、插入、更新、找出数据位置等等的命令语言的形式。
数据库上下文中的一个重要问题是安全性。数据库经常包含需要一定程度的安全性以保护其不被访问的保密或敏感材料。例如,医疗记录被认为是高度私人化和保密的。因而,对医疗记录的访问典型地限于选定用户。为此,传统的数据库管理系统可实现指定授权级别的用户简档(profile)。用户是否可以访问某特定数据将取决于在其各自的简档中指定的用户授权级别。
然而,前述方法是很不灵活的和静态的。另一方面,数据是高度动态的(即随着时间的过去而发生变化)。结果,相对于用户试图访问的数据,施加在传统数据库的用户上的安全性可能合适或可能不适合。例如,考虑用户试图访问HIV测试结果。可能期望的是,只要用户自己的医疗记录反映用户已做过HIV测试,就阻止用户访问HIV测试结果,而不管其值(即,阳性或阴性)。如果在首次尝试访问期间,用户的医疗记录没有反映HIV测试,则允许用户查询HIV测试结果的医疗记录。如果同一用户随后作了HIV测试,然后这反映在用户的医疗记录中,则将禁止随后的访问HIV测试结果的尝试。可选地,可能期望的是,只有用户自己的医疗记录反映阳性HIV测试结果,才阻止用户访问HIV测试结果。在任一情况下,传统的数据库管理系统不允许这种级别的灵活性。
因此,需要改进的数据库安全性机制。

发明内容
本发明一般涉及一种用于数据库安全性的方法、系统和产品。
在一个实施例中,提供了一种提供关于数据的安全性的方法。该方法包括接收用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;并且基于该至少一个字段的特定于用户的数据的存在性,确定是否必须调用针对该至少一个字段为用户指定的安全性规则。
另一种提供关于数据的安全性的方法包括生成至少一个安全性列表,该安全性列表反映针对给定用户存在数据的多个字段的每一个,其中该多个字段的每一个具有为给定用户定义的安全性规则;接收给定用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;访问该至少一个安全性列表,以确定该查询的该至少一个字段是否反映在该至少一个安全性列表中;并且如果该查询的该至少一个字段反映在该至少一个安全性列表中,则施行安全性规则。
在另一个实施例中,一种对具有特定物理数据表示的数据提供安全性的方法包括提供查询规定,其包括多个用于定义抽象查询的逻辑字段;提供将该多个逻辑字段映射到数据的物理实体的映射规则;为该多个逻辑字段提供用户特定的安全性规则;接收用户对数据发出的抽象查询,其中该抽象查询根据查询规定来定义,并且以至少一个逻辑字段和该至少一个逻辑字段的关联值配置;基于该至少一个逻辑字段的特定于用户的数据的存在性,确定是否必须调用针对该至少一个逻辑字段为用户指定的安全性规则。
另一个实施例提供了一种包含当被执行时执行安全性验证操作的安全性验证指令的计算机可读介质,该安全性验证操作包括接收用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;并且基于该至少一个字段的特定于用户的数据的存在性,确定是否必须调用针对该至少一个字段为用户指定的安全性规则。
另一个实施例提供了一种包含当被执行时执行安全性验证操作的安全性验证指令的计算机可读介质。该安全性验证操作包括生成至少一个安全性列表,该安全性列表反映针对给定用户存在数据的多个字段的每一个,其中该多个字段的每一个具有为给定用户定义的安全性规则;接收给定用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;访问该至少一个安全性列表,以确定该查询的该至少一个字段是否反映在该至少一个安全性列表中;并且如果该查询的该至少一个字段反映在该至少一个安全性列表中,则施行安全性规则。
另一个实施例提供了一种计算机可读介质,其包括存储在其上的信息,该信息包括查询规定,其包括多个用于定义抽象查询的逻辑字段;多个映射规则,其将该多个逻辑字段映射到数据的物理实体;该多个逻辑字段的多个用户特定安全性规则;运行时组件,其可执行以响应于接收用户对数据发出的抽象查询而执行安全性验证操作,其中该抽象查询根据查询规定来定义,并且以至少一个逻辑字段和该至少一个逻辑字段的关联值配置。该安全性验证操作包括,基于该至少一个逻辑字段的特定于用户的数据的存在性,确定是否必须调用针对该至少一个逻辑字段为用户指定的安全性规则。


通过参考在附图中示出的本发明实施例对上面简要概述的本发明进行更具体的描述,可以详细地理解实现本发明上述特性的方式。
然而,要注意的是,附图仅示出本发明的典型实施例,因此其不被认为是限制其范围,相反,本发明可以包括其它等效的实施例。
图1是计算机系统的一个实施例;图2A是本发明一个实施例的软件组件的逻辑/物理视图;图2B是抽象查询和抽象数据存储库(repository)的逻辑视图;图3是示出应用程序的启动和操作的流程图;图4是示出用户登录验证序列的流程图;
图5是示出运行时组件的操作的流程图;以及图6是示出运行时组件的操作的流程图。
具体实施例方式
介绍本发明一般涉及一种用于限制对数据的访问的系统、方法和产品。一般而言,根据查询中正被请求的数据与发出查询的用户之间的关联来限制数据访问。
在一个实施例中,安全性规则被实现为数据逻辑模型的一部分。逻辑模型被实现为数据存储库抽象层,其提供底层数据存储库的逻辑视图。以这种方式,与在物理上表示数据的特定方式无关地创建数据。还提供查询抽象层,并且该查询抽象层基于数据存储库抽象层。运行时组件执行抽象查询到可针对特定物理数据表示而使用的形式的翻译。
本发明的一个实施例被实现为与计算机系统例如图1所示和下面所述的计算机系统一起使用的程序产品。该程序产品的程序定义这些实施例的功能(包括这里所述的方法),并且可以包含在各种信号承载介质上。示例性信号承载介质包括但不限于(i)永久性地存储在不可写入存储介质(例如,计算机内的只读存储器装置,如可由CD-ROM驱动器读取的CD-ROM盘)上的信息;(ii)存储在可写入存储介质(例如,磁盘驱动器内的软盘或者硬盘驱动器)上的可变更信息;或者(iii)通过通信介质例如通过计算机或电话网络包括无线通信传达给计算机的信息。后面的实施例特定地包括从因特网或其它网络下载的信息。当承载引导本发明的功能的计算机可读指令时,这些信号承载介质表示本发明的实施例。
一般而言,被执行以实现本发明实施例的例程可以是操作系统或特定应用程序、组件、程序、模块、对象或指令序列的一部分。本发明的软件典型地包括大量指令,它们将被本地计算机翻译成可机读格式以及由此的可执行指令。另外,程序包括本地驻留于程序或者在存储器或存储装置中找到的变量和数据结构。另外,以下描述的各种程序可以根据在本发明的特定实施例中实现它们的应用程序来标识。然而,应当理解,下面任何特定的术语仅是为了方便起见而使用的,因此本发明不应当局限于仅在由这样的术语标识和/或暗示的任何特定应用程序中使用。
环境的物理视1示出可实现本发明实施例的连网系统100的方框图。一般而言,连网系统100包括客户端(例如用户)计算机102(示出了三个这样的客户端计算机102)和至少一个服务器104(一个这样的服务器104)。客户端计算机102和服务器计算机104通过网络126连接。一般而言,网络126可以是局域网(LAN)和/或广域网(WAN)。在特定实施例中,网络126是因特网。
客户端计算机102包括通过总线130连接到存储器112、存储装置114、输入装置116、输出装置119和网络接口装置118的中央处理单元(CPU)110。输入装置116可以是向客户端计算机102提供输入的任何装置。例如,可以使用键盘、小键盘、光笔、触摸屏、跟踪球或语音识别单元、音频/视频播放器等等。输出装置119可以是向用户提供输出的任何装置,例如任何传统显示屏。虽然与输入装置116分开示出,但是可以组合输出装置119和输入装置116。例如,可以使用具有集成触摸屏的显示屏、具有集成键盘的显示器或者与文本语音转换器组合的语音识别单元。
网络接口装置118可以是被配置成允许通过网络126在客户端计算机102和服务器计算机104之间进行网络通信的任何出/入装置。例如,网络接口装置118可以是网络适配器或其它网络接口卡(NIC)。
存储装置114最好是直接访问存储装置(DASD)。虽然它被示出为单个单元,但是它可以是固定和/或移动存储装置如固定盘驱动器、软盘驱动器、磁带驱动器、移动存储卡或光学存储装置的组合。存储器112和存储装置114可以是跨越多个初级和次级存储装置的一个虚拟地址空间的一部分。
存储器112优选地是大得足以保存本发明的必要程序和数据结构的随机存取存储器。虽然存储器112被示出为单个实体,但是应当理解,存储器112实际上可包括多个模块,并且存储器112可存在于从高速寄存器和高速缓冲存储器到较低速但较大的DRAM芯片的多个级别。
示例性地,存储器112包含操作系统124。可优选使用的示例性操作系统包括Linux和Microsoft(微软)的Windows。更一般地,可使用任何支持这里公开的功能的操作系统。
存储器112还被示出为包含浏览器程序122,当在CPU 110上执行时提供对在各个服务器104之间导航并且定位一个或多个服务器104上的网络地址的支持。在一个实施例中,浏览器程序122包括基于万维网的图形用户界面(GUI),其允许用户显示超文本标记语言(HTML)信息。然而,更一般地,浏览器程序122可以是能够呈现从服务器计算机104传输的信息的任何程序(优先地基于GUI)。
服务器计算机104在物理上可以以类似于客户端计算机102的方式布置。从而,服务器计算机104被一般性地示出为包括通过总线136相互耦接的CPU130、存储器132、以及存储装置134。存储器132可以是大得足以保存位于服务器计算机104上的必要程序和数据结构的随机存取存储器。
服务器计算机104一般处于驻留在存储器132中的所示操作系统138的控制之下。操作系统138的例子包括IBM OS/400、UNIX、MicrosoftWindows等等。更一般地,可使用任何支持这里所述的功能的操作系统。
存储器132还包括一个或多个应用程序140和抽象查询接口146。应用程序140和抽象查询接口146是这样的软件产品,其包括在不同的时候驻留在计算机系统100中的不同存储器和存储装置中的多条指令。当由服务器104中的一个或多个处理器130读取和执行时,应用程序140和抽象查询接口146使计算机系统100执行对于执行实施本发明的各方面的步骤或元素所需的步骤。应用程序140(并且更一般地,任何请求实体,包括操作系统138,以及处于最高层的用户)对数据库(例如,数据库1561…156N,统称作数据库156)发出查询。示例性地,数据库156被示出为存储装置134中的数据库管理系统(DBMS)的一部分。数据库156代表任何数据集合而与特定物理表示无关。作为示例,数据库156可根据关系大纲(schema)(可通过SQL查询来访问)或者根据XML大纲(可通过XML查询来访问)来组织。然而,本发明不限于特定大纲,并且考虑向目前未知的大纲的扩展。这里所用的术语“大纲”一般性地是指数据的特定安排。
在一个实施例中,由应用程序140发出的查询根据与每个应用程序140一起包括的应用程序查询规定142来定义。由应用程序140发出的查询可以是预定义的(即被硬编码为应用程序140的一部分)或者可以响应输入(例如,用户输入)而生成。在任何情况下,查询(这里称作“抽象查询”)使用由抽象查询接口146定义的逻辑字段来组合/执行。具体地说,在抽象查询中使用的逻辑字段由抽象查询接口146的数据存储库抽象组件148定义。抽象查询由运行时组件150执行,其中运行时组件150首先将抽象查询变换成与包含在DBMS 154中的数据的物理表示一致的形式。
在一个实施例中,数据存储库抽象组件148以安全性信息162配置。安全性信息162一般包括定义用户对选定数据的访问权限的安全性规则。运行时组件150用来根据发出查询的特定用户和要通过查询的执行而访问/返回的特定数据来施行安全性信息162。一般而言,安全性规则可以针对特定用户、用户组或所有用户来定义。用户是否与一个或多个其它用户具有关联定义在简档158中。从而,对于试图访问数据库156的每个用户,可存在简档158。
在一个实施例中,通过图形用户界面(GUI)由用户指定查询的各元素。GUI的内容由应用程序140生成。在特定实施例中,GUI内容是超文本标记语言(HTML)内容,其可以通过浏览器程序122在客户端计算机系统102上呈现。从而,存储器132包括超文本传输协议(http)服务器进程152(例如,万维网服务器),其被配置成服务来自客户端计算机102的请求。例如,服务器进程152可响应访问示例性地驻留在服务器104上的数据库156的请求。对数据库156中的数据的进入客户端请求调用应用程序140。当由处理器130执行时,应用程序140使服务器计算机104执行实施本发明的各方面的步骤或元素,包括访问数据库156。在一个实施例中,应用程序140包括多个小服务程序,其被配置成构建然后由浏览器程序122程序呈现的GUI元素。
图1只是连网的客户端计算机102和服务器计算机104的一种硬件/软件配置。本发明的实施例可应用于任何同等的硬件配置,而与计算机系统是否是复杂的多用户计算设备、单用户工作站或者没有其自己的非易失性存储装置的网络设备无关。此外,应当理解,虽然引用了特定标记语言,包括HTML,但是本发明不限于特定语言、标准或版本。从而,本领域的技术人员应当认识到,本发明可适用于其它标记语言以及非标记语言,并且本发明也适用于特定标记语言的将来改变以及目前未知的其它语言。同样地,图1所示的http服务器进程152仅是示例性的,并且可以考虑被配置成支持任何已知和未知协议的其它实施例。
环境的逻辑/运行时间视2A-2B示出本发明的各组件的示例性关系视图200。请求实体(例如,应用程序140之一)发出由请求实体的各自应用程序查询规定142定义的查询202。所得到的查询202在此一般性地称作“抽象查询”,因为该查询根据抽象(即逻辑)字段而非采用对DBMS 154中的底层物理数据实体的直接引用来组合。结果,可以定义与所使用的特定底层数据表示无关的抽象查询。在一个实施例中,应用程序查询规定142可包括用于数据选择的标准(选择标准204)和根据选择标准204要返回的字段的显式规定(返回数据规定206)。
下面表1示出与图2B所示的抽象查询202对应的示例性抽象查询。作为示例,抽象查询202采用XML来定义。然而,也可以有利地使用任何其它语言。
表1-查询例子001<?xml version=″1.0″?>
002<!--查询字符串表示(FirstName=″Mary″AND LastName=003″McGoon″) OR State=″NC″-->
004<QueryAbstraction>
005 <Selection>
006 <Condition internalID=″4″>
007 <Condition field=″FirstName″operator=″EQ″value=″Mary″008 internalID=″1″/>
009 <Condition field=″LastName″operator=″EQ″value=″McGoon″010 internalID=″3″relOperator=″AND″></Conditon>
011 </Conditon>
012 <Condition field=″State″operator=″EQ″value=″NC″internalID=″2″013 relOperator=″OR″></Conditon>
014 </Selection>
015 <Results>
016 <Field name=″FirstName″/>
017 <Field name=″LastName″/>
018 <Field name=″State″/>
019 </Results>
020</QueryAbstraction>
示例性地,表1所示的抽象查询包括选择规定(第005-014行)和结果规定(第015-019行),其中选择规定包含选择标准。在一个实施例中,选择标准包括字段名称(用于逻辑字段)、比较操作符(=、>、<等)以及值表达式(即被比较的字段)。在一个实施例中,结果规定是要作为查询执行的结果而返回的抽象字段列表。抽象查询中的结果规定可包括字段名称和排序标准。
由应用程序查询规定142规定且用来组合抽象查询202的逻辑字段由数据存储库抽象组件148定义。一般而言,数据存储库抽象组件148暴露(expose)作为逻辑字段集的信息,其中该逻辑字段集可在由应用程序140(其可以响应用户输入查询条件)发出的查询(例如,抽象查询202)内使用,以指定数据选择标准和指定从查询操作返回的结果数据的形式。逻辑字段独立于在DBMS154中使用的底层数据表示来定义,从而允许形成与底层数据表示松散耦合的查询。
一般而言,数据存储库抽象组件148包括多个字段规定2081、2082、...(作为示例而示出两个),其统称为字段规定208。具体地说,为可用于组合抽象查询的每个逻辑字段提供字段规定。在一个实施例中,字段规定208包括逻辑字段名称2101、2102(统称为字段名称210)和关联的访问方法2121、2122(统称为访问方法212)。在示例性实施例中,字段规定208也包括一个或多个范畴(category)名称2161、2162(统称为范畴名称216)。范畴名称关联一组逻辑字段名称。例如,在图2B中,字段规定2081和2082指定demographic(人口统计)范畴2161和person(人)范畴2162。然而,范畴的使用仅代表特定实施例,并且其它实施例不采用范畴。
访问方法212将逻辑字段名称关联(映射)到数据库(例如,数据库156之一)中的特定物理数据表示2141、2142...214N。作为示例,图2A示出两个数据表示,即XML数据表示2141和关系数据表示2142。然而,也可以考虑表示已知或未知的任何其它数据表示的物理数据表示214N。
在一个实施例中,单个数据存储库抽象组件148包含两个或更多个物理数据表示214的字段规定(以及关联的访问方法)。在可选实施例中,为每个单独的物理数据表示214提供不同的单个数据存储库抽象组件148。在另一个实施例中,提供多个数据存储库抽象组件148,其中每个数据存储库抽象组件148暴露相同底层物理数据(其可包括一个或多个物理数据表示214)的不同部分。以这种方式,单个应用程序140可以由多个用户同时使用,以访问相同的底层数据,其中由各自的数据存储库抽象组件148确定向应用程序暴露的底层数据的特定部分。
根据所要支持的不同类型的逻辑字段的数目,可以考虑任意数目的访问方法。在一个实施例中,提供对简单字段、过滤字段和组合字段的访问方法。字段规定2081和2082分别是简单字段访问方法2121和2122的例子。简单字段被直接映射到底层物理数据表示中的特定实体(例如,映射到给定数据库表和列的字段)。作为示例,图2B所示的简单字段访问方法2121将逻辑字段名称2101(“FirstName(名)”)映射到名称为“contact(接触)”的表中名称为“f_name”的列。过滤字段(图2中未示出例子)标识关联的物理实体,并且提供用来定义特定数据表示内的特定项目子集的规则。过滤字段的例子是映射到邮政编码的物理表示、并且将该数据仅限于为纽约州定义的那些邮政编码的New YorkZIP code(纽约州邮政编码)字段。组合访问方法(图2中未示出例子)使用作为访问方法定义的一部分而提供的表达式,从一个或多个物理字段计算逻辑字段。以这种方式,可以计算在底层数据表示中不存在的信息。一个例子是通过将销售价格字段乘以销售税率而组合的销售税字段。
可以考虑,底层数据的任何给定数据类型(例如,日期、十进制数字等)的格式可以变化。从而,在一个实施例中,字段规定208包括类型属性,其反映底层数据的格式。然而,在另一个实施例中,字段规定208的数据格式不同于关联的底层物理数据,在这种情况下,访问方法负责以由请求实体采取的适当格式返回数据。因此,访问方法必须知道采取数据的什么格式(即,根据逻辑字段)以及底层物理数据的实际格式。然后,访问方法可以将底层物理数据转换成逻辑字段的格式。
作为例子,图2所示的数据存储库抽象组件148的字段规定208表示被映射到在关系数据表示2142中表示的数据的逻辑字段。然而,数据存储库抽象组件148的其它实例将逻辑字段映射到其它物理数据表示,如XML。
在一个实施例中,以上面参照图1简要描述的安全性信息162配置字段规定208中的一个或多个。在所示实施例中,范畴定义和字段定义具有关联的安全性信息162。然而,应当理解,不是所有范畴定义和所有字段定义都一定需要包括安全性信息。由于范畴定义两个或更多个逻辑字段之间的关联,因此属于相同范畴的逻辑字段继承相同的范畴安全性信息。例如,字段规定2081和2082各自属于Demographic范畴2161和Person范畴2162,从而继承各自的安全性信息1621和1622。
安全性信息162的另外方面可以参照表II来描述,其中表II示出与图2B所示的数据存储库抽象组件148对应的示例性数据存储库抽象组件。作为示例,数据存储库抽象148使用XML来定义。然而,可以有利地使用任何其它语言。
表II-数据存储库抽象例子001<?xml version=″1.0″?>
002<DataAbstraction version=″1.0″003xmlnsxsi=″http//www.w3.org/2001/XMLSchema-instance″004xsinoNamespaceSchemaLocation=″DataAbstraction.xsd″>
005006<Category name=″Person″>
007008 <Security type=″value″>
009 <SecurityRule>
010 <User>All</User>
011 <Action>NoRunAndLog</Action>
012 </SecurityRule>
013 </Security>
014015 <Field name=″First Name″>
016 <AccessMethod>
017 <Simple attrName=″FNAME″entityName=″PERSONINFO″/>
018 </AccessMethod>
019 <Type baseType=″char″></Type>
020 </Field>
021022 <Field name=″Last Name″>
023 <AccessMethod>
024 <Simple attrName=″LNAME″entityName=″PERSONINFO″/>
025 </AccessMethod>
026 <Type baseType=″char″></Type>
027 <Security type=″value″>
028 <SecurityRule>
029 <User>All</User>
030 <Action>RunAndLog</Action>
031 </SecurityRule>
032 <SecurityRule>
033 <User>securityOfficers</User>
034 <Action>RunAndLog</Action>
035 </SecurityRule>
036 <SecurityRule>
037 <User>Mary_McGoon</User>
038 <Action>NoAction</Action>
039 </SecurityRule>
040 </Security>
041 </Field>
042</Category>
043044<Category name=″Test″>>
045 <Field name=″HIV Test″>
046<AccessMethod>
047 <Simple attrName=″RESULTS″entityName=″TESTS″/>
048</AccessMethod>
049<Type baseType=″char″></Type>
050 <Security type=″access″>
051<SecurityRule>
052 <User>All</User>
053 <Action>RunAndLog</Action>
054</SecurityRule>
055<SecurityRule>
056 <User>securityOfficers</User>
057 <Action>RunAndLog</Action>
058</SecurityRule>
059<SecurityRule>
060 <User>Mary_McGoon</User>
061 <Action>LogAndDoNotRun</Action>
062</SecurityRule>
063 </Security>
064 </Field>
065</Category>
066</DataRepository>
从表II可以看出,与每个范畴定义和字段定义相关联的安全性信息一般包括安全性类型和安全性规则。安全性规则指定向其应用规则的一个或多个用户和当调用规则时要采取的特定操作。示例性操作包括阻止执行查询和记录尝试,执行查询并且记录执行,或者不采取任何操作。当然,可以考虑其它操作。
在一个实施例中,安全性类型可以是“值”类型、“访问”类型或两者。在本例中,“Last Name(姓)”字段定义示出值类型安全性,并且“HIV Test(HIV测试)”字段定义示出访问类型安全性。如这里所定义的,值类型安全性规则根据用户指定信息和特定字段值(字段值的例子包括Mary、McGoon、1111Easy Street)来限制访问。相比之下,访问类型安全性规则根据用户和字段类型来限制任何访问,而与字段值无关(字段类型的例子包括first name(名)、lastname(姓)、address(地址))。为示例说明起见,考虑“last name”字段。假定期望阻止用户访问其自己的姓,而非任何其它姓。在这种情况下,如表II的示例性数据存储库抽象中所做的那样(见第028-031行),为所有用户的“lastname”字段实现值类型安全性规则。通过以这种方式添加安全性信息,使运行时(run-time)组件150(在运行时)知道当用户试图访问“last name”字段时必须实现预定义的安全性算法151(图1)。下面更详细地描述运行时组件的各方面。
作为另一个示例,考虑“HIV Test”字段的情况。假定包含在该字段中的信息具有广泛的敏感性,则可能期望阻止特定用户完全地访问该字段。例如,可能期望阻止本身是HIV阳性的用户访问“HIV Test”字段。在这种情况下,安全性信息包括访问类型安全性限制。(见第045-064行)。在运行时,运行时组件150的安全性算法151(根据用户是否为HIV阳性)确定试图访问“HIV Test”字段的用户是否被限制做此操作,或者更一般地,是否必须采取某安全性操作。从而,对于访问类型限制,正被请求的“HIV Test”字段中的特定值是无关的。
如表II(第022-041行)中的逻辑“last name”字段所示,给定字段/范畴定义的安全性信息可包括多于一条安全性规则。具体地说,可以针对不同类别的用户提供不同的安全性规则。逻辑“last name”字段的定义示出针对所有用户的第一安全性规则,针对用户组的第二安全性规则、以及针对单个用户的第三安全性规则。在一个实施例中,使用最佳适配(best-fit)算法(其可以是应用程序140(图1)的一部分)来确定对特定用户类别施加什么限制。例如,如果用户Mary_McGoon试图访问“last name”字段,则使用用户简档Mary_McGoon的规则。由于找到更精确的规则规定(即,特定于用户Mary_McGoon的安全性规则),因此忽略“all(所有)”用户和“security officer(安全官员)”的规则。
然而,在一个实施例中,可以覆盖由最佳适配算法确定的规则。从表II可以看出,数据存储库抽象组件148可具有分级树结构。在表II的示例性数据存储库抽象中,所表示的最高节点是demographic(人口统计)范畴。次高节点是person(人)范畴,其具有first name字段和last name字段作为子(节点)。从而,在一个实施例中,最严格的规则是与树中的最高节点相关联的规则。在本例中,最严格的规则是与demographic范畴的安全性信息相关联的规则。因此,特定于用户Mary_McGoon的安全性规则可以被demographic范畴的规则覆盖。
现在参照图3,示出了说明应用程序140的初始程序装载和操作的方法300。当(例如,由管理员)启动应用程序140时,进入该方法。在步骤302,装载/检索数据存储库抽象组件。在多个数据存储库抽象组件可用的一个实施例中,由应用程序140指定要检索的数据存储库抽象组件。在步骤304,针对数据存储库抽象组件的每个树结构,进入循环。在步骤306,识别树结构中的最严格规则。这通过从最低节点到最高节点向上“巡视(walking)”树、并且识别具有关联安全性规则的最高节点来完成。一旦识别出最严格的规则,则应用程序140(在步骤308)确定规则是否为访问类型。如果是,则在步骤310将与规则相关联的字段置于用户特定访问类型安全性列表312中。然后,方法300返回到步骤304,以开始处理数据存储库抽象组件中的下一个树结构。
如果步骤308被否定回答,则处理进入步骤314,其中方法300确定规则是否为值类型规则。如果是,则在步骤316将与规则相关联的字段置于用户特定值类型安全性列表318中。然后,方法300返回到步骤304,以开始处理数据存储库抽象组件中的下一个树结构。
如果步骤314被否定回答,则处理进入步骤320,其中将与规则相关联的字段置于适当的安全性列表中。步骤320表示将方法300扩展到其它类型的安全性规则。然后,方法300返回到步骤304,以开始处理数据存储库抽象组件中的下一个树结构。
方法300继续直到数据存储库抽象组件中的每个树结构都被处理为止。然后,应用程序140准备开始接受请求。
图4示出由应用程序140的登录验证算法160执行的登录验证方法400的一个实施例。每当用户登录以便使用应用程序140时,执行登录验证方法400。在步骤402,登录验证算法160检索正在登录的用户的访问类型安全性列表312。在步骤404,验证方法400针对安全性列表312的每个字段启动循环。在步骤406,验证算法160检查用户数据(即数据库156内的物理数据中)的对应字段(即与正被处理的安全性列表字段对应的字段)中的条目。如果未找到对应的条目(步骤408),则从安全性列表312删除正被处理的字段。这样,在运行时将不会为了安全性的目的而考虑被删除的字段。如果找到对应字段(步骤408),则不需要采取特定的操作,并且处理返回到步骤404,以开始处理安全性列表312的下一个字段。一旦安全性列表312的每个字段均被处理,则登录验证方法400进入步骤412。
在步骤412,检索正在登录的用户的值类型安全性列表318。在步骤414,进入针对安全性列表的每个字段而执行的循环。在步骤416,验证算法160检查用户数据(即数据库156的物理数据中)的对应字段(即与正被处理的安全性列表字段对应的字段)中的条目。如果未找到对应的条目(步骤418),则从安全性列表318删除正被处理的字段。否则(即,如果在步骤418找到对应字段),则与值类型安全性列表318一起(或者在某其它安全性数据结构中)存储对应用户特定条目的值。在任一情况下,处理返回到步骤414。当安全性列表318的每个字段均被处理时,登录验证算法160退出,并且用户现在可以开始发出查询。
图5示出举例说明运行时组件150的操作的一个实施例的示例性运行时方法500。具体地说,运行时方法500的各方面可由安全性算法151(图1)实现。当运行时组件150接收抽象查询的实例(如图2所示的抽象查询202)作为输入时,在步骤502进入方法500。在步骤504,运行时组件150读取和解析抽象查询的实例,并且定位各个选择标准和期望的结果字段。在步骤506,运行时组件150进入用于处理存在于抽象查询中的每个查询选择标准语句的循环,从而构建具体查询的数据选择部分。在一个实施例中,选择标准包括字段名称(用于逻辑字段)、比较操作符(=、>、<等)以及值表达式(即被比较的字段)。在步骤508,运行时组件150使用来自抽象查询的选择标准的字段名称,以在数据存储库抽象组件148中查询该字段的规定。如上所述,字段规定包括用来访问与字段相关联的物理数据的访问方法的定义。另外,字段规定可包括安全性信息162。从而,运行时组件150确定(步骤510)对于检索的查询字段规定是否存在该特定用户(即发出查询的用户)的安全性规则。也就是,运行时组件150参考访问类型安全性列表312和值类型安全性列表318,以确定是否存在对应于字段规定的字段名称。如果在任一列表中都未找到字段规定的安全性规则,则处理进入步骤516。如果存在安全性规则,则运行时组件150确定(步骤512)是否必须采取由规则指定的安全性操作。在访问类型限制的情况下,如果在步骤510在访问类型安全性列表312中找到与字段规定的逻辑字段对应的字段条目,则必须采取规则指定的安全性操作,而不管字段条目的值。在值类型限制的情况下,如果在步骤510在值类型安全性列表318中找到与正被分析的逻辑查询组件/标准中的逻辑字段值对应的字段值,则必须采取规则指定的安全性操作。如果步骤512被肯定回答,则运行时组件150(在步骤514)记录必须采取操作。然后,处理进入步骤516。
然后,运行时组件150为正被处理的逻辑字段构建(步骤516)具体查询组成部分(Contribution)。如这里定义的,具体查询组成部分是用来根据当前逻辑字段执行数据选择的具体查询的一部分。具体查询是采用诸如SQL和XQuery的语言表示的查询,并且与给定物理数据存储库(例如,关系数据库或XML存储库)的数据一致。从而,使用具体查询来从由图1所示的DBMS154所代表的物理数据存储库定位和检索数据。然后,将为当前字段生成的具体查询组成部分添加(步骤518)到具体查询语句。然后,方法500返回到步骤506,以开始处理抽象查询的下一个字段。从而,针对抽象查询中的每个数据选择字段,迭代在步骤506进入的过程,从而将附加内容贡献给要执行的最终查询。
在构建具体查询的数据选择部分之后,运行时组件150识别要作为查询执行的结果而返回的信息。如上所述,在一个实施例中,抽象查询定义要作为查询执行的结果而返回的抽象字段的列表,这里称作结果规定。抽象查询中的结果规定可包括字段名称和排序标准。在一个实施例中,结果规定还包括安全性信息162,其可以相同于或类似于上面参照表II描述的安全性信息来定义。为了处理结果规定,方法500在步骤502进入循环,以将结果字段定义添加到正被生成的具体查询。在步骤522,运行时组件150在数据存储库抽象148中查询(来自抽象查询的结果规定的)结果字段名称,然后从数据存储库抽象148检索结果字段定义,以识别要为当前逻辑结果字段返回的数据的物理位置。在步骤524,运行时组件150确定对于正被处理的特定结果字段定义的该特定用户是否存在安全性规则。也就是,运行时组件150参考访问类型安全性列表312,以确定是否存在对应于结果规定的字段名称(由于对于结果,没有值是可用的,因此不检查值类型安全性列表318)。如果在列表312中未找到结果规定的安全性规则。则处理进入步骤530。否则,运行时组件150确定(步骤526)为结果字段定义的规则是否指定必须采取的操作。这可以以类似于上面参照步骤512所述的方式来执行。如果步骤526被肯定回答,则运行时组件150记录(步骤528)必须采取操作。在任一情况下,处理进入步骤530。
在步骤530,运行时组件150(在步骤530)为逻辑结果字段构建(识别要返回的数据的物理位置的具体查询的)具体查询组成部分。然后,在步骤532,将具体查询组成部分添加到具体查询语句。
一旦抽象查询中的每个结果规定均被处理,则运行时组件150(根据是否以上述方式记录了任何操作)确定(步骤534)是否必须采取任何安全性操作。如果否,则在步骤542执行查询。然而,如果必须采取安全性操作,则检查所记录的操作(步骤536)以确定最严格的操作。在一个实施例中,每个操作被分配一个数值,其中这些数值随着增大的严格度而上升。在步骤538,运行时组件150确定该操作是否是致命的(即,阻止执行查询)。如果否,则在步骤542执行查询。如果该操作是致命的,则不执行查询,并且向用户通知违反安全性(步骤540)。然后,方法500结束。
应当注意的是,由安全性算法151执行的上述查询验证一般可以在两个时候的任一个执行。在一个实施例中,当构建每个查询条件时,可以发生验证。这样的方案将加速向用户通知违反安全性。然而,该方案的缺点是它帮助试图推翻安全限制的用户进行适当的试验(例如,递增地修改查询)。从而,另一种可选方案是只有当用户输入且发出了整个查询时才执行查询验证。后一方案还确保在检查违反之前向运行时组件150提供查询的“总画面”,从而与单个条件相比使用户的意图更加明显。
值类型限制的运行时方法500可参考关于表II的“last name”字段和数据存储库抽象的上面例子来说明。假定用户是Mary McGoon,则将在登录(登录验证方法300)期间,在值类型安全性列表318中输入了last name列中的值“McGoon”的条目。现在假定Mary McGoon发出了在“last name”字段中包含值McGoon的逻辑查询,则运行时组件150检查(步骤510和步骤524)(当Mary McGoon登录时为其生成的)访问类型安全性列表312或值类型安全性列表318中的任一个是否包含“last name”字段的安全性规则。在确定值类型安全性列表318包含“last name”字段的安全性规则之后,安全性算法151响应所尝试的访问确定(步骤512和526)规则是否需要操作。在本例中,由于正被分析的逻辑查询标准包含值“McGoon”,并且规则是为用户Mary McGoon指定操作的值类型规则,因此需要操作。由表II的数据存储库抽象组件指定(并且记录在值类型安全性列表318中)的操作为“NoAction(无操作)”。如果所尝试的访问确实需要操作,则安全性算法151记录必须采取在安全性信息162中定义的操作(步骤514和528)。
在本例中,当指定用户发出具有特定值的查询时,执行指定的安全性操作(在Mary McGoon的情况下为无操作)。当然,本领域的技术人员应当认识到,还可以采用NOT操作符来配置安全性规则逻辑。例如,安全性规则可被配置成如果用户(例如,Mary McGoon)在查询中输入其它人的姓名,则“RunAndLog(运行并记录)”,但是如果同一用户输入其自己的名称则采取“NoAction”,或者反之亦然。
继续Mary McGoon的例子,假定Mary的记录表示她进行了HIV测试。从而,访问类型安全性列表将包含HIV测试字段的列(作为登录验证方法300的结果)。还假定Mary发出了引用HIV测试字段的查询。
运行时组件150检查(步骤510和524)(当Mary McGoon登录时为其生成的)访问类型安全性列表312或值类型安全性列表318中的任一个是否包含“HIV测试”字段的安全性规则。在确定访问类型安全性列表312包含“HIV测试”字段的安全性规则之后,安全性算法151必定响应所尝试的访问已确定(步骤512和526)该规则需要操作。这是因为,对于访问类型限制,在查询中指定的字段的值是无关的,从而仅仅在访问类型安全性列表312中存在HIV测试字段就表示存在并且必须施行安全性规则。应当注意的是,在本例子的每一个中,确定规则需要“操作”仅仅是确定规则已被指定并且用于施行规则的条件已被满足。当然,如在前面实施例中所述,规则可以是指定不要采取“任何操作”的“无操作”规则(例如,见表II、第038行)。在本例中,要采取的操作是“LogAndDoNotRun(记录且不运行)”。
应当清楚,在一个实施例中,访问类型安全性列表312和值类型安全性列表318仅仅是为了增强性能而提供的。在另一个实施例中,不使用列表312、318,并且运行时组件150直接访问数据存储库抽象组件148,以便验证查询。
参照图6描述用于根据步骤516和530构建逻辑字段的具体查询组成部分的方法600的一个实施例。在步骤602,方法600查询与当前逻辑字段相关联的访问方法是否是简单访问方法。如果是,则基于物理数据位置信息构建(步骤604)具体查询组成部分,然后根据上述方法500继续进行处理。否则,处理继续到步骤606,以查询与当前逻辑字段相关联的访问方法是否是过滤访问方法。如果是,则基于某物理数据实体的物理数据位置信息构建(步骤608)具体查询组成部分。在步骤610,以用于与物理数据实体相关联的子集数据的附加逻辑(过滤选择)扩展具体查询组成部分。然后,根据上述方法500继续进行处理。
如果访问方法不是过滤访问方法,则处理从步骤606进入步骤612,其中方法600查询访问方法是否是组合访问方法。如果访问方法是组合访问方法,则在步骤614定位和检索组合字段表达式中每个子字段引用的物理数据位置。在步骤616,以组合字段表达式的物理字段位置信息替代组合字段表达式的逻辑字段引用,由此生成具体查询组成部分。然后,根据上述方法500继续进行处理。
如果访问方法不是组合访问方法,则处理从步骤612进入步骤618。步骤618代表可被考虑为本发明实施例的任何其它访问方法类型。然而,应当理解,可以考虑其中实现少于全部可用访问方法的实施例。例如,在特定实施例中,仅使用简单访问方法。在另一个实施例中,仅使用简单访问方法和过滤访问方法。
如上所述,如果逻辑字段指定不同于底层物理数据的数据格式,则可能有必要执行数据转换。在一个实施例中,当根据方法600构建逻辑字段的具体查询组成部分时,对每个相应的访问方法执行初始转换。例如,可以作为步骤604、608和616的一部分或者紧接在其后执行转换。在步骤542执行查询之后,执行随后的从物理数据格式到逻辑字段格式的转换。当然,如果逻辑字段定义的格式与底层物理数据相同,则转换是不必要的。
在前面说明中,安全性条件以在发出查询的用户的表中的列与另一个人的相同列之间建立关联为前提。也就是,例如,值类型限制要求进行用户特定值(例如,姓)与另一个人的(用户试图访问的)相同值之间的比较。当然,在其它实施例中,安全性限制可被扩展成包括任何其它“敏感”信息(从发出查询的特定用户的观点来看)。例如,可能期望阻止用户访问前配偶的性。可以在应用程序140的安全性算法中指定究竟限制哪些值/字段。
在一个实施例中,将安全性限制扩展成包括任何其它“敏感”信息的前述方面可通过字段相关来实现。字段相关允许特定字段上的安全性与另一个字段中的值相关。例如,“last name(姓)”字段可与“address(地址)”相关,以在发出查询的用户居住于该地址的同时,检索目前或先前居住于同一地址的其它人的姓名。然后,给定这些姓名,可检查用户的姓名历史,以生成可阻止用户访问的扩展姓名列表。作为另一个示例,给定数据库中的家谱信息,规则可被编写成巡视(walk through)家族树,从而构建过去N代的复杂姓名列表(例如,其中N是整数)。作为另一个示例,给定医生的当前病人列表(可以从数据仓库容易地获得),可以为所有其它姓名对医生施加一定程度的安全限制。
如上所述,一些安全性操作包括记录所尝试的访问。更一般地说,本领域的技术人员应当认识到,当调用安全性规则时,可采取各种各样的响应。例如,可以向系统管理员发出通知(例如,通过电子邮件)。
如上所述,数据存储库抽象组件148仅仅示例说明提供各种优点的一个实施例。在一个方面中,通过定义应用程序查询规定和底层数据表示之间的松散耦合来实现这些优点。不是采用特定表、列和关系信息对应用程序进行编码,例如使用SQL的情况,而是应用程序以更抽象的方式定义数据查询需求,然后,在运行时将这些需求绑定到特定物理数据表示。
本发明的松散查询-数据耦合使得,即使修改底层数据表示或者如果要与相比于在开发请求实体时所使用的是全新的物理数据表示一起使用请求实体,请求实体(例如,应用程序)也能够工作。在修改或重构给定物理数据表示的情况下,更新对应的数据存储库抽象,以反映对底层物理数据模型做出的修改。相同的逻辑字段集可供查询使用,只是绑定于物理数据模型中的不同实体或位置。结果,即使对应的物理数据模型发生了重大的改变,针对抽象查询接口而编写的请求实体也继续不变地工作。在要与相比于在开发请求实体时所使用的是全新的物理数据表示一起使用请求实体的情况下,新的物理数据模型可使用相同的技术(例如,关系数据库)、但遵循不同的命名策略和组织信息(例如,不同的大纲)来被实现。新大纲将包含可使用简单、过滤和组合字段访问方法技术映射到应用程序所需的逻辑字段集的信息。可选地,新的物理表示可使用用于表示类似信息的可选技术(例如,使用基于XML的数据存储库,而非关系数据库系统)。在任何情况下,通过提供映射在查询中引用的字段与新物理数据模型中的位置和物理表示的可选数据存储库抽象,被编写成使用抽象查询接口的现有请求实体可以容易地移植成使用新的物理数据表示。
关于最终用户,数据存储库抽象提供数据过滤机制,从而暴露有关数据,并且阻止访问选定内容。然而,应当理解,数据存储库抽象仅是本发明的一个实施例。更一般地,本发明以根据用户-数据相关性提供查询的执行(或不执行)的任何方式来实现。也就是,根据最终用户和当执行时将由该查询访问/返回的特定数据,进行查询执行。
然而,应当强调的是,本领域的技术人员可以容易地认识到,可以与数据存储库抽象组件分离地实现本发明的安全特性特征和机制。例如,在传统关系数据库的上下文中,一个实施例提供多个附加数据库表,以存储将表和列与安全性规则相关联的信息。对访问表/列中的信息的企图应用安全性规则。在这种情况下,安全性组件负责分析采用查询语言(例如,SQL)编写的查询,并且根据在查询断定(predicate)内引用、或者作为指定查询的结果集的成员返回的表/列和集合,确定所应用的安全性规则集。
应当注意,这里对特定值、定义、编程语言和例子的任何引用仅仅为了示例说明的目的。从而,本发明不局限于任何特定说明和例子。此外,虽然本发明的各方面是参照SELECTION(选择)操作来描述的,但是也可考虑其它输入/输出操作,包括公知的操作,如ADD(添加)、MODIFY(修改)、INSERT(插入)、DELETE(删除)等。当然,特定访问方法可对抽象查询功能的类型施加限制,其中可使用利用特定访问方法的字段来定义抽象查询功能。例如,涉及组合访问方法的字段不是MODIFY、INSERT和DELETE的可行对象。
虽然前文涉及本发明的多个实施例,但是在不脱离本发明的基本范围的情况下可以设计本发明的其它和另外实施例,并且其范围由所附权利要求限定。
权利要求
1.一种提供关于数据的安全性的方法,包括接收用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;以及基于该至少一个字段的特定于用户的数据的存在,确定是否必须调用针对该至少一个字段为用户指定的安全性规则。
2.如权利要求1所述的方法,其中该查询是SQL查询。
3.如权利要求1所述的方法,还包括调用安全性规则;其中调用安全性规则包括确定是否执行查询。
4.如权利要求1所述的方法,还包括当确定存在该至少一个字段的特定于用户的数据时,必须调用安全性规则,而不管该至少一个字段的特定于用户的数据的值。
5.如权利要求1所述的方法,其中确定是否必须调用安全性规则包括确定该至少一个字段的关联值与该至少一个字段的特定于用户的数据的值之间的匹配。
6.如权利要求1所述的方法,还包括在调用安全性规则之前,确定该至少一个字段的特定于用户的数据的存在。
7.如权利要求6所述的方法,其中在用户登录时执行确定该至少一个字段的特定于用户的数据的存在。
8.一种提供关于数据的安全性的方法,包括生成至少一个安全性列表,该安全性列表反映针对给定用户存在的数据的多个字段的每一个,其中该多个字段的每一个具有为给定用户定义的安全性规则;接收给定用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;访问该至少一个安全性列表,以确定该查询的该至少一个字段是否反映在该至少一个安全性列表中;以及如果该查询的该至少一个字段反映在该至少一个安全性列表中,则施行安全性规则。
9.如权利要求8所述的方法,其中该至少一个安全性列表包括值类型安全性列表,其包含反映在值类型安全性列表中的多个字段的每一个的值,并且其中访问该至少一个安全性列表包括确定该查询的该至少一个字段的关联值是否匹配反映在值类型安全性列表中的对应字段的值。
10.如权利要求8所述的方法,其中施行安全性规则包括阻止执行查询。
11.如权利要求8所述的方法,其中施行安全性规则包括记录查询的发出。
12.如权利要求8所述的方法,其中,如果该查询的该至少一个字段反映在安全性列表中,则施行安全性规则,而不管反映在安全性列表中的该查询的该至少一个字段的值。
13.一种对具有特定物理数据表示的数据提供安全性的方法,包括提供查询规定,其包括多个用于定义抽象查询的逻辑字段;提供将该多个逻辑字段映射到数据的物理实体的映射规则;为该多个逻辑字段提供用户特定的安全性规则;接收用户对数据库发出的抽象查询,其中该抽象查询根据查询规定来定义,并且以至少一个逻辑字段和该至少一个逻辑字段的关联值配置;基于该至少一个逻辑字段的特定于用户的数据的存在,确定是否必须调用针对该至少一个逻辑字段为用户指定的安全性规则。
14.如权利要求13所述的方法,还包括,在调用安全性规则之前,确定该至少一个逻辑字段的特定于用户的数据的存在。
15.如权利要求13所述的方法,还包括调用安全性规则;其中调用安全性规则包括确定是否执行查询。
16.如权利要求13所述的方法,还包括当确定存在该至少一个字段的特定于用户的数据时,必须调用安全性规则,而不管该至少一个字段的特定于用户的数据的值。
17.如权利要求13所述的方法,其中确定是否必须调用安全性规则包括确定该至少一个字段的关联值与该至少一个字段的特定于用户的数据的值之间的匹配。
18.一种包含当被执行时执行安全性验证操作的安全性验证指令的计算机可读介质,该安全性验证操作包括接收用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;以及基于该至少一个字段的特定于用户的数据的存在,确定是否必须调用针对该至少一个字段为用户指定的安全性规则。
19.如权利要求18所述的计算机可读介质,安全性验证操作还包括调用安全性规则;其中调用安全性规则包括确定是否执行查询。
20.如权利要求18所述的计算机可读介质,其中该查询是SQL查询。
21.如权利要求18所述的计算机可读介质,安全性验证操作还包括当确定存在该至少一个字段的特定于用户的数据时,必须调用安全性规则,而不管该至少一个字段的特定于用户的数据的值。
22.如权利要求18所述的计算机可读介质,其中确定是否必须调用安全性规则包括确定该至少一个字段的关联值与该至少一个字段的特定于用户的数据的值之间的匹配。
23.一种包含当被执行时执行安全性验证操作的安全性验证指令的计算机可读介质,该安全性验证操作包括生成至少一个安全性列表,该安全性列表反映针对给定用户存在的数据的多个字段的每一个,其中该多个字段的每一个具有为给定用户定义的安全性规则;接收给定用户对数据库发出的查询,其中以至少一个字段和该至少一个字段的关联值配置该查询;访问该至少一个安全性列表,以确定该查询的该至少一个字段是否反映在该至少一个安全性列表中;以及如果该查询的该至少一个字段反映在该至少一个安全性列表中,则施行安全性规则。
24.如权利要求23所述的计算机可读介质,其中该至少一个安全性列表包括值类型安全性列表,其包含反映在值类型安全性列表中的多个字段的每一个的值,并且其中访问该至少一个安全性列表包括确定该查询的该至少一个字段的关联值是否匹配反映在值类型安全性列表中的对应字段的值。
25.如权利要求23所述的计算机可读介质,其中施行安全性规则包括阻止执行查询。
26.如权利要求23所述的计算机可读介质,其中施行安全性规则包括记录查询的发出。
27.如权利要求23所述的计算机可读介质,其中,如果该查询的该至少一个字段反映在安全性列表中,则施行安全性规则,而不管反映在安全性列表中的查询的该至少一个字段的值。
28.一种计算机可读介质,包括存储在其上的信息,该信息包括查询规定,其包括多个用于定义抽象查询的逻辑字段;多个映射规则,其将该多个逻辑字段映射到数据的物理实体;该多个逻辑字段的多个用户特定安全性规则;运行时组件,其可执行以响应于接收用户对数据发出的抽象查询而执行安全性验证操作,其中该抽象查询根据查询规定来定义,并且以至少一个逻辑字段和该至少一个逻辑字段的关联值配置,该安全性验证操作包括基于该至少一个逻辑字段的特定于用户的数据的存在,确定是否必须调用针对该至少一个逻辑字段为用户指定的安全性规则。
29.如权利要求28所述的计算机可读介质,其中安全性验证操作还包括调用安全性规则;其中调用安全性规则包括确定是否执行查询。
30.如权利要求28所述的计算机可读介质,其中安全性验证操作还包括当确定存在该至少一个字段的特定于用户的数据时,必须调用安全性规则,而不管该至少一个字段的特定于用户的数据的值。
31.如权利要求28所述的计算机可读介质,其中运行时组件确定是否必须调用安全性规则包括确定该至少一个字段的关联值与该至少一个字段的特定于用户的数据的值之间的匹配。
全文摘要
一种用于保护数据的系统、方法和产品。针对字段和/或字段值定义安全性规则(162)。安全性规则(162)指定要应用规则(162)的一个或多个用户。检查查询(202)的内容,并且基于内容(例如,字段和/或该字段的值)和用户特定数据来确定是否需要安全性操作。
文档编号G06F21/00GK1688977SQ03823637
公开日2005年10月26日 申请日期2003年9月25日 优先权日2002年10月3日
发明者理查德·D·德廷杰, 理查德·J·史蒂文斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1