属性相关的访问控制策略的制作方法

文档序号:6376228阅读:127来源:国知局

专利名称::属性相关的访问控制策略的制作方法
技术领域
:本发明涉及数据库,更具体地,涉及控制对数据库内的信息的访问。
背景技术
:数据库中的数据被保存在一个或多个数据容器中,每个容器都包括记录,并且每个记录中的数据被组织成一个或多个字段。在关系数据库系统中,数据容器被称作表,记录被称作行,及字段被称作列。在面向对象的数据库中,数据容器被称作数据库对象,记录被称作对象,及字段被称作属性。其它数据库结构可能会采用其它术语。实施本发明的系统不局限于任何特殊类型的数据容器或数据结构。在很多情况下,有可能希望防止所有的用户访问特殊表的所有行。例如,在表中的一些行可以包含英文文本,而其它行包含西班牙文文本。在此情况下,很容易限定英语用户访问包含英文的行,以及限定西班牙语用户访问包含西班牙语的行。出于安全起见,还可能希望限制对特定行的访问。例如,表的特定行可能包括绝密信息,其它行可能包括秘密信息,而其它行包括非保密信息。在这些情况下,任何给定用户可用的行都可以通过该用户的安全许可来规定。上述的两种情况都需要数据的行级过滤,并且第二种情况还需要该过滤执行访问控制策略。要执行行级访问控制策略,数据库服务器必须具有一种机制,用于将用户限制在表中的行的特殊子集中。一种用于实现行级访问控制策略的技术涉及使得对所有对表的访问间接地通过“窗口”(View)来执行。当用户属于相对较少数量的类别时,窗口提供了简便的方法来提供行级访问控制。例如,如果只是根据语言将用户分类,并且仅支持两种语言,那么仅需要创建两个窗口。然而,许多访问策略要求基于多个标准将用户分成多个种类。在这些情况下,必须被创建并被维护的窗口的数量使得基于窗口的方法执行策略不切实际。另一种选择性地限制用户可以看到的信息的方法涉及一种机制,动态地将谓词附加至查询,其中,是根据策略来附加谓词。例如,数据库系统检测到发布的查询与数据库对象相抵触(against)。在执行查询之前,调用与该数据库对象相关的策略函数。策略函数基于与数据库对象相关的策略,通过选择性地对该查询添加零个或多个谓词,来创建改进查询。然后执行该改进查询。在美国专利第6,487,552中详细地描述了动态附加谓词的方法。以上所讨论的方法限制了返回数据的行,并因此以下被共同地称作“行级访问控制策略方法”。对于这些行级访问控制策略方法而言,一个共同的特性是全部限制或者无限制特性。特别地,对于表的任何给定行,用户或者可以访问所有的信息,或者不可以访问任何信息。为了说明行级访问控制策略方法的全部限制或无限制的特性,假定有如图1所示的数据库表t2。表t2保存了一个公司的雇员的信息。在数据库表t2中,行111-117中的每一行都保存了特定雇员的信息,并且每一列都保存了一种特定类型的信息。行111保存了名为“Chris”的雇员的信息。Chris雇员号码为056395,在部门J21,其社会安全号码为506-93-2456,工资为270,230,并且是经理。行级访问控制策略方法可以用来允许每个部门经理查看对应于其部门成员的行,并限定不是经理的人只可查看包括他们自己的信息行。假设Chris是部门J21的经理,Cheryl和Craig在Chris的部门,上述规定的策略允许Chris访问在行111、112、和114中的所有信息,但是阻止Cheryl和Craig查看除他们自己的信息外的任何信息。具体地,Cheryl可以查看行112的所有信息,但是不可以查看行111和114的信息,而Craig可以查看行114的所有信息,但是不可以查看行111和112的信息。不幸地,行级访问策略方法的所有或无的性质可能不够灵活以致不能满足公司的需要。例如,可能希望所有的雇员可以访问所有其他雇员的姓名、雇员号码、以及部门号码,但是仅允许雇员访问自己的工资。然而,每个人的工资信息与雇员的姓名可以在同一行。因此,允许用户访问雇员姓名的行级策略必然允许用户访问该雇员的工资信息。相反地,阻止用户访问雇员工资信息的策略必然阻止用户访问雇员的姓名。由上所述,显然希望提供一种机制,用于实现克服现有行级访问控制策略方法的全部或没有限制的访问控制策略。在该部分中描述的方法是可执行的方法,但不必是前面已经想到或执行的方法。因此,除非指出,否则不应仅因为在该部分中描述的任何方法包括在该部分中,就认为其为现有技术。通过实例来描述本发明,但是不局限于此,在附图中相同的参考标号表示类似的元件,其中图1示出了包括一个公司的雇员信息的数据库表;图2示出了用于控制对数据库中的信息进行访问的计算机系统的结构图;以及图3示出了一种可实施本发明实施例的计算机系统的结构图。具体实施例方式本发明描述一种用于控制对数据库中的信息进行访问的方法和装置。在下面的描述中,为了解释的目的,描述了多个特定的细节,以对本发明有彻底的了解。然而,很显然,在没有这些特定细节的情况下,本发明也可以被实现。在其它的实例中,以结构图形式示出了已知的结构和设备,以避免不必要地模糊本发明。功能和系统概述图2是示出根据一个实施例的用于控制对数据库中信息的访问的系统200的结构图。系统200包括数据库应用程序220,用户210可以用数据库应用程序向数据库240请求信息。数据库应用程序220被设计为响应于用户交互,向数据库服务器230发布请求221。数据库服务器230将来自数据库240的表t2的被请求信息提供给数据库应用程序220。为了解释的目的,用图1中所示的表t2表示数据库240。然而,在此描述的机制可以被任何数据库表使用。表t2是数据库对象,并且表t2中的列是数据库对象的一组属性。根据一个实施例,提供了一种支持包括特定属性限制(attribute-specificrestriction)的访问策略的机制。这样的策略可以指定,例如,该组属性中的一个或多个属性仅在特定条件下可以被访问。被施加了这些限制的属性在下文中被称作“受限属性(restrictedattribute)”。为了解释的目的,假设查询221引用(reference)表t2的一个或多个属性。由查询221引用的属性在下文中被称作“被引用属性(referencedattribute)”。部分地,根据查询221的被引用属性是否包括表t2的任何受限属性,来确定数据库230如何处理查询221。根据一个实施例,确定查询221是否引用一个或多个数据库对象的受限属性。例如,如果查询221引用一个或多个受限属性,那么可以修改查询221,以限制返回给用户210的行。然而,如果查询221没有引用受限属性,则不修改查询221以限制返回给用户的行,以下将更详细地描述。根据另一实施例,数据库230在不限制返回给用户的行的情况下,限制用户210查看受限属性的数据。相反地,如以下将更详细描述的那样,通过将查询的结果组返回给用户210之前,屏蔽查询的结果组,来防止对受限信息的访问。当使用屏蔽来防止用户查看受限属性的值时,可以选择性地执行屏蔽,使得用户可以查看某些行的受限属性的值,但是防止用户查看其它行的受限属性的值。通常,表元数据241包括描述数据库表(例如表t2)的信息。例如,表元数据241可以包括描述表t2的属性的数据以及可以保存在表t2中的数据类型。在所示实施例中,表元数据241还包括策略元数据242,表示应用于表t2的访问策略。策略元数据242包括表示表t2中的什么信息是受限制的以及如何被限制的数据。特别地,策略元数据242包括表示表t2中哪些属性是受限制的属性限制元数据243。例如,属性限制元数据243可以表示表t2的属性“SALARY”和“SSN”是受限属性。根据一个实施例,属性限制元数据243也可以包括表示以何种方式限制受限属性的数据。例如,属性限制元数据243可以表示经理可以查看其部门人员的工资,而普通雇员仅可以查看他们自己的工资。根据一个实施例,语义分析器231接收查询并根据策略元数据242和对查询的分析来确定是否应调用策略函数232。例如,策略元数据242可以包括表示表t2中的哪些行是受限制的属性限制元数据243。根据一个实施例,当语义分析程序231确定至少有一个被引用属性是受限制的时,语义分析程序231调用策略函数232。策略函数232可以是例如实施用户定义策略的用户提供的函数。事实上,对于可以被设计到策略函数232中的功能没有限制。因此,策略函数232能够支持任意复杂的策略。策略函数232可以被设计成例如读取用户提供的策略元数据,并根据元数据的内容运行。为了解释的目的,将描述策略函数232被设计成确定查询221是否应被修改以及如何修改的实施例。根据一个实施例,如果策略函数232确定查询221应被修改,那么,策略函数232返回一个附加到查询221上的谓词(predicate)以创建改进查询。例如,假定用户210是“John”而且“SALARY”是表t2中的受限属性,当语义分析程序231确定查询221试图访问来自“SALARY”属性的数据时,语义分析程序231可以调用策略函数232。策略函数232可以以仅允许“John”访问他自己工资的方式来执行。在此情况下,策略函数232可以返回附加到查询221上的谓词,以保证查询仅检索(retrieve)行113,因此允许John查看自己的工资,以下将更详细地描述。根据一个实施例,属性限制元数据243表示可以使用什么值(以下称作“屏蔽值”)屏蔽来自受限属性的数据。例如,假定“SALARY”是受限属性,如果John试图访问表t2中所有行的姓名和工资,John将接收到来自所有行的姓名,但是工资列中的数据可能被屏蔽值屏蔽,例如整数0。在这种情况下,当John请求表t2中的所有行的姓名和工资时,数据库服务器230检索来自表t2的所有姓名和工资,并将未修改的姓名和工资保存在结果组235中。语义分析程序231确定John试图访问受限属性“SALARY”。结果组235被传递到屏蔽程序234,其使用特定屏蔽值(整数0)来屏蔽受限属性“SALARY”,从而,创建了被屏蔽结果组233。将屏蔽结果组233提供给数据库应用程序220。当数据库命令引用受限属性时,在执行前修改数据库命令根据一个实施例,基于哪些属性被引用,来确定是否在执行前修改数据库命令。根据一实施例,如果用户请求访问来自不受限制的属性的数据,在不修改数据库命令的情况下,可以将被请求数据返回给用户。例如,如果NAME和ID不是受限属性,并且John请求查看表t2中的所有人员的姓名和ID,那么将向John提供表t2中的所有人员的姓名和ID。在另一实例中,假设“SSN”是受限属性,并且查询试图访问表t2中的所有行的“SSN”属性。在此情况下,语义分析器231根据策略元数据242确定“SSN”属性是受限制的,并调用策略函数232。然后策略函数232确定该查询是否可以访问“SSN”属性中的数据。例如,如果该查询是由人力资源部门的人员发出的,例如行116中的Priscilla,那么策略函数232可以确定不需要修改该查询,从而将来自“SSN”属性数据返回给Priscilla。然而,如果该查询是由人力资源部门之外的其他人员发出的,例如Chris(行111),策略函数232可以确定该查询不可以访问“SSN”属性中的数据。根据一个实施例,在这些情况下,策略函数232返回谓词,以修改数据库命令,来限制由数据库命令返回的行。例如,可以将谓词如“WHERE1=2”(其总是被评估为假)附加至查询,从而,防止Chris查看其它的数据。可选地,策略函数232可以附加谓词,以将Chris限制在仅与Chris所在部门的人员对应的行。例如,可以将谓词如“WHEREt.dept=J21”附加至以Chris名义发布的查询。根据属性在数据库命令中的位置确定是否修改数据库命令根据一个实施例,确定是否修改数据库命令,取决于受限属性在数据库命令中的被引用位置。例如,查询的通用语法是SELECT(属性列表)from(表列表)where(过滤列表);表列表(tablelist)表示被请求数据来源的表。例如,如果表列表包括“employee”,那么请求来自名为“employee”的表的数据。属性列表表示表的哪些属性的数据被请求。例如,如果属性列表表示属性“NAME”和“DEPT”,那么请求来自表“employee”的属性“NAME”和“DEPT”的数据。过滤列表包括零个或多个谓词,用于过滤从其中提取数据的行。例如,如果过滤列表具有谓词“WHEREemployee.dept=m72”,那么仅可以向那些表“employee”的属性“DEPT”是“m72”的行请求数据。查询可以直接或间接访问与列相关的数据。当查询的结果组包括来自列的数据时,查询直接访问列。当查询的结果组以某些方式基于列的内容时,查询间接地访问列,但是不包括来自该列的数据。指定在数据库命令的属性列表中的属性是直接访问数据的实例,而指定在数据库命令的过滤列表中的属性是间接访问数据的实例。例如,如果查询包括在其属性列表中的“NAME”,那么查询的结果组包括来自表的“NAME”列的值。然而,如果相同的查询在其属性列表中不包括“SALARY”,但是在其过滤列表中包括“SALARY>$50,000”,那么查询的结果组将基于SALARY列的内容,但是不包括来自SALARY列的值。在此情况下,尽管用户没有直接从工资属性获取数据,但是用户获得了与工资有关的信息。根据一个实施例,策略函数232支持基于受限属性在数据库命令中出现的位置,而不同地对待数据库命令的策略。例如,策略函数232可以支持下列策略(1)如果SALARY在选择列表中,那么限制对包括提交查询的用户信息的行的查询;(2)如果SALARY在过滤列表中,那么将查询限制在包括与用户在同一部门的雇员的信息的行;(4)如果SSN位于查询中的任何位置,并且用户不是经理,那么将查询限制在包括用户信息的行;(5)如果SSN在选择列表中并且用户是经理,那么将查询限制在包括与经理在同一部门的雇员的信息的行;(6)如果SOCIALSECURITY在过滤列表中并且用户是经理,那么不向查询添加任何行级限制。根据一个实施例,这些策略体现在属性限制元数据243中。当数据库服务器230接收查询221时,语义分析程序231确定查询221是否引用任何受限属性,以及这样的引用发生在查询221的何处。基于属性限制元数据243,语义分析程序231确定是否调用策略函数232,并且策略函数232确定如何修改查询。例如,语义分析程序231可以发现该查询引用过滤列表中的SSN属性,并且该用户是经理。根据该确定,语义分析程序231不调用策略函数232。而是,基于策略,在不经修改的情况下就执行该查询。屏蔽值根据一个实施例,屏蔽值用于在将数据返回给用户之前,屏蔽来自受限属性的数据。例如,如果属性限制元数据243表示“SSN”是受限属性,并且请求来自“SSN”属性数据的用户没有被授权访问该数据,那么可将屏蔽值(例如“000-000-0000”)返回给用户,而不是返回实际所请求的社会安全号码。根据一个实施例,屏蔽值根据受限属性的数据类型变化。例如,如果受限属性的数据类型是整数,那么屏蔽值可以是整数0。类似地,如果受限属性的数据类型是字符串,那么屏蔽值可能是一串星号。根据一个实施例,屏蔽值是可配置的。例如,数据库管理员可以输入表示用于每个受限属性的屏蔽值的数据。应用程序接口(API)可以用于配置屏蔽值。API可以接收表示屏蔽值的数据,并将该数据保存在属性限制元数据243中。在一实施例中,属性屏蔽可以与行过滤结合使用。例如,策略可以指定如果用户提交检索工资信息的查询,那么(1)修改该查询,仅检索与该用户在同一部门的雇员的行;(2)除了提交查询的用户所在行以外,在所有行中屏蔽结果组中的SALARY值。基于这些规则,数据库服务器230将按照以下步骤处理引用SALARY属性的查询语义分析程序231将确定该查询引用受限属性。策略函数232将修改该查询,以将限制该查询的谓词添加至在与该雇员同一部门的行。一旦执行查询,结果组235将包括所有被检索行的工资信息。然后屏蔽程序234将屏蔽结果组235,以创建仅包括用于提交该查询的用户的工资信息的屏蔽结果组233。对于在屏蔽结果组中的所有其它行,SALARY列将包括屏蔽值。然后将屏蔽结果组233提供给提交该查询的数据库应用程序220。当数据库命令引用受限属性时,在执行前修改数据库命令的操作实例该部分提供了多个情景的描述及对应的操作实例,用于确定数据库命令是否引用受限属性,并在数据库命令引用受限属性的情况下,在执行查询之前修改数据库命令。为了便于解释,假设如图2所示,系统的用户使得数据库应用程序220提交查询221以访问如图1所示的表t2。另外,假设属性限制元数据243指示“SALARY”和“SSN”是受限属性。此外,假设属性限制元数据243表示如果不是经理的雇员请求来自“SALARY”属性的信息,那么不是经理的雇员仅可以访问他们自己的工资信息,然而,如果经理请求来自“SALARY”属性的信息,那么经理可以访问其所在部门人员而不是其部门以外的其它人员的工资。情景1有人请求来自非受限属性的数据。例如,John输入查询,请求查看表t2中的所有人的姓名和ID。在此情况下,用户210是使用数据库应用程序220发布查询221的John,其包括如下Q1中所述的查询Q1SELECTname,idFROMt2在用于情景1的操作实例1中,数据库230截取查询221。语义分析程序231从属性限制元数据243中获取受限属性列表(例如,“SALARY”和“SSN”)。语义分析程序231扫描查询221,并将受限属性与查询221中的被引用属性相比较。在此情况下,“NAME”和“ID”是查询221中的被引用属性,而且这些被引用属性不是受限属性。因此,语义分析程序231不调用策略函数232,并且数据库服务器将表t2的所有行111-117的属性为“NAME”和“ID”的数据返回给用户210。情景2一个不是经理的雇员请求来自受限属性的数据。例如,John输入查询,请求查看所有人员的所有姓名和工资。在这种情况下,用户210是使用数据库应用程序220发布查询221的John,其包括如下Q2中所述的查询Q2SELECTname,salaryFROMt2在用于情景2的操作实例2中,查询221引用属性“NAME”和“SALARY”。在将所查询属性与受限属性相比较的过程中,语义分析程序231确定“SALARY”是受限属性。因此,语义分析程序231调用策略函数232,其执行不是经理的雇员仅可以访问自己的工资信息的策略。该策略函数232产生谓词以修改查询221,通过将谓词“WHEREt.id=064832”附加至查询221(其过滤John的雇员id),来限制John仅访问他自己的工资信息。因而,响应于查询221,返回姓名“JOHN”和工资“$151,000”。情景3一个是经理的雇员请求来自受限属性的数据。例如,与John输入查询Q2一样,部门M72的经理Brian也输入了请求查看所有人员的所有工资的查询Q2。在此情况下,用户210是使用数据库应用程序220发布查询221(包括Q2中所描述的查询)的Brian。在用于情景3的操作实例3中,语义分析程序231确定查询221引用被指定为受限属性的属性“SALARY”。语义分析程序231调用策略函数232,其产生谓词“WHEREt.dept=‘M72’”。将该谓词附加至查询221,以使响应于查询221,仅返回代表Brian所在部门的人员的行的信息。操作实例2和3使用相同的查询Q2,然而,因为保存在属性限制元数据243中的策略信息不同,返回给John和Brian不同的结果。因此,为了响应于不同用户提供不同结果,不需要修改数据库应用程序220。用于屏蔽来自受限属性的数据的操作实例在本部分的操作实例使用与前一部分中描述的假设和情景相同的假设和情景。然而,还假设已经为受限属性指定了屏蔽值。例如,数据库管理员可以指定整数0作为受限属性“SALARY”的屏蔽值,及字符串“000-000-0000”作为受限属性“SSN”的屏蔽值。在情景1的操作实例4中,数据库服务器235获取表t2的所有行111-117的属性为“NAME”和“ID”的数据,并将该数据保存在结果组235中。语义分析程序231确定如Q1中描述的查询221没有引用任何被指定为受限属性的属性,因此,结果组235不经修改提供给用户210。在情景2的操作实例5中,数据库服务器235获取表t2的所有行111-117的属性为“NAME”和“SALARY”的数据,并将该数据保存在结果组235中。语义分析程序231确定如Q2中描述的查询221引用了被指定为受限属性的属性(例如,“SALARY”)。屏蔽程序234从属性限制元数据243获取屏蔽值,将来自“SALARY”属性的数据替换为屏蔽值(整数0)。将经修改的数据保存在屏蔽结果组233中。屏蔽结果组233将包括如下面表1中描述的数据。表1然后将如表1所描述的屏蔽结果组233提供给用户210。在情景3的操作实例6中,类似地,语义分析程序231将确定查询Q2引用了被指定为受限属性的属性(例如,“SALARY”)。数据库服务器230将与操作实例5中返回给John的如表1描述的数据相同的数据返回给Brian。根据一个实施例,来自受限属性的数据不总是被屏蔽。在该实施例中,在属性限制元数据243中的数据可以表示在某些特定情况下应屏蔽用于特定受限属性的数据,在其它情况下可以不屏蔽用于特定受限属性的数据。例如,属性限制元数据243可以表示经理不可以访问不在他们部门人员的工资信息,但是可以访问在他们部门人员的工资信息。另外假设,属性限制元数据243表示人力资源部门的人员可以访问任何人员的社会安全号,而人力资源部门之外的雇员仅可以访问他们自己的社会安全号。在此情况下,假设用户210是Chris,其发布的查询221包括Q3SELECTname,salary,ssnFROMt2在此情况下,Chris将接收包括下列信息的信息表2结论在此描述的结构和步骤提供了用于实现数据库中的访问控制策略的机制,其中这种机制(1)不会严重地影响查询执行的效率,(2)不依靠用户通过特殊窗口访问数据或将变量设定为适当的值,(3)支持相对复杂的访问控制规则,(4)不会使访问控制管理复杂得无法实现,(5)可以用于限制数据从其返回数据的属性或列,以及(6)可以用于响应于不同的用户返回不同的结果,而不用修改数据库应用程序。此外,在此描述的机制不局限于属性和/或列,可以用于任何数据库命令,该数据库命令引用与数据库对象相关的任何类型的特征。硬件概述图3是框图,示出了可应用本发明的实施例的计算机系统300。计算机系统300包括用于传递信息的总线302或其它通信装置、以及用于处理信息的、与总线302连接的处理器304。计算机系统300还包括主存储器306,例如随机访问存储器(RAM)或者其它动态存储装置,与总线302连接,用于储存信息及处理器304要执行的指令。主存储器306还可用于在处理器304执行指令过程中,储存临时变量或其他中间信息。计算机系统300还包括只读存储器(ROM)308或者其他静态存储装置,与总线302连接,用于储存静态信息和处理器304要执行的指令。还提供了存储装置310,如磁盘或光盘,与总线302连接,用于储存信息和指令。计算机系统300可以经由总线302连接到显示器312,如阴极射线管(CRT),用于向计算机用户显示信息。包括字母数字键和其他键的输入装置314与总线302相连,用于传递信息和命令选择到处理器304。另一种用户输入装置是光标控制316,如鼠标、跟踪球、或光标方向键,用于传递方向信息和命令选择到处理器304饼用于控制显示器312上的光标移动。这个输入设备通常在两个轴上(第一个轴(例如X轴)和第二个轴(例如Y轴))具有两个自由度,使装置能指定平面上的位置。本发明涉及计算机系统300的使用,用于执行在此描述的技术。根据本发明的一个实施例,由计算机系统300响应于执行包括在主存储器306中的一个或多个指令的一个或多个序列的处理器304,来实现这些技术。这样的指令可以从诸如存储设备310的其它计算机可读介质读入主存储器306。通过执行包括在主存储器306中的指令序列,使处理器304执行此处所述的处理步骤。在可选实施例中,硬连线电路(hard-wiredcircuitry)可取代软件指令或者与软件指令结合来实施该发明。因此,本发明中的实施例将不限于硬件电路和软件的任何特定组合。这里使用的术语“计算机可读介质”是指参与提供指令至用于执行的处理器304的任何介质。这种介质可以采取很多形式,包括但不限于非易失性介质、易失性介质和传递介质。非易失性介质举例来说包括光盘或磁盘,如存储装置310。易失性介质包括动态存储器,如主存储器306。传输介质包括同轴电缆、铜线、和光纤,包括组成总线302的导线。传输介质还可采取声波或光波形式,例如那些在无线电波和红外线数据通信过程中产生的声波和光波。通常形式的计算机可读介质包括如软盘、软性盘、硬盘、磁带,或者任何其它磁性介质、CD-ROM、任何其它光介质、打孔纸、纸带、或者任何带孔图样的物理介质、RAM、PROM、EPROM、FLASH-EPROM、或者其他任何存储芯片或者盒式磁带,或者以下提到的载波、或者计算机可读的任何其他介质。各种形式的计算机可读介质可参与承载一个或者多个指令的一个或多个序列到处理器304用于执行。例如,指令开始可承载在远程计算机的磁盘中。远程计算机可以将指令加载到其动态存储器中,然后使用调制解调器通过电话线发送信息。计算机系统300本地的调制解调器可接收电话线上的数据,并使用红外发射器将数据转换成红外信号。红外探测器可以接收红外信号携带的数据,合适的电路可以把信息放到总线302上。总线302把数据传递到主存储器306中,处理器304从主存储器306取回并执行这些指令。在处理器304执行这些指令之前或之后,主存储器306接收的指令可随意地储存于存储装置310中。计算机系统300还包括连接到总线302的通信接口318。通信接口318提供双向数据通信,连接到与局域网322相连的网络链路320。例如,通信接口318可以是综合业务数字网(ISDN)卡或者调制解调器,用于提供到相应类型电话线的数据通信连接。又如,通信接口318可以是局域网(LAN)卡,用于提供至兼容局域网(LAN)的数据通信连接。也可以使用无线链路。在任何这样的实施中,通信接口318发送和接受承载表示各种信息的数字数据流的电信号、电磁信号和光学信号。网络链路320通常可通过一个或者多个网络提供数据通信给其它数据装置。例如,网络链路320可通过局域网322与主机324连接,或者与互联网服务提供商(ISP)326操作的数据设备连接。ISP326又通过目前通称为“互联网”328的全球分组数据通信网络提供数据通信服务。局域网322和互联网328都使用承载数字数据流的电信号、电磁信号或光学信号。这些信号,如通过各种网络的信号,网络链路320上的信号,通过通信接口318的信号,都传送数字数据给计算机系统300或者传送来自计算机系统300的数字数据,是传输信息的载波的示范性形式。计算机系统300能通过网络、网络链路320和通信接口318发送消息和接收数据(包括程序代码)。例如,在互联网的例子中,服务器330可通过互联网328、ISP326、局域网322、和通信接口318,传送所请求的用于应用程序的程序代码。当代码被接收和/或储存在存储装置310上或者其它非易失性介质上用于随后执行时,处理器304可执行所接收到的代码。按照这种方式,计算机系统300可以以载波的形式获得应用代码。上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种用于执行数据库命令的方法,包括以下计算机可执行的步骤接收引用一组数据库对象的属性的数据库命令;确定该组属性中的哪些属性在所述数据库命令中被引用;以及根据所引用的那些属性,确定在执行所述数据库命令之前是否修改所述数据库命令。2.根据权利要求1所述的方法,其中,所述确定是否修改所述数据库命令的步骤包括确定所述数据库命令是否引用受限属性的步骤。3.根据权利要求2所述的方法,其中,所述确定是否修改所述数据库命令的步骤包括根据在所述数据库命令中引用所述受限属性的位置,来确定是否修改所述数据库命令的步骤。4.根据权利要求2所述的方法,其中,所述确定是否修改所述数据库命令的步骤还包括基于所述受限属性是否在所述数据库命令的选择列表中,来确定是否修改所述数据库命令的步骤。5.根据权利要求2所述的方法,其中,所述确定是否修改所述数据库命令的步骤还包括基于所述受限属性是否在所述数据库命令的过滤列表中,来确定是否修改所述数据库命令的步骤。6.根据权利要求1所述的方法,还包括响应于确定是否修改所述数据库命令,来修改所述数据库命令的步骤。7.根据权利要求6所述的方法,其中,所述修改数据库命令的步骤还包括基于属性限制元数据,将一个或多个谓词添加至所述数据库命令的步骤。8.根据权利要求1所述的方法,还包括接收表示该组属性中的哪些属性是受限制的数据的步骤。9.根据权利要求8所述的方法,其中,所述接收所述数据的步骤还包括使用应用程序接口接收所述数据的步骤。10.根据权利要求1所述的方法,其中,所述确定是否修改所述数据库命令的步骤包括将一个或多个受限属性与一个或多个被引用属性相比较,以确定所述一个或多个被引用属性中的哪些属性是受限制的步骤。11.根据权利要求1所述的方法,其中,所述数据库对象是表,所述数据库对象的所述属性是所述表中的列。12.一种用于执行数据库命令的方法,包括以下计算机执行步骤接收引用一组数据库对象的属性的数据库命令;确定在该组属性中的哪些属性是受限制的;以及产生结果组;其中,所述结果组包括一组行;其中,在该组行中的每行都包括该组属性中的每个属性的值;其中,对于该组行中的至少一行,在该组属性中的受限属性的值不是来自所述数据库对象的值。13.根据权利要求12所述的方法,其中,对于所述组行的所有行,所述受限属性的值被屏蔽。14.根据权利要求12所述的方法,其中,所述组行中的至少一行包括用于至少一个所述受限属性的非屏蔽值。15.根据权利要求12所述的方法,其中,所述确定在所述组属性中的哪些属性是受限制的步骤,还包括基于属性限制元数据确定在所述组属性中的哪些属性是受限制的步骤。16.根据权利要求12所述的方法,还包括接收表示所述组属性中的哪些属性是受限制的数据的步骤。17.根据权利要求16所述的方法,其中,所述接收所述数据的步骤还包括使用应用程序接口接收所述数据的步骤。18.根据权利要求12所述的方法,其中,所述确定在所述组属性中的哪些属性是受限制的步骤还包括将一个或多个受限属性与一个或多个被引用属性相比较,以确定一个或多个被引用属性中的哪些属性是受限制的步骤。19.根据权利要求12所述的方法,其中,所述数据库对象是表,所述数据库对象的所述属性是所述表中的列。20.一种计算机可读介质,承载有一个或多个指令序列,当由一个或多个处理器执行所述指令序列时,使所述一个或多个处理器执行在权利要求1到19中任一项所述的方法。全文摘要本发明提供了一种用于与属性相关的访问控制策略的方法和装置。根据一个实施例,基于在查询中被引用的数据库对象的属性来确定是否修改查询。另外,如果该查询所引用的数据库对象的一个或多个属性是受限制的,那么可以根据属性限制元数据修改该查询。根据另一实施例,通过在将数据返回给用户前屏蔽该数据,来限制用户访问来自受限属性的数据。然而,在另一实施例中,来自受限属性的某些数据可以在返回到用户前被屏蔽,来自受限属性的其它数据可以不被修改而返回。文档编号G06F21/00GK1977227SQ200380108699公开日2007年6月6日申请日期2003年12月30日优先权日2003年1月13日发明者李春熺,王敏雄,托马斯·基夫申请人:甲骨文国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1