最优化行级别数据库安全的系统和方法

文档序号:6513890阅读:161来源:国知局

专利名称::最优化行级别数据库安全的系统和方法相关申请参照本申请要求于2004年2月11日提交的题为“为数据库表格行提供行级别安全的系统和方法”(“SystemsandMethodsThatProvideRowLevelSecurityforDatabaseTableRow”)的美国专利临时申请60/543,855的权益,其全文在此引入作为参考。本申请与于__提交的美国专利申请__(律师案号MS308288.02/MSFTP647USA)有关,其题为“指定行级别数据库安全的系统和方法”(“SystemsandMethodsThatSpecifyRowLevelDatabaseSecurity”)。技术领字段本发明一般涉及数据库,尤其涉及用行级别安全表达式来增强查询,以最优化性能并减轻数据泄漏的系统和方法。
背景技术
:计算机硬件、软件和网络的技术进步提高了人们用电子信息交换取代诸如纸张和电话通信等常规技术的需求。这种电子通信在全世界基本上任意两个地点之间都能提供瞬间发生的、可靠的数据传输。许多行业和消费者发挥这种技术用以通过基于web(例如在线)的服务来改进效率并降低成本。例如,消费者能点击鼠标在家里购买货物、查看银行报表、研究产品和公司、获取实时股票报价、下载宣传册等。随着可用电子数据的数量在增长,以便于用户友好和快速的数据搜索和检索的可管理方式存储这种数据变得越来越重要。今天,一种常用方法是把电子数据存储在一个或多个数据库中。一般而言,典型的数据库是有组织的信息集合,使其结构化从而例如计算机程序能够快速搜索和选择数据。通常,存储在数据库中的数据通过一个或多个表格进行组织,其中相应的表格包括成组的记录而一条记录则包括成组的字段。记录通常被索引为表格中的行而记录字段则被索引为列,从而行/列对能够指向表格中的具体数据。存储在数据库中的数据常常包括个人信息(例如银行账户和社会安全号)和敏感信息(例如病历),且不能通过硬拷贝来备份。因此,涉及数据库和存储于其中的数据的安全性变得越来越重要。然而,许多现有的数据库安全技术能被突破,例如由于软件漏洞和/或由有不良意图的软件黑客,或者这些技术不能提供全面的安全。
发明内容以下简单归纳了本发明的内容,以便提供对本发明部分方面的基本理解。这部分内容不是本发明的广泛纵览。它并非旨在标识本发明的关键/重要元素或描绘本发明的范围。其唯一目的是用简化形式表示本发明的部分概念,作为后面呈现的更详细描述的序幕。本发明的诸系统和方法通过提供能被用来创建指定安全表达式(namedsecurityexpressions)并使其关联于一个以上查询初启程序(queryinitiator)的增强语法,来推动数据库行级别安全。这种表达式包括表示为任意布尔表达式的谓项(predicate),数据行必须满足该谓项以便使该数据可被查询初启程序访问。一般而言,当激活行级别安全时,用关联于查询初启程序的安全表达式增强所接收的查询。在对数据行查询期间利用这些表达式,其中满足安全表达式(或者求得为“真”的值)的行可被查询初启程序访问。在一特定示例中,通过嫁接(grafting)一表达式来使所接收的查询得以增强,该表达式由当其满足时即准许行访问的布尔表达式的逻辑和(disjunction)与当其满足时即拒绝行访问的布尔表达式的补码(complement)的逻辑积(conjunction)所组成。换言之,将查询增强使得在满足至少一个准许表达式且没有满足一个拒绝表达式时,行数据满足聚集的安全表达式。诸系统和方法能各不相同地在查询中置入并移动包括安全表达式的表达式,以便最优化查询性能。常规技术不考虑是否应当在其它表达式之前对一个或多个安全表达式求值。因而,常规系统容易泄漏,用户可访问该用户不应当见到的数据。本发明减轻了这种泄漏。通常,这通过在安全表达式上作特殊标记以便区分安全表达式和非安全表达式来达成。然后,可利用谓项移动规则以便于减轻数据泄漏。仅在限定情形中,这些规则使非安全表达式被拖到(或压到)安全表达式之上(或之下)。在许多实例中,可在编译时执行静态分析以确定表达式是否是“安全”表达式,或者表达式是否可无信息揭示风险地运行。在其它实例中,能可选地或附加地在运行时执行动态分析,以确定表达式是否是“安全”表达式。对于动态分析,通常直到已成功运行了安全谓项和/或未遇到安全侵犯(例如错误条件、中断、事件……)才返回结果并作改动。对于静态分析和动态分析,如果未发现安全侵犯,则可确定表达式的排列顺序以改进性能。然而,如果检测到安全侵犯,则放弃查询或查询在“安全”模式中运行,其中安全表达式在运行非安全表达式之前求值。一般而言,认为逻辑操作是“安全”的。安全表达式能通过诸如“SQL”的数据库语言关联到查询初启程序上。例如,安全表达式可使用SQLCREATE(SQL创建)实用工具(utility)创建。已创建安全表达式可通过SQLGRANT(SQL准许)或SQLDENY(SQL拒绝)实用工具关联到查询初启程序。准许和/或拒绝安全表达式可通过SQLREVOKE(SQL撤消)实用工具取消,而安全表达式可通过SQLDROP(SQL丢弃)实用工具放弃。这种安全表达式通常被结合于查询中并在查询数据时利用。一般而言,准许安全表达式是在一个数据行满足它时提供对该数据行的访问的表达式,而拒绝安全表达式则是在数据行满足它时禁止对该数据行访问的表达式。如上所述,多个安全表达式可与查询初启程序相关联;因而,准许安全表达式和拒绝安全表达式两者都可以与一用户相关联。通常,拒绝安全表达式会取代准许安全表达式,使得满足两种安全表达式的行对查询初启程序不可用。另外,可利用拒绝安全表达式的补码,从而当满足至少一个准许安全表达式且没有满足一个拒绝表达式时,用多个安全表达式对行数据求值的聚集结果呈现为“真”。传统上,为了使安全与行相关联,需要标识相应行。然而,许多数据库编程语言并未说明如何用地址来标识表格中的相应各行。在一些情形中,可利用初级关键字(primarykey)作为表格的地址。然而,并不是每个表格都有初级关键字。此外,关联安全使得表格中的行能分别被单个标识可导致数据管理问题,因为表格中可能会有很多行。还有,把安全信息存储在相应行中效率低又占用空间,特别是如果存储在行中的各个值并不是很大时。另外,许多数据库编程语言规定了语法,通过这些语法可在表格或其一个或多个构成列上(而不是在行上)指定安全。本发明的新系统和方法能通过增强SQL语法用来减轻前述缺点。以下说明和附图详细陈述了本发明的某些说明性方面。然而,这些方面仅仅示出了本发明诸原理可在其中采用的各种方式的其中几种,且本发明旨在包括所有这些方面及其等同方案。结合附图参阅本发明的以下详细说明,本发明的其它优点和新特征会变得清楚。图1阐述了通过用安全表达式增强查询有助于数据访问安全的系统。图2阐述了为了性能最优化安全增强查询的数据安全系统。图3阐述了用由数据管理员存储在表达式库中的安全表达式来增强查询的数据安全系统。图4阐述了利用安全增强查询来查询数据库的系统。图5阐述了用来实现行级别数据库安全的方法论。图6阐述了用来准许对表格行的行级别安全权限的方法论。图7阐述了用来拒绝对表格行的行级别安全权限的方法论。图8阐述了用来取消准许和/或拒绝对表格行的行级别安全权限的方法论。图9阐述了示例性SQL查询管理系统。图10阐述了示例性网络环境,其中可采用本发明的新方面。图11阐述了示例性操作环境,其中可采用本发明的新方面。具体实施例方式当用于本发明时,术语“组件”、“系统”和“管理器”等等旨在指计算机相关实体硬件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是,但不限于是,运行于处理器的过程、处理器、对象、可执行组件、执行线程、程序、和/或计算机。作为说明,运行于服务器上的应用和服务器都是组件。一个或多个组件可驻留于执行的过程和/或线程中,且组件可在一台计算机上本地化和/或在两台或多台计算机上分散化。本发明涉及用来实现行级别数据库安全的系统和方法。这种安全促使一组或多组有类似安全特征的行被逻辑地聚集(aggregated)起来,并被一起视为定义在(但不局限于)表格和/或上下文数据上的带有一个或多个编程指令诸如布尔表达式的指定表达式。安全表达式可各不相同地增强查询,以便排列该查询的谓项以最优化性能并减轻安全泄漏。另外,可将安全表达式聚集使得满足该聚集表达式(例如返回“真”)提供对数据行的访问,而不满足该聚集表达式(例如返回“假”)限制对数据行的访问。本发明参照附图进行描述,其中相同参考标记贯穿全文用来指向相同元素。在以下描述中,为了进行解释,陈述了许多具体细节以便提供本发明的全面理解。然而,显然没有这些特定细节也可实现本发明。在其它实例中,众所周知的结构和装置被以方框图形式显示,以便于描述本发明。图1阐述了促进查询数据时数据访问安全的系统100。系统100包括输入组件110、查询管理器120和输出组件130。输入组件110接收查询。这种查询能从基本上任意数据库编程语言诸如SQL起始,并被指向包括一个或多个数据库、表格、上下文信息等等的数据超集(datarepository)。查询管理器120能增强接收到的查询以将数据安全结合其中。这种安全可由数据所有者在数据超集中创建,其中创建的安全提供对该所有者数据的安全。该安全可应用于各种格式或结构的数据。例如,当数据关联于行、表格和/或列时,安全能都不应用、或全部应用、或应用在其中的任意组合中。另外,安全可如此构建使得满足该安全提供对数据的访问,或满足该安全禁止对数据的访问。可以理解,安全可由多个不同安全组成,其中部分能提供访问而部分能禁止访问。此外,表格的创建者能把一个或多个安全表达式链接到一个或多个查询者。一般而言,如果安全未链接,查询者将不能看到任何数据。如果安全与查询者链接,只有当数据满足至少一个提供对数据访问的安全表达式且没有满足任何拒绝对数据访问的安全表达式时,查询者才能访问数据。通常,拒绝访问的安全取代准许访问安全从而当数据满足两种安全时,访问被拒绝。另外,准许安全和拒绝安全都能取消。前述内容使得数据所有者具备了选择性地确定谁能访问其数据的哪一部分的能力。另外,查询者能被加以豁免状态,从而安全不应用于查询者且查询者基本上能访问所有数据。通常以这种方式从所有的行级别安全限制中豁免表格的所有者。增强查询能传送到输出组件130。输出组件130能提供这种查询用来作进一步处理,或向查询数据的组件(包括它自己)提供这种查询。图2阐述了带有输入组件110、查询管理器120、输出组件130、以及加上优化器210的数据安全系统100。如上所述,输入组件110接收对查询各种结构化数据的数据超集的请求。查询管理器120增强请求以在其中结合数据安全表达式。这种安全能由数据所有者在数据超集中创建,其中创建的安全为数据的所有者提供安全。该安全能通过表达式来定义,比如求值为诸如“真”和“假”、或“1”和“0”的二元值的布尔表达式,这些表达式可用来指示安全空间(securityclearance)和限制访问。当利用一个以上表达式时,表达式可分别进行连续或并发求值,且将各个结果聚集(例如进行“与”和“或”计算)以呈现一判定。如上简述,可产生当满足时明确允许(例如准许)或禁止(例如拒绝)对数据访问的表达式。由于满足禁止数据时这种表达式结果为“真”,可利用补码使得满足该表达式结果为“假”。因而,当满足至少一个准许表达式且没有一个拒绝表达式求值为“真”时,可创建返回“真”的聚集表达式。可以理解,尽管可采用布尔表达式,根据本发明的一方面也可利用其它技术。这种技术可能能够提供概率和/或置信级别,并结合可调阈值以定义分离点。优化器210能在查询中结合并移动包括安全表达式在内的表达式,以便将查询最优化。常规技术不考虑是否一个或多个恰当嫁接的安全表达式应当先于其它表达式求值。因而,常规系统容易泄漏,用户访问到该用户不应当见到的数据。本发明减轻了这种泄漏。通常,这通过嫁接查询时在安全表达式上作特殊标记以便区分安全表达式和非安全表达式来达成。然后优化器210可利用谓项移动规则来有助于减轻数据泄漏。这些规则使优化器210仅将限定类的非安全表达式拖到安全表达式之上,或将限定类的非安全表达式压到安全表达式之下。在许多实例中,静态分析可在编译时执行以确定表达式是否是“安全”表达式,或者表达式是否可无信息揭示风险地运行。在其它实例中,动态分析能可选地或附加地在运行时执行,以确定表达式是否真正是“安全”表达式。对于动态分析,通常不返回结果且通常也不作改动,直到查询已成功完成而在执行中未遇到安全侵犯(例如错误条件、中断、事件……)。对于静态分析和动态分析,如果未发现安全侵犯,则优化器210可确定表达式的排列顺序以改进性能。然而,如果检测到安全侵犯,则放弃查询或查询在“安全”模式中运行,其中安全表达式在运行非安全表达式之前求值。在查询中对安全谓项进行特别标记就可执行这种计划。对于静态分析,一般而言,认为逻辑操作是“安全”的。在用安全表达式增强查询并在查询中将表达式最优化后,查询可传送到输出组件130。输出组件130可提供增强查询做进一步处理或去查询数据。图3阐述了包括输入组件110、查询管理器120、输出组件130、优化器210、以及加上表达式库310的数据安全系统100。输入组件110能从一个或多个查询者处连续地或并发地接收对数据的请求,其中多个请求能与数据超集中类似的和/或不同的数据相关联。另外,多个请求可连续地和/或并发地进行处理。在许多实例中,可利用诸如缓冲器(未示出)的存储器来暂时存储与请求相关的信息以便使请求排队。例如,当在处理低优先级的请求时可接收标记为高优先级的请求,其中低优先级请求可被高速缓存直到高优先级的请求已受到服务。能利用表达式库310来存储一个或多个安全表达式以及非安全表达式。这种表达式可关联于一个或多个请求者和/或一组或多组请求者。在标识了请求者之后,表达式可从表达式库310中检索。例如,接收到的查询可包括与请求者(例如用户、应用……)或传送请求的机器相关联的唯一标识符。在另一实例中,这种信息可在查询之前或之后。在又一实例中,可采用智能来确定请求者和/或适当的安全表达式集。当搜索数据超集时可采用为请求检索到的安全表达式。可以理解,可由数据管理员利用应用程序界面(API)(未示出)在表达式库310中创建关于数据的安全表达式。作为示例,可利用SQL编程语言中的CREATE实用工具来创建安全表达式。例如,能利用以下SQL语法来创建安全表达式CREATEEXPRESSION<expression_name>ON<data_name>AS(<expression>)其中<expression_name>指定表达式名,<data_name>指定来源(例如,一个或多个表名或其中的子集),且<expression>是为了访问行中的数据行必须满足的安全表达式。如上所述,这种表达式可与特定的请求者和/或请求者组链接。例如,当利用SQL时,数据管理员可通过GRANT(准许)、REVOKE(撤销)和DENY(拒绝)实用工具将为特定数据源创建的安全表达式链接到用户和/或用户组中,或者通过DROP(放弃)实用工具移除安全表达式,如下详述。在一特定示例中,查询管理器120能通过嫁接由准许的布尔表达式的逻辑和(例如“或”)组成的表达式(其中相应的表达式与对其作出准许的相关联安全主体(securityprincipal)(例如身份安全)取逻辑积),并通过对所得逻辑和与拒绝的各个布尔表达式的补码的逻辑积(例如“与”)取逻辑积(例如“与”)(其中相应的表达式与对其作出拒绝的安全主体取逻辑积),来增强查询。换言之,查询管理器能增强查询,使得在满足至少一个准许表达式并没有满足任何拒绝表达式时数据能够满足查询。这种增强查询可传送到输出组件130并用来推动查询数据。图4阐述了促进数据库安全的系统400。系统400包括对数据库的用户访问点405。如图所示,用户访问点405是台式计算机;然而,可以理解根据本发明的一方面,可采用诸如便携式计算机(例如膝上型、笔记本PC……)、手持式计算机(例如PDA)、工作站、蜂窝式电话等等的任何基于微处理器的装置。在许多示例中,用户访问点405耦合到较大网络/总线中(例如工厂或公司范围)的子网络/总线,其中有子网络/总线账户的用户可在用户访问点405登录,并在提供给用户的特权(例如权利、属性……)范围内访问驻留其中的实体和应用。通常,会利用更细化的区分等级,其中关联于网络的用户被描绘成与不同特权相关联的领域、组、项目、工作描述、工作组、分公司、部门、状态等。另外,在任何相似描述中的用户可与不同特权相关联。例如,多个用户可组合在一起,而用户之一可准许作为其它用户的督导者。这种用户一般有特权去限制其它用户。例如,督导者可更改其它用户的读、写和执行权利、查看特定信息的能力和/或因特网能力。在本示例中,用户可被描绘成L个这样的组,其中L是等于或大于1的整数。该L组包括组14101、组24102直到组L410L,它们统称为组410。组410可包括不同和/或类似的用户。因而,特定用户可与多个组相关联。组14101被示为包括M个用户,其中M是等于或大于1的整数。M个用户包括用户14201、用户24202直到用户M420M。这种用户统称为用户420。当用户420之一登录访问点405时,可确定和利用用户身份(例如唯一ID、别名……)、组名、域名、工作组等来为用户配置环境。这种配置可包括执行一定制界面、隐藏数据、揭示数据、设定读、写和/或执行特权等。该用户可通过查询管理器110与数据库430通信。例如,当在数据库430传送查询时,该查询可由可获取查询来源和/或各种诸如用户和/或组身份的其它特征的查询管理器110接收。查询管理器110可利用该信息来获取并应用适当的安全表达式。如上所述,这种安全包括一个或多个布尔表达式,其中这些表达式可一些标准有关,在数据满足这些标准时使数据访问成为可能,或在数据满足这些标准时减少数据访问。安全表达式可从表达式库中获取。这种表达式能关联于一个或多个请求者和/或一个或多个请求者组,并在请求与表达式相关联之后进行检索。例如,接收到的查询可包括与请求者(例如用户、应用……)或传送该请求的机器相关联的唯一标识符。在另一实例中,这种信息可以是在查询之前和/或之后。在又一实例中,可采用智能来确定请求者和/或适当的安全表达式集。可通过SQL编程语言来创建安全表达式。例如,可利用SQLCREATE实用工具来为表格创建指定表达式,其中指定表达式指定为了获取对数据的访问,数据所必须满足的布尔表达式。这种表达式可与特定请求者和/或请求者组链接,以便利用数据安全。例如,当利用SQL时,数据管理员可通过GRANT、REVOKE和DENY实用工具将为特定数据源创建的安全表达式链接到用户和/或用户组中,或者通过DROP实用工具移除安全表达式,如下详述。一般而言,指定表达式对于基本上所有满足该表达式的行充当代替者。因而,通过利用该技术,当表格中存在初级关键字时可表达表格中所有的行/或各个单独的行。另外,实质上可对表格定义任意数量的表达式,且单个行可有一个以上对表格定义的表达式满足。前述内容提供了一种机制,以逻辑地聚类一组有相似安全特征的行,并视该组为指定表达式。查询管理器210能通过嫁接由准许布尔表达式的逻辑和(例如“或”)组成的表达式(其中表达式分别与对其作出准许的相关联安全主体(例如身份安全)取逻辑积),并通过对所得逻辑和与拒绝的各个布尔表达式补码的逻辑积(例如“与”)取逻辑积(例如“与”)(其中表达式分别与对其作出拒绝的安全主体取逻辑积),来增强查询。换言之,查询管理器能增强查询,使得在满足至少一个准许表达式并没有满足任何拒绝表达式时数据能够满足查询。可以理解数据库430中的安全表达式能由数据所有者或管理员创建,并链接于一个或多个用户。该链接可作为对用户的直接或间接准许(通过对一个或多个用户任务、服务器、组合等的准许)的结果而建立。作为示例,表格可被定义为Emp(idint,salaryfloat)其中Emp是表格名,id是整数类型的变量而salary是浮点数(float)类型的变量。用于表格的表达式可通过SQLCreate表达式来创建。例如,可执行以下语句以创建用于该表格的表达式CREATEEXPRESSIONSalLimitONEmpAS(salary<X)其中SalLimit是表达式名,salary(薪金)是要测试的字段,而X(例如100000)是确定行数据是否满足安全表达式的变量。诸如否定和/或取消语句的各种其它语句可通过相应表达式类似地采用。SalLimit安全表达式可通过以下准许表达式语法链接到用户GRANTSELECT(whereSalLimit)ONEmpTOUser1其中User1是授予了满足SalLimit的表格中行数据的权限的用户。这种语句隐含的意思是User1被允许查看Emp表格中满足SalLimi表达式的行。如果没有诸如上例的准许安全表达式时,行中的数据不能满足表达式因而不能向用户提供对任何行的数据的访问。另外,未满足这种条件的任何行都对用户呈现为不可见。此外,当满足拒绝安全表达式时,用户被禁止查看数据。如上所述,安全也可附加地基于列。例如,以下语句能准许行级别和列级别的两种安全。GRANTSELECT(whereSalLimit,Col1)ONEmpTOUser1其中附加的参数Col1被用来指定表格Emp中的列。此外,在同一表格中可有多个准许、拒绝、和/或取消语句。通常,拒绝语句会取代(supersede)准许语句,但系统可作其它配置。这种语句的被准许者可以是数据库中授权的例如在本说明书中定义的任意主要安全。类似地,提供有行、列和/或表格级别安全的拒绝表达式,以及取消准许或拒绝的取消表达式。示例性SQL拒绝语法如下所示DENYSELECT(WHERE<expression_name>)ON<data_name>TO(user_name)其中<expression_name>指定安全表达式,<data_name>指定源数据以根据安全表达式求值,且(user_name)指定用户或用户组以关联于命名安全表达式,且示例性SQL取消语法如下所示REVOKESELECT(WHERE<expression_name>)ON<data_name>FROM(user_name)其中<expression_name>指定要取消的安全表达式,<data_name>指定源数据,且(user_name)指定用户或用户组以与命名安全表达式分离。优化器210能在接收到的查询中移动包括安全表达式的表达式以便优化性能。一般而言,对安全表达式会进行标记,以辨别安全表达式和非安全表达式,且谓项规则被用来定义如何将安全表达式合并到查询中的范围。谓项规则使优化器210能够只有在确保非安全表达式在执行安全表达式之前不能被用来返回数据之后,才把非安全表达式拉到安全表达式之上,或把非安全表达式压到安全表达式之下。通常,逻辑操作被认为是“安全”的,且优化器210可把这种操作排列在安全表达式之上或之下。在许多实例中,要分析诸如用户定义表达式的表达式以确定它是否安全。一般而言,逻辑操作通常被认为是“安全”的。这种分析可静态地加以执行。如上所述,静态分析在编译时执行。相反动态分析则在运行时执行。有了静态分析,如果检测到安全侵犯,则放弃查询或查询在“安全”模式中运行,其中安全表达式在运行非安全表达式之前求值。查询管理器110可通过应用安全表达式并只返回满足该标准的数据来推动查询。如所述,查询在数据库430上执行,其中数据库包括N个表格,表格14401、表格24402、直到表格N440N,其中N是大于或等于1的整数,以及数据450。注意表格14401、表格24402和表格N440N可统称为表格440。一般而言,表格440可存储结构化格式的数据。这种结构化格式可包括有相似结构的一个或多个实体集,其中响应实体可被指为行。相应的行可与能被指为列的字段相关联。图5-8示出了根据本发明的方法。为便于解释,方法被显示和描述成一系列动作。可以理解和明白的是,本发明并不限于所述动作和/或动作顺序,例如动作能以各种顺序和/或同时发生,并与未在此显示和描述的其它动作一起发生。此外,要实现根据本发明的方法论,并不是所有的图示动作都是必需的。另外,本领字段技术人员将理解和明白,这些方法论可另外通过状态图表示为一系列相互关连的状态或事件。来看图5,阐述了实现行级别数据库安全的方法500。在标记号510,接收到来自一个或多个用户的一个或多个查询。这种查询能够连续地或并发地接收,并能与数据中相似和/或不同的数据相关联。另外,查询可在诸如台式计算机、便携式计算机、手持式计算机、工作站、蜂窝式电话等等的数据访问点上发送。在接收到查询后,能确定查询的来源。在许多实例中,来源关联于能用来标识用户的用户名、地址、网络、子网络、领域、组、项目、工作描述、工作组、分公司、部门、状态等,其中单个用户能与不同特权相关联。相似描绘中的用户能关联于相似或不同的特权。在标记号520,能为用户获取安全表达式。例如,数据库中数据的所有者能为其数据创建一个或多个安全表达式,并将这种表达式链接到用户。可以理解,可为一个或多个表格创建一个或多个安全表达式,并提供给一个或多个用户。因而,数据能同时满足多个安全表达式用来使多个用户同步访问数据。在未标识来源的场合,能利用智能来推断安全表达式和/或能应用缺省安全表达式。在530,查询能用安全表达式进行增强。当利用了一个以上表达式时,相应的表达式能通过逻辑“与”和/或“或”被聚集到逻辑语句中,以提供判定。另外,可创建在其满足时明白地允许(例如准许)或禁止(例如拒绝)对数据的访问的这种表达式。由于满足禁止数据时这种表达式结果为“真”,可利用补码使得满足该表达式结果为“假”。因而,可创建当满足至少一个准许表达式并没有一个拒绝表达式的值为“真”时返回“真”的聚集表达式。可以理解,尽管采用了布尔表达式,根据本方面的一方面可利用其它技术。作为示例,通过对被准许布尔表达式的逻辑和(其中表达式分别与对其作出准许的相关联主要安全取逻辑积),与被拒绝的各个布尔表达式补码的逻辑积取逻辑积(其中表达式分别与对其作出拒绝的主要安全取逻辑积),查询可得到增强。查询能得到增强,使得在满足至少一个准许表达式并没有满足任何拒绝表达式时数据能够满足查询。在标记号540,查询能被最优化,其中能在查询中移动安全表达式以便最优化性能。这种最优化通过便于减少存储器泄漏的谓词规则引导。取决于非安全表达式是否“安全”,这些规则使非安全表达式被拖到(或压到)安全表达式之上(或之下)。在许多情形中,可在编译时执行静态分析以确定表达式是否是“安全”表达式,或者表达式是否能无信息揭示风险地运行。在其它实例中,能可选地或附加地在运行时执行动态分析,以确定表达式是否是“安全”表达式。对于动态分析,一般不返回结果且也不作更改直到已成功运行安全谓项和/或未遇到安全侵犯(例如错误条件、中断、事件)。对于静态和动态两种分析,如果未遇风险安全侵犯,可确定表达式排列的顺序以改进性能。然而,如果检测到了安全侵犯,可放弃查询或查询以安全模式运行,其中安全表达式在运行非安全表达式之前求值。一般而言,逻辑操作通常被认为是“安全”的。在数据库中查询时可利用增强查询。例如,当执行查询时可对数据库数据求值以便确定数据是否满足安全。如果数据满足安全,数据会被提供给请求者使得例如请求者能查看、下载和/或操作数据。图6阐述了用来激活行级别数据库安全以便提供行级别访问的方法论600。在标记号610,行级别安全激活。例如,可利用以下SQL语句来激活表格上的行级别访问ALTERTABLEOrdersSETROWSECURITY=ON。通常,如果不激活行级别访问,要么没有任何一行对用户而言是可访问的,要么所有行对用户而言都是可访问的。在标记号620,通过GRANTSELECT命令向用户授予权限。在630,用户限制通过CREATEEXPRESSION命令关联到用户。在640,通过GRANT“where”语句,谓项可关联于一个或多个表格上的相关角色(role)。在650,查询可用谓项进行增强且可采用已增强查询,其中向用户提供满足安全表达式的数据。可以理解,在此所述的多个准许安全表达式以及拒绝安全表达式可在查询中结合,并在查询数据期间利用。图7阐述了用来激活行级别数据库安全以便提供行级别访问的方法700。在标记号710,行级别安全被激活(例如ALTERTABLEOrdersSETROWSECURITY=ON)。在720,可利用SQLDENYEXPRESSION命令来拒绝对用户的数据权限。在标记号730,安全语句(例如布尔表达式)关联于一个或多个表格上的相关角色。在740,安全语句被插入查询中并在查询时利用。当用安全语句求值的数据满足拒绝表达式时,数据对用户隐藏。一般而言,拒绝安全表达式会取代准许安全表达式使得关联于准许和拒绝表达式的数据满足两种表达式时用户不能访问数据。通常,拒绝表达式的补码将与准许表达式聚集,使得满足该聚集表达式提供对数据的访问。图8阐述了撤销行级别数据库安全的方法800。在标记号810,接收查询并标识查询初启程序。在标记号820,数据管理员查明关联于用户的安全表达式,并选择用户不再希望与之相关联的安全表达式。如上所述,准许和拒绝安全表达式都可与用户相关联。在830,可利用REVOKE命令来切断或中止关联于用户的限定准许和/或拒绝安全表达式。图9阐述了示例性SQL查询管理系统900。SQL查询管理器900包括接收数据查询的输入组件910、便于用安全表达式增强该查询的SQL查询管理器920、以及向用户提供结果的输出组件930。系统900能利用诸如CREATE、DROP、GRANT、REVOKE和DENY的SQL实用工具来便于行级别访问控制,并且在表格上采用SELECT,UPDATE,DELETE,和/或INSERT等动作时是有利的。根据本发明的一方面以下提供示例性CREATE、DROP、GRANT、REVOKE和DENY语法与相应解释和示例,以及SELECT,UPDATE,DELETE,和INSERT的示例。CREATE(创建)使用DDLCREATEEXPRESSION,可创建要应用于表格中用来激活行级别访问控制(例如安全)的谓项。可命名这种谓项并将其利用语法(例如GDR)用表达式名应用于表格中。语法CREATEEXPRESSION<expression_name>ON<tablename>AS(<expression>)CREATE实用工具能在表格<tablename>上创建如在<expression>中规定的表达式,并向其分配称为<expression_name>的名字。限制·通常不能包括子查询。·如果表达式包括对功能的引用和这些功能上的创建者引用权限,可包括功能调用。·表达式必须被命名(<expression_name>)。·expression_name必须是唯一的。权限在数据库、模式和/或表格级别上有FULLCONTROL权限的db_ddladmin、db_owner角色、sysadmin角色、表格所有者和用户可得到权限,以创建表格上的表达式。另外,表格上带有ALTERANYTABLE和/或ALTER的用户可得到权限以创建表格上的表达式。示例CREATEEXPRESSIONMy_FilterONshipTableAS(ship_city=’redmond’andorder_num>35)DROP(放弃)用CREATEEXPRESSION语句创建的谓项可使用DROPEXPRESSION语句放弃。语法DROPEXPRESSION<expression_name>ON<Tablename>限制·被指定的expression_name通常必须已经存在。·当前用户通常需要是表达式在其上被标识的db_ddladmin、db_owner和/或sysadmin角色、表格所有者的成员,和/或在表格上有FULLCONTROL和/或ALTER权限以放弃表达式。·表达式通常只能在其当前不被用来在表格上建立行级别安全时被放弃。·如果任何的限制被违反,可返回错误(例如“表达式不存在或在使用中或你没有权限执行该语句”)。GRANT(准许)语法GRANT{ALL[PRIVILEGES]|[BEFORE|AFTER]permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}ON{table|view}[(column|[,...n])]ON{stored_procedure|extended_procedure}|ON{user_defined_function}}TOsecurity_account[,...n][WITHGRANTOPTION|][AS{group|role}]UPDATE权限可用BEFORE或AFTER做前缀。只有在指定行级别安全时才能指定BEFORE或AFTER。一般而言,BEFORE隐含地表示谓项应用于行的前映像(preimage);安全基于行中的当前值。AFTER隐含了安全基于后映像(postimage);值用来更新该行。<expression_name>是用来启动安全限制的表达式的名字(例如,通过CREATEEXPRESSION稍早创建)。限制·通常GRANT不得不在表格上。·一般权限在表格级别上应用。·当指定行级别限制时通常将允许WITHGRANTOPTION。进一步的准许一般由准许者在该表达式上作出。·<expression_name>必须是已经通过CREATEEXPRESSION语句指定的有效表达式名字。·发出GRANT的用户需要是表格的所有者,或者在表格上有全控制权限,或者是db_ddladmin、db_owner和/或sysadmin角色的成员。示例GRANTSELECTWHERE(Myfilter)ONTable1TORedMgrsGRANTBEFOREUPDATEWHERE(Filter2)ONTable2TOpublicREVOKE语法REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}|ON{table|view}[(column|[,...n])]|ON{stored_procedure|extended_procedure}|ON{user_defined_function}}{TO|FROM}security_account[,...n][CASCADE][AS{group|role}]可使用REVOKE来撤销已通过GRANT或DENY应用的安全准许。限制·<expression_name>对于要撤销的特定权限,通常必须是表格上用稍早的GRANT或DENY已经指定的有效表达式。·通常可指定要撤销的列名或表达式。·CASCADE选项通常适用于基于GRANT或DENY的表达式撤销。这通常将是在稍早的GRANT或DENY中指定的相同表达式,而且由已准许表达式所指定行的子集不能被撤销。·为使REVOKE成功,用户一般需要是表格所有者、或者必须在表格上有FULLCONTROL权限、或者是db_securityadmin、db_owner和/或sysadmin角色的成员。示例REVOKESELECTWHERE(MyFilter)ONTable1TORedMgrsDENY(拒绝)语法DENY{ALL[PRIVILEGES]|[BEFORE|AFTER]permission[WHERE(<expression_name>[,...n])[,...n].}{[(column|[,...n])]ON{table|view}|ON{table|view}[(column|[,...n])]|ON{stored_procedure|extended_procedure}|ON{user_defined_function}}TOsecurity_account[,...n][CASCADE]<expression_name>是用于实现安全限制的表达式(稍早通过CREATEEXPRESSION语法创建)名字。限制·DENY一般在表格上。·权限一般应用在表格级别上。·在指定行级别限制时一般允许CASCADE选项,且它将在第一级别拒绝并在更低级别撤销已准许的确切相同表达式,但不是其任何子集。·<expression_name>通常必须是通过CREATEEXPRESSION语句已经指定的有效表达式。·发出DENY的用户一般需要是表格所有者、或者是db_owner、db_securityadmin和/或sysadmin角色的成员。示例DENYSELECTWHERE(MyFilter)ONTable1TOBelvMgrs这些表达式可包括在sysobjects对象中。另外,相应的目录查看可驻留在sys.objects中。有FULLCONTROL和/或VIEWDEFINITION权限的表格所有者和用户能见到应用在表格上的表达式。当对照(against)表格发出查询时,查询用已在表格上应用的谓项进行增强以调用必须的安全限制。当对照表格发出SELECT时,依靠GRANTSELECT或DENYSELECT语句查询用已经在表格上应用的所有谓项进行内部增强。当对照表格发出UPDATE时,依靠GRANT/DENY、UPDATEForBEFORE和SELECT语句查询用已经在表格上应用的所有BEFORE和UPDATE谓项进行内部增强。对于BEFOREUPDATES,在谓项中指定的限制基于行中的当前值而非更新值。AFTER、UPDATE和INSERT限制起象约束一样的作用;它们作用于更新后的映像。仅可能更新用户当前可访问进行选择的行。当发出DELETE时,依靠GRANT/DENY和DELETE语句查询用在表格上应用的谓项进行增强。用户只能删除当前选定的行。在应用任何其它谓项之前应用定义在表格上的安全表达式;用户谓项在估算树上被压在所有安全谓项之下。如果有多个安全谓项,在GRANT中指定的谓项相或,且由DENY指定的相应负谓项相与。另外,表格级别或列级别权限能在没有行级别安全情况下进行设定。引入了行级别安全,用户可访问那些已准许明确访问的行。因而,用户在特定表格中见到的是行级别和列级别权限的交集。为了允许行级别安全,表格首先必须被如此标记。这可用CREATE/ALTERTABLE语法中的ROW_SECURITY标记完成(例如ALTERTABLESETROW_SECURITY=ON)。当表格已能够作行级别安全时,所有者能确定行级别安全是否应用于某些单独的行中。这可用准许对一个或多个行访问的谓项来完成。ExemptRowSecurity权限也可用来完成相同效果。该特准许确保当准许者在表格上发出时没有一个安全谓项可应用于查询,这可达到不应用行级别安全的效果,因为行级别安全仅通过谓项应用。ExemptRowSecurity权限也是有用的,因为其允许所有者选择性地确定谁将接收行级别安全。可以理解谓项可在任何时候应用于表格中;然而,这些将只对没有ExemptRowSec权限的用户的查询增强。如上所述,准许某些用户有能力在没有用谓项增强查询的情况下查询表格是有用的。另外,无须添加、移除和/或改变某些或所有谓项就可暂时停用行级别安全也是有用的。这可通过准许ExemptRowSecurity权限来完成。表格所有者、db_owner和sysadmin角色的成员、以及有CONTROL权限的用户缺省地有此权限。例如,为使用户1(user1)免除表格T(TableT)上的行级别安全检查,可利用以下GRANTExemptRowSecONTTO<user1>当发出本语句时,用户1对表格T的查询不用任何谓项进行增强。该权限仅在表格级别而非列级别上被准许。因为谓项可包括对依次调用其它其上也定义有谓项的表格的功能的调用,俘获有循环的情形是重要的。例如,如果表格T有定义其上的基本上是对功能F调用的谓项,其中功能F依次查询表格T和表格S,谓项可应用于表格S而不是表格T(因为或者会导致死循环的发生),且因此俘获了这种循环谓项情形,但仅当循环中步骤数少于n时,其中n是用来为查看俘获循环依赖性的相同数字。在审计途径中,特权用户可查看增强查询。以下示出了示例性SQLCREATETABLE和ALTERTABLE实用工具。CREATETABLE(创建表格)语法CREATETABLE[database_name.[owner].|owner.]table_name({<column_definition>|column_nameAScomputed_column_expression|<table_constraint>∷=[CONSTRAINTconstraint_name]}[{PRIMARYKEY|UNIQUE}[,...n])[ON{filegroup|DEFAULT}][TEXTIMAGE_ON{filegroup|DEFAULT}][WITHROWSECURITY=(ON|OFF)<column_definition>∷={column_namedata_type}[COLLATE<collation_name>][[DEFAULTconstant_expression]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][...n]<column_constraint>∷=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]]|[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]]|CHECK[NOTFORREPLICATION](logical_expression)}<table_constraint>∷=[CONSTRAINTconstraint_name]{[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED]{(column[ASC|DESC][,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]|CHECK[NOTFORREPLICATION](search_conditions)}ALTERTABLE(更改表格)语法ALTERTABLEtable{[ALTERCOLUMNcolumn_name{new_data_type[(precision[,scale])][COLLATE<collation_name>][NULL|NOTNULL]|{ADD|DROP}ROWGUIDCOL}]|ADD{[<column_definition>]|column_nameAScomputed_column_expression}[,...n]|[WITHCHECK|WITHNOCHECK]ADD{<table_constraint>}[,...n]|DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,...n]|{CHECK|NOCHECK}CONSTRAINT{ALL|constraint_name[,...n]}|{ENABLE|DISABLE}TRIGGER{ALL|trigger_name[,...n]}|SETROWSECURITY=(ON|OFF)}<column_degonition>∷={column_namedata_type}[[DEFAULTconstant_expression][WITHVALUES]|[IDENTITY[(seed,increment)[NOTFORREPLICATION]]]][ROWGUIDCOL][<column_constraint>][...n]<columnconstraint>∷=[CONSTRAINTconstraint_name]{[NULL|NOTNULL]|[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED][WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|[[FOREIGNKEY]REFERENCESref_table[(ref_column)][ONDELETE{CASCADE|NOACTION}][ONUPDATE{CASCADE|NOACTION}][NOTFORREPLICATION]]|CHECK[NOTFORREPLICATION](logical_expression)}<table_constraint>∷=[CONSTRAINTconstraint_name]{[{PRIMARYKEY|UNIQUE}[CLUSTERED|NONCLUSTERED]{(column[,...n])}[WITHFILLFACTOR=fillfactor][ON{filegroup|DEFAULT}]]|FOREIGNKEY[(column[,...n])]REFERENCESref_table[(ref_column[,...n])][ONDELETE{CASCADE|NOACTION}][NOTFORREPLICATION]|DEFAULTconstant_expression[FORcolumn][WITHVALUES]|CHECK[NOTFORREPLICATION](search_conditions)}利用表格1和以下示例来说明本发明的不同示例性方面。OrderlDEmployeelDOrderDateShipCountryShipAddressShipcityCode123ABC1232002-4-3FranceSomeaddr67854789EFG7892001-8-25SpainSomeaddr43674456XYZ9802002-3-3GermanySomeaddr56373234SGC0072001-6-7FranceSomeaddr67443890RST6782002-4-4SpainSomeaddr43576表格1本示例的目标是带有以下限制准予对Orders表格的选择是FranceMgr角色成员的用户只能查看到该国家的订单;是SpainMgr角色成员的用户只能查看到该国家的订单;是Director角色成员的用户能查看所有行。表格1的行级别安全通过以下激活ALTERTABLEOrdersSETROW_SECURITY=ON。对Director、FranceMgr和SpainMgr的准许分别通过以下准予GRANTSELECTONOrdersTOdirectors;GRANTSELECTONOrdersTOFranceMgr;以及GRANTSELECTONOrdersTOSpainMgr。限制分别通过以下关联于Director、FranceMgr和SpainMgrCREATEEXPRESSIONSeeAllONOrdersAS1=1;CREATEEXPRESSIONSpainFilterONOrdersAS(Orders.ShipCountry=′Spain′);以及CREATEEXPRESSIONFranceFilterONOrdersAS(Orders.ShipCountry=′France′)。谓项可通过以下关联到Orders表格上的相关角色GRANTSELECTONOrdersTODirectorsWhereSeeAll;GRANTSELECTWHERE(SpainFilter)ONOrderstoSpainMgrs;以及GRANTSELECTWHERE(FranceFilter)ONOrderstoFanceMgrs。可选地,可利用对Director准许ExemptRowSec来免除Director角色成员对行级别谓项的任何增强,从而当Director角色成员查询表格时,查询不用任何谓项增强。可查询谓项,其中以下谓项关联于表格Directors;SpainFilter;andFranceFilter。在查询时,查询可用以上谓项增强,从而由SELECT*FROMOrders定义的原始查询被增强为SELECT*FROMOrdersWHERE((IS_MEMBER(‘Directors’)=1AND1=1)OR(IS_MEMBER(‘SpainMgrs’)=1ANDOrders.Shipcountry=‘Spain’)OR(IS_MEMBER(‘FranceMgrs’)=1ANDOrders.Shipcountry=‘France’))(其中((IS_MEMBER(‘Directors’)=1与1=1)或(IS_MEMBER(‘SpainMgrs’)=1与Orders.Shipcountry=‘Spain’)或(IS_MEMBER(‘FranceMgrs’)=1与Orders.Shipcountry=‘France’))。该增强查询将实现所需的安全限制。所以现在,如果Director、FranceMgr和SpainMgr角色的采用要执行以下查询,她将获得在2002年1月1日之后下的运送国家分别是任何国家、法国和西班牙的那些订单。原始查询SELECT*FROMORDERSWHEREOrderDate>‘1/1/02.增强查询SELECT*FROMORDERSWHEREOrderDate>‘1/1/02’AND((IS_MEMBER(‘Director’)=1AND1=1)OR(IS_MEMBER(‘SpainMgrs’)=1ANDOrders.Shipcountry=‘Spain’)OR(IS_MEMBER(‘FranceMgrs’)=1ANDOrders.Shipcountry=‘France’))为了提供用来实现本发明各方面的附加上下文,图10-11及以下讨论旨在提供本发明各方面可在其中实现的适当计算环境的一般描述。尽管本发明在运行于本地计算机和/或远程计算机上的计算机程序的计算机可执行指令一般上下文上进行描述,本领域技术人员将理解本发明也可结合其它程序模块实现。通常,程序模块包括执行具体任务和/或实现特定具体数据类型的例程、程序、组件、数据结构等。此外,本领域技术人员将理解本发明方法可用其它计算机系统配置实践,包括单处理器或多处理器计算机系统、迷你计算机、大型计算机、以及个人计算机、手持式计算装置、基于微处理器和/或可编程消费电器等等,其中每个装置都可操作地与一个或多个相关联装置通信。本发明的诸说明方面也可在分布式计算环境中实践,其中部分任务由通过通信网络链接的远程处理装置执行。然而,本发明的一些(如果不是全部)方面可在单机上实践。在分布式计算环境中,程序模块可位于本地/或远程存储器存储装置。图10是本发明可与之交互的采样计算环境1000的示意方框图。系统1000包括一台或多台客户机1010。客户机1010可以是硬件和/或软件(例如线程、过程、计算装置)。系统1000还可包括一台或多台服务器1030。服务器1030也可以是硬件和/或软件(例如线程、过程、计算装置)。服务器1030可采用本发明覆盖线程来执行变换。在客户机1010和服务器1030间的一可能通信可能是以适于在两个或多个计算机过程间传送的数据包形式进行。系统1000包括可用来便于客户机1010和服务器1030间通信的通信框架1050。客户机1010可与用来存储客户机1010本地信息的一个或多个客户数据存储1060作可操作连接。类似地,服务器1030可与用来存储服务器1030本地信息的一个或多个客户数据存储1040作可操作连接。参照图11,实现本发明各方面的示例性环境1100具有计算机1112。计算机1112具有处理单元1114、系统存储器1116、及系统总线1118。系统总线1118耦合系统组件包括,但不限于将系统存储器1116耦合到处理多元1114。处理单元1114可以是各种可用处理器的任一种。双微处理器和其它多处理器架构也可被用作处理单元1114。系统总线1118可以是若干类总线结构的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各种可用总线架构任一种的本地总线,这些总线架构包括,但不限于,工业标准架构(ISA)、微信道架构(MSA)、扩展ISA(EISA)、智能磁盘设备(IDE)、VESA局部总线(VLB)、外围部件互连(PCI)、卡总线、通用串行总线(USB)、加速图形接口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE1394)、和小型计算机系统接口(SCSI)。系统存储器1116具有易失存储器1120和非易失存储器1122。包含在计算机1112硬件间传送如起动时信息的基本例程的基本输入/输出系统(BIOS),存储在非易失存储器1122上。作为说明且无限制,非易失存储器1122可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失存储器1120具有作为外部高速缓存的随机存取存储器(RAM)。作为说明且无限制,RAM有多种形式可用,如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SRAM)、双数率SDRAM(DDRSDRAM)、增强DSRAM(ESDRAM)、同步链接DRAM(SLDRAM)、和直接RambusRAM(DRRAM)。计算机1112还具有可移动/不可移动、易失/非易失计算机存储介质。图11示出了例如磁盘存储器1124。磁盘存储器包括,但不限于,象磁盘、软盘、磁带、Jaz盘、Zip盘、LS-100盘、闪存卡、或存储棒。另外,磁盘存储器1124可具有单独存储介质或结合其它存储介质包括,但不限于,诸如光盘ROM设备(CD-ROM)、可记录光盘驱动器(CD-R盘)、可重写光盘驱动器(CD-RW盘)、或数字化视频ROM盘(DVD-ROM)的光盘。为便于磁盘存储器1124与系统总线1118的连接,通常可使用诸如接口1126的可移动或不可移动接口。应当理解,图11描述了作为用户和在适当操作环境1100中描述的基本计算机资源间中间体的软件。这种软件具有操作系统1128。可存储在磁盘存储器1124中的操作系统1128,其作用是控制和分配计算机系统1112的资源。系统应用1130得益于操作系统1128通过存储在或系统存储器1116或磁盘存储器1124中的程序模块1132和程序数据1134对资源的管理。可以理解本发明可用各种操作系统或操作系统组合来实现。用户通过输入设备1136将命令或信息输入到计算机1112中。输入设备1136包括,但不限于,诸如鼠标、跟踪球、铁笔、触板、键盘、麦克风、操纵杆、游戏垫、卫星接收器、扫描仪、电视调谐器卡、数字相机、数字录像照相机、网络相机等定点设备。这些和其它输入设备经系统总线1118通过接口端口1138与处理单元1114相连。接口端口1138包括例如串行端口、并行端口、游戏端口、和通用串行总线(USB)。输出设备1140使用象输入设备1136的某些相同类型端口。因此,例如USB端口可用来为计算机1112提供输入,并将信息从计算机1112输出到输出设备1140。输出适配器1142被提供用来说明某些输出设备象监视器、扬声器、和打印机,与其它输出设备1140之间,需要特殊适配器。输出适配器1142包括,作为说明且无限制,视频卡和声卡在输出设备1140和相同总线1118间提供了连接方法。应该注意的是诸如远程计算机1144的其它设备和/或设备系统提供输入和输出功能。计算机1112使用与一台或多台远程计算机如远程计算机1144的逻辑连接在网络化环境中操作。远程计算机1144可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器设备、同等设备或其它相同网络节点等等,而且通常包括所述与计算机1112相关的许多或全部元件。为简化起见,仅存储器存储装置1146与远程计算机1144一起图示。远程计算机1144经网络接口1148与计算机1112逻辑连接,然后通过网络连接1150进行物理连接。网络接口1148包括诸如局域网(LAN)和广域网(WAN)的有线和/或无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环等等。WAN技术包括,但不限于,点对点链接、象综合服务数字网(ISDN)及其后变种的电路切换网络、报文分组交换网络、和数字用户线路(DSL)。通信连接1150指向被用来将网络接口1148连接到总线1118的硬件/软件。尽管为了清晰地说明,通信连接1150被示为位于计算机1112内,但它也可在计算机1112之外。与网络接口1148连接所必需的硬件/软件具有,仅作为示例,诸如包括常用电话级调制解调器、电缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器、和以太网卡等内部和外部技术。以上所述包括本发明的诸多示例。当然,为描述本发明而对每一能想到的组件或方法论组合进行描述是不可能的,但本领域普通技术人员明白本发明的更多排列和组合是可能的。因此,本发明意欲包含所有这样的在所附权利要求书精神和范围内的变更、修改、和变化。特别是关于以上所述组件、设备、电路、系统等等执行的各种功能,除非另有注明,用于描述这些组件的术语(包括对“装置(means)”的指代)意在对应执行所述组件(如功能等效体)特定功能的任何组件,尽管它在结构上并非等同于在本发明在此所述示例性方面中执行所述功能的揭示结构。在这点上,也可明白本发明包括系统和具有计算机可执行指令的计算机可读介质,用来执行本发明各种方法的动作和/或事件。另外,尽管仅相对于若干实现之一已经对本发明的具体特征作出了揭示,当对任何给定或具体应用有利或需要时,这种特征可与其它实现的一个或多个其它特征组合。此外,就用于具体实施方式或权利要求书的术语“具有”、和“含有”及其变型而言,这些术语意在以类似于术语“包括”的方式作包含意义解。权利要求1.一种推动数据库安全的系统,其特征在于,包括一输入组件,其接收查询;以及一查询组件,其利用谓项规则至少以行级别安全表达式来增强所述查询,所述增强查询被用来搜索数据并返回至少满足所述行级别安全表达式聚集的数据行。2.如权利要求1所述的系统,其特征在于,所述查询通过插入一表达式来增强,所述表达式由以下项的逻辑积组成布尔表达式的逻辑和,当其满足时准许行访问;相应布尔表达式的补码的逻辑积,当其满足时拒绝行访问。3.如权利要求1所述的系统,其特征在于,所述行级别安全表达式被特殊标记以便区分安全表达式和非安全表达式。4.如权利要求1所述的系统,其特征在于,所述谓项规则通过定义一个安全表达式和非安全表达式插入查询的顺序来减轻信息泄漏,所述顺序确定在数据行估值期间所利用的各个表达式顺序。5.如权利要求1所述的系统,其特征在于,还包括一优化器,其把非安全表达式拖到安全表达式之上或者把非安全表达式压到安全表达式之下,以便改善性能并减轻信息泄漏。6.如权利要求1所述的系统,其特征在于,还包括一组件,其在编译时执行一静态分析以确定所述查询中的非安全表达式是否安全。7.如权利要求6所述的系统,其特征在于,安全表达式是在其执行时不会有因安全突破而披露信息的表达式。8.如权利要求1所述的系统,其特征在于,还包括一组件,其在运行时执行动态分析以确定所述查询中的非安全表达式是否安全。9.如权利要求8所述的系统,其特征在于,如果所有的安全表达式成功执行,所述动态分析返回数据。10.如权利要求1所述的系统,其特征在于,还包括一组件,其检测安全侵犯并放弃所述查询或以“安全”模式重新起动所述查询。11.如权利要求10所述的系统,其特征在于,所述安全模式确保在采用非安全表达式对数据行求值之前先采用安全表达式来求值。12.如权利要求1所述的系统,其特征在于,所述安全表达式是布尔表达式。13.如权利要求1所述的系统,其特征在于,一个或多个安全表达式由所述数据管理员通过SQL语句为一数据行创建。14.如权利要求1所述的系统,其特征在于,一组数据行的一个或多个安全表达式由所述数据管理员关联到一个或多个查询初启程序。15.一种用来采用行级别数据库安全的方法,其特征在于,包括基于所述查询的来源,为所述查询获取一个或多个行级别安全表达式;以及把所述一个或多个行级别安全表达式插入所述查询中,从而所述安全表达式在执行所述不安全的非安全表达式之前被用来对数据行求值。16.如权利要求15所述的方法,其特征在于,还包括嫁接一表达式,该表达式由在其满足时即准许行访问的布尔表达式的逻辑和与在其满足时即拒绝行访问的相应布尔表达式的补码的逻辑积的逻辑积所组成,并将所述嫁接后表达式插入所述查询中。17.如权利要求15所述的方法,其特征在于,还包括采用SQL语句来创建、关联和/或撤销安全表达式。18.如权利要求15所述的方法,其特征在于,还包括采用SQL语句向用户授予或拒绝对数据行的权限。19.如权利要求15所述的方法,其特征在于,还包括在所述查询不包括不安全非安全表达式时,把所述一个或多个行级别安全表达式插入所述查询中以优化性能。20.如权利要求15所述的方法,其特征在于,还包括利用移动谓项规则来推动所述安全表达式在所述查询中的排序。21.如权利要求20所述的方法,其特征在于,所述谓项规则确定是否把非安全表达式拖到或压到安全表达式之上或之下,以改进性能并减轻数据泄漏。22.如权利要求15所述的方法,其特征在于,还包括执行一静态分析,以确定是否非安全表达式是不安全的。23.如权利要求15所述的方法,其特征在于,还包括执行一动态分析,以确定是否非安全表达式是不安全的。24.如权利要求15所述的方法,其特征在于,还包括把逻辑非安全表达式定义为安全表达式。25.如权利要求15所述的方法,其特征在于,还包括当检测到安全侵犯时以安全模式重新起动查询,安全模式确保安全表达式被先于非安全表达式用来对行数据求值。26.一种数据包,其在两个或多个计算机组件间传送,推动行级别数据库安全,其特征在于,包括带有一个或多个SQL创建的基于谓项规则并定位于其中的安全表达式的一查询,所述谓项规则被用来对数据行求值以便在满足所述安全表达式时提供对所述数据行的访问。27.一种存储计算机可执行组件以推动行级别数据库安全的计算机可读介质,其特征在于,包括把用户的安全表达式嫁接到语句中的组件;把所述语句加入由用户发起的查询的组件;优化所述语句在所述查询中的放置的组件;以及基于所述语句查询数据行、并返回满足所述语句的数据行的组件。28.一种数据库安全系统,其特征在于,包括用于以行级别安全表达式增强查询的装置;用于在所述查询中安置所述行级别安全表达式以改进性能或减轻数据泄漏的装置;用于以所述行级别安全表达式估算数据行的装置;以及用于向用户提供对满足所述行级别安全表达式的数据行的访问的装置。全文摘要通过利用SQL扩展来创建指定安全表达式并使其与查询初启程序相关联,本发明的系统和方法推动数据库行级别安全。这种表达式包括布尔表达式,其必须被数据行满足以便该数据能被查询初启程序访问。一般而言,查询用在查询数据行期间聚集并利用的安全表达式进行增强。诸系统和方法不同地在查询中置入安全表达式,以便最优化查询性能同时减轻信息泄漏。这通过对安全表达式作特殊标记并取决于由静态和/或动态分析确定的非安全表达式是安全的可能性,利用谓项规则把非安全表达式拖到或压到安全表达式之上或之下来完成。文档编号G06F17/30GK1655145SQ20051000593公开日2005年8月17日申请日期2005年1月20日优先权日2004年2月11日发明者A·C·科米尤,G·钱德,J·R·汉米尔顿,L·B·克里斯托福,P·N·克莱恩,T·杜塔申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1