CN104471585B - 用于数据访问控制实施的基于sql转换的优化方法和设备 - Google Patents
用于数据访问控制实施的基于sql转换的优化方法和设备 Download PDFInfo
- Publication number
- CN104471585B CN104471585B CN201380037517.1A CN201380037517A CN104471585B CN 104471585 B CN104471585 B CN 104471585B CN 201380037517 A CN201380037517 A CN 201380037517A CN 104471585 B CN104471585 B CN 104471585B
- Authority
- CN
- China
- Prior art keywords
- access
- query
- expression
- data
- data fields
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了让数据库服务器识别包括规定数据访问控制策略的访问检查操作符的查询的技术,并且如果有的话,则重写查询,以产生优化的查询执行计划。第一种技术基于与请求查询的数据库主体关联的特权重写包括访问检查操作符的查询。重写的查询向后续的数据库优化过程暴露与发出请求的主体相关的访问谓词。第二种技术重写包括规定不包括被拒绝特权的数据安全性策略的访问检查操作符的查询。第三种技术重写包括规定存储特定于行的访问控制列表的一个或多个数据库表列的访问检查操作符的查询。重写的查询被用来生成提供几种查询执行优化的查询执行计划。
Description
技术领域
本发明涉及数据库系统,并且更具体而言涉及由数据库管理系统执行的与数据访问控制策略关联的查询的优化。
背景技术
关系型和面向对象的数据库管理系统在数据库表中的行中存储信息。为了检索数据,请求数据的查询提交到数据库服务器,该服务器计算查询并返回所请求的数据。
由数据库服务器接收的查询可以由应用级的终端用户提交。在许多情况下,为了安全性或者其它原因,防止特定的应用级终端用户访问或修改存储在数据库中的一些或全部数据会是期望的。为了提供这种安全性,对存储在数据库中的数据的访问可以由数据库访问控制服务控制。基于一个或多个定义的数据访问控制策略,数据库访问控制服务保护数据库数据不受不期望的访问。每个数据访问控制策略定义对数据库系统中的特定主体或者授予或者禁止的数据库访问操作或特权。每个数据库主体可以是特定的数据用户或者定义的用户组。为了提供细粒度的访问控制,数据库访问控制服务可以以行级为基础应用数据访问控制策略,从而控制每个主体对数据库表的个别行的访问。
实施行级数据访问控制策略的数据库访问控制服务会给数据库系统引入相当大的开销。例如,由数据访问控制策略定义的访问条件是由数据库服务器在执行访问检查的查询操作符中定义的,从而增加了查询和查询执行的复杂度。为了存储和评估存储表示访问控制策略和数据库主体的信息的表,存在附加的数据库执行开销。
此外,为了实施以行级数据为基础的数据访问控制,数据库访问控制服务具有对在所接收的查询中规定的每一行评估数据访问控制策略的开销。使问题进一步复杂化的是,与查询中的访问控制策略相关的许多信息都封装在执行访问检查的查询操作符中并且在查询编译期间是查询优化过程不可获得的。其结果就是对在查询中规定的每一行的数据访问控制策略的评估常常涉及附加的和不必要的访问控制检查。
本文所描述的是用于优化对与数据访问控制策略关联的数据库表的查询的技术。
附图说明
在附图的图示中,本发明作为例子而不是作为限制进行说明,并且相同的标号指相似的元件并且其中:
图1是说明基于提交查询的主体重写包括访问检查操作符的查询的过程的流程图。
图2是说明实施例可以在其上实现的计算机系统的框图。
具体实施方式
在以下描述中,为了解释,阐述了众多具体细节,以便提供对本发明的透彻理解。但是,很显然,本发明没有这些具体细节也可以实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地模糊本发明。
一般概述
本文所述的方法提供了让数据库服务器优化对与数据访问控制策略关联的数据库表的查询的途径。数据库服务器接收查询并确定该查询是否识别出与数据访问控制策略关联的一个或多个表。响应于确定查询识别出与数据访问控制策略关联的表,数据库服务器重写该查询,以包括访问检查查询操作符。对于表中被请求的每一行,访问检查操作符确定提交查询的主体是否被授予执行所请求的查询操作的特权。访问检查确定是基于与数据库表关联的数据访问控制策略和主体的。
数据库服务器可以使用这些技术来识别包括访问检查操作符的查询,并且如果包括,则重写查询,以产生优化的查询执行计划。根据一种实施例,响应于识别出包括访问检查操作符的查询,数据库服务器基于提交查询的主体和关联的数据访问控制策略确定与该主体关联的一个或多个访问谓词。访问控制策略包括一个或多个访问控制列表,每个访问控制列表包括一个或多个访问控制条目。每个访问控制条目对规定的主体或者授予或者拒绝特权。每个访问控制列表还与一个或多个访问谓词关联,这些访问谓词识别关联的访问控制列表对其可适用的数据库表的一行或多行。因而,与提交查询的主体关联的访问谓词是与包括对该主体或者授予或者拒绝所请求特权的访问条目的访问控制列表关联的那些访问谓词。
响应于确定与主体关联的一个或多个访问谓词,查询被重写,以形成重写的查询表达式,其中重写的查询表达式包括逻辑表达式,该逻辑表达式包括在访问检查操作符之外的一个或多个关联的访问谓词。如果没有这种重写,则访问谓词在查询编译期间仍然封装在访问检查操作符中并且不暴露给查询优化器。此外,在查询重写期间,不适用于提交查询的主体的访问谓词从查询中完全被除去,从而产生在执行期间让数据库服务器评估的更少访问谓词。
在另一种实施例中,数据库服务器确定是否有任何由访问检查操作符规定的访问控制列表包括对主体拒绝特权的访问控制条目。响应于确定没有访问控制列表包括拒绝特权的访问控制条目,查询被重写,以形成包括逻辑表达式的重写的查询表达式,该逻辑表达式对每个访问控制列表包括单独的访问检查操作符,并且关联的访问谓词是在访问检查操作符之外写的。在用于优化的查询编译期间,这种重写类似地向查询优化器暴露访问谓词。
在另一种实施例中,数据库服务器识别包括规定一个或多个特定于行的访问控制列表列的访问检查操作符的查询。特定于行的访问控制列表是在数据库表的一行或多行的列中识别的。特定于行的访问控制列表比与表关联的任何其它数据访问控制策略都优先。响应于识别出包括规定一个或多个特定于行的访问控制列表列的访问检查操作符的查询,查询被重写,以形成重写的查询表达式,该重写的查询表达式包括逻辑表达式,该逻辑表达式包括规定特定于行的访问控制列表的第一访问检查操作符和规定与表关联的任何剩余数据访问控制策略的第二访问检查操作符。规定剩余数据访问控制策略的访问检查操作符可以根据本文所述的其它技术进一步重写。重写的查询表达式确保维持特定于行的访问控制列表的优先性,同时使数据库服务器能够利用其它重写技术。
数据访问控制策略的概述
提供对存储在数据库中的数据的行级访问控制的数据访问控制策略可以利用一个或多个访问控制列表来规定。每个访问控制列表规定什么特权(例如,读或者更新)可以被哪些主体执行,其中每个主体是数据库系统中的用户或角色。角色是数据库系统中定义的一个或多个主体的分组。除了规定什么特权被授予特定的主体,特权还可以在访问控制列表中对一个或多个主体明确地拒绝。
为了规定什么特权对特定的主体是授予还是拒绝,每个访问控制列表包括定义从主体到被授予或拒绝的特权的映射的一个或多个访问控制条目。例如,一个访问控制条目可以规定对于第一用户授予访问读取,而另一个条目可以规定对于处于定义的“市场营销”角色的用户拒绝更新数据的特权。因而,每个访问控制条目可以规定至少一个特定的特权、指示该特权被授予还是拒绝的值,以及主体。
通过规定每个访问控制列表对其可适用的特定行的条件或谓词,在本文中被称为访问谓词,访问控制列表与数据库表的所述行关联。访问谓词可以例如规定为结构化查询语言(SQL)表达式或者用于识别数据库表的一行或多行的任何其它合适的表达式。访问控制列表与访问谓词的组合在本文中被称为数据域(data realm)。换句话说,数据域包括(1)访问控制列表,和(2)识别该访问控制列表对其可适用的一个或多个数据库表行的访问谓词。表的每一行可以具有与其关联的一个或多个数据域。数据访问控制策略是定义特定主体对一个或多个数据库表的特定行的访问特权的一个或多个数据域的集合。
当主体向数据库服务器提交查询时,实施数据访问控制策略的数据服务器确定由查询识别出的表是否与一个或多个数据域关联。如果数据库服务器确定查询识别出这种表,则在查询执行期间数据库服务器将对查询中所请求的每一行评估与该表关联的数据域。如果关联的数据域包括对发出请求的主体或者授予或者拒绝所请求特权的访问控制列表并且关联的访问谓词对当前接受评估的行为真,则分别地,对主体授予或拒绝对该行的访问。如果所有关联的数据域都已经评估而没有明确的授予或拒绝结果,则可以缺省地对该主体拒绝对该行的访问。
如果接受评估的行与多于一个数据域关联,则访问控制评估的结果可以依赖于数据域被评估的次序。例如,关于包含列col1的表T,第一数据域可以规定col1<2的访问谓词。关于同一个表,第二数据域可以规定col1<3的访问谓词。因而,第一数据域的访问谓词和第二数据域的访问谓词将都被表T中在col1列中包含值1的行满足。但是,与第一数据域关联的第一访问控制列表和与第二数据域关联的第二访问控制列表可以对特定的主体具有不同或者甚至冲突的特权授予。例如,第一访问控制列表可以规定特定用户被授予读的特权。第二访问控制列表可以规定完全相反,即,用户被拒绝读的特权。因而,对满足两个数据域的访问谓词的行向用户授予的特权将依赖于关联的访问控制列表被评估的次序。
如果表具有多于一个与其关联的数据域,则数据域按作为数据安全性策略的一部分定义的次序对每一行进行评估。例如,需要评估的数据域的有序集合可以规定为:
a1,C1,a2,C2,...,aN,CN
其中a1-aN当中每一个表示特定的访问控制列表,而C1-CN当中每一个表示把相应的访问控制列表与数据库表的一行或多行关联的访问谓词。
当数据库服务器接收请求对与数据安全性策略关联的表的行进行访问的查询时,数据安全性策略可以作为查询的一部分在访问检查查询操作符中规定。例如,关于提交查询的特定主体p,用于上述数据安全性策略的策略评估逻辑可以由以下示例访问检查操作符规定:
CHECK_PRIVILEGE(p,a1,C1,a2,C2,...,aN,CN)
其中CHECK_PRIVILEGE是访问检查操作符并且以主体p和数据域的有序集合a1,C1,a2,C2,...,aN,CN为参数。
因而,为了让主体p能够访问与以上规定的数据安全性策略关联的表中所请求的数据,由访问检查操作符规定的策略评估逻辑必须对由该主体请求的所有行都返回真。与数据安全性策略关联的访问控制列表以对每个所请求的行规定的次序进行评估。如果被评估的访问控制列表或者授予或者拒绝被检查的特权并且关联的条件对行成立,则分别地对该主体授予或拒绝对该行的访问。如果用于特定行的评估逻辑到达数据域列表的结束而没有结果,则对该行的访问被拒绝。
在实施例中,在查询编译过程期间,访问检查操作符作为由主体提交的查询的一部分被包括。例如,响应于从主体p接收查询SELECT*FROMT,数据库服务器可以在查询编译期间向该查询附加访问检查操作符,产生查询表达式:
SELECT*FROM T WHERE CHECK_PRIVILEGE(p,a1,C1,a2,C2,...,aN,CN)
因而,CHECK_PRIVILEGE访问检查操作符将被数据库服务器用来控制由主体p对数据库T的所请求行的访问。
查询重写和优化
当数据库服务器接收到查询时,在执行该查询之前,数据库系统执行翻译、语义分析、重写和优化的一连串步骤。查询转换的每个步骤会导致查询的重新形成的表示。或者,数据库系统可以在查询转换的一个或多个步骤把转换后的查询表示为存储器内的数据结构。下一部分描述与本文所述技术相关的查询重写。
在接收到查询之后,在查询编译过程期间,数据库服务器对查询执行查询解析和语义分析当中的一个或多个步骤。在对查询执行语义分析时,数据库服务器生成查询的内部表示。在查询的内部表示生成之后,语义分析的一部分将包括数据库服务器确定在查询表达式中规定的一个或多个表是否与数据安全性策略关联。如上所述,响应于确定在查询中规定的一个或多个表与数据安全性策略关联,数据库服务器重写查询,以包括访问检查操作符。
然后,查询表达式被进一步分析,以确定一个或多个附加的查询重写是否可应用,如本文进一步描述的。在一种实施例中,附加的查询重写在查询的语义分析期间,或者换句话说,在第一次查询重写期间,发生。在其它实施例中,重写可以在查询编译过程中的其它时间发生,并且可以作为单个重写的部分或者作为多个重写步骤发生。
特定于用户的重写
在一种实施例中,查询是部分地基于请求查询的特定主体来重写的,在本文中被称为特定于用户的重写。查询的特定于用户的重写把访问检查操作符重写为数据域的访问谓词的逻辑组合,其中访问谓词包括向提交查询的主体或者授予或者拒绝所请求特权的访问控制条目。特定于用户的重写完全除去那些向主体既不授予也不拒绝所请求特权的数据域,使得那些数据域在查询执行期间不必进行评估。于是,数据库优化层能够基于在访问检查操作符之外并在查询语句中暴露的剩余访问谓词进一步优化查询执行计划。在实施例中,当数据库编译特定于用户的重写的查询时,结果被保存为数据库游标,该数据库游标可以被同一主体或者具有完全相同的特权授予的另一主体重用。
例如,特定的表T可以具有与其关联的数据域a1,C1,a2,C2,...,aN,CN。然后,主体用户user1可以向数据库服务器提交识别数据库表T的查询。如上所述,在接收到查询后,数据库服务器将重写该查询,以包括访问检查操作符。数据库服务器还可以基于提交主体p和与表T关联的数据域重写该查询。例如,如上所述对表T的访问检查操作符的重写可以由数据库服务器表示为:
REWRITE[CHECK_PRIVILEGE(p,a1,C1,a2,C2,...,aN,CN)]
图1是说明数据库服务器基于特定于用户的重写来重写包括访问检查操作符的查询的过程的流程图。在步骤110,数据库服务器识别包括访问检查操作符的查询。查询的特定于用户的重写一般而言是通过按规定的次序评估在访问检查操作符中规定的数据域列表来进行的,以确定与提交查询的主体相关的访问谓词,并且重写查询,以包括只有那些访问谓词的逻辑表达式。
在步骤115,数据库服务器确定是否有任何数据域留在访问检查操作符中所规定的数据域的有序列表中。如果没有数据域留在有序列表中,则重写完成。否则,评估对有序列表中规定的下一个数据域进行。例如,参考以上的示例访问检查操作符,数据库服务器首先评估数据域a1,C1。
在步骤120,数据库服务器确定当前数据域的访问控制列表是否向主体授予所请求的特权。例如,数据库服务器首先确定第一数据域的访问控制列表a1是否向主体授予所请求的特权。如果访问控制列表a1包括向主体授予所请求的特权的访问控制条目,则该主体对由访问谓词C1规定的所有行被授予所请求的特权,外加由剩余数据域授予的任何行。因而,如果接受评估的数据域的访问控制列表授予所请求的特权,则数据库服务器重写(步骤125)访问检查操作符,作为接受评估的数据域的访问谓词和规定剩余数据域的访问检查操作符的或(disjunction)。此外,重写逻辑递归地应用到规定剩余数据域的访问检查操作符。例如,在确定第一数据域授予所请求的特权之后,数据库服务器可以把以上的示例访问检查操作符如下重写:
C1 OR REWRITE[CHECK_PRIVILEGE(a2,C2,...,aN,CN)]
如果接受评估的数据域没有授予所请求的特权,则数据库服务器确定(步骤130)接受评估的数据域的访问控制列表是否拒绝所请求的特权。如果访问控制列表拒绝所请求的特权,则逻辑上主体只对满足关联的访问谓词的逻辑补和由剩余数据域授予的任何行的与(conjunction)的那些行被授予所请求的特权。因而,数据库服务器重写(步骤135)访问检查操作符,以反映这种逻辑。例如,如果第一数据域拒绝所请求的特权,则数据库服务器可以把访问检查操作符如下重写:
!C1 AND REWRITE[CHECK_PRIVILEGE(a2,C2,...,aN,CN)]
如果接受评估的数据域既不授予也不拒绝所请求的特权,则关联的谓词对识别主体对其被授予或拒绝所请求特权的任何行不起作用。例如,在第一数据域的评估之后,如果访问控制列表a1既不包括对主体p授予也不包括对主体p拒绝特权,则访问谓词C1与访问检查不相关。因而,如果当前数据域既不授予也不拒绝所请求的特权,则在步骤140中,当前数据域从重写的查询表达式中被略去。
访问检查操作符以这种方式对在访问检查操作符中规定的数据域有序列表递归地重写,一直到没有数据域仍在访问检查操作符中被规定。在重写过程结束时,只有与或者授予或者拒绝所请求特权的访问控制列表关联的那些访问谓词留在查询中。因此,访问检查操作符不再包括在查询中。
通过从查询中除去访问检查操作符和与发出请求的主体不相关的数据域,特定于用户的重写提供了包括访问检查操作符的查询的优化重写。此外,因为相关的访问谓词在查询中暴露而不是封装在访问检查操作符中,所以数据库服务器可以使用访问谓词在后续的查询编译步骤期间进一步优化查询。
游标共享
如上所述,利用特定于用户的重写所重写的关于查询所存储的信息可以在后续的查询请求中被至少相同的主体重用。各种数据库语言,诸如SQL,支持在本文中被称为“游标”的专用结构。在查询的编译期间,数据库服务器可以对查询执行显著数量的初步工作,诸如解析、语义分析、查询重写以及查询计划生成。游标存储大量这种初步工作的结果。例如,存储在游标中的一组信息包括用于在查询执行期间执行由SQL语句规定的操作的执行计划。
在一种实施例中,当数据库服务器接收由特定主体提交的查询时,为了确定提交查询的主体是否可以使用现有的游标,数据库服务器执行游标共享检查。例如,假设主体的访问特权没有改变,随后提交之前已经利用特定于用户的重写技术重写的查询的主体可以重用为该重写的查询保存的游标。所保存的游标的重用允许数据库服务器执行查询而无需重新执行已经为该查询处理过的所有编译步骤。除了对随后提交查询的同一主体重用游标,在另一种实施例中,与具有保存的游标的另一主体具有相同特权的主体也可以重用该同一游标。
为了重用之前保存的数据库游标,接收识别与数据访问控制策略关联的数据库表的查询的数据库服务器首先基于数据访问控制策略确定与发出请求的主体关联的特权。在确定与发出请求的主体关联的特权之后,发出请求的主体的特权与现有的游标进行比较,以便确定该主体是否可以重用已保存的游标。如果保存的游标对发出请求的主体或者与发出请求的主体具有相同特权的主体存在,则数据库服务器可以使用保存的游标来执行查询,而不是重新编译该查询。
但是,因为具有不同特权的两个主体不能重用为特定于用户的重写保存的相同游标,所以必须为具有不同访问特权的每个主体重写查询。这会导致所保存的游标数目变得相当大。在实施例中,可以对可以被数据库服务器保存的游标数目设置限制,以防止太多游标被保存并且过度消耗数据库资源。例如,可以存储指示关于所存储数据库游标的最大数目的值。
仅授予重写
在另一种实施例中,查询可以对由不包括被拒绝特权的访问检查操作符规定的访问控制策略重写,在本文中被称为仅授予重写。仅授予重写可适用于包括访问检查操作符的查询,其中在访问检查操作符中规定的每个数据域只包括被授予的特权。如上所述,由访问检查操作符规定的数据域被评估的次序一般而言是有关系的,因为一个或多个数据域可以包含对主体拒绝特权的访问控制列表。但是,如果没有数据域对主体拒绝特权,则不再存在实施数据域的排序语义的需求,从而使得能够简化查询。
在实施例中,数据库服务器确定在访问检查操作符中规定的每个数据域不包含包括被拒绝特权的访问控制列表。响应于确定没有访问控制列表包括被拒绝的特权,数据库服务器重写查询,使得,对于每个规定的数据域,访问检查操作符被写作(1)规定主体和数据域的访问控制列表的访问检查操作符和(2)在该访问检查操作符之外所写的相应访问谓词的的与的逻辑或。
例如,假设数据库服务器接收具有访问检查操作符的查询,其中访问检查操作符规定数据域a1,C1,a2,C2,...,aN,CN,并且没有访问控制列表a1-aN包含被拒绝的特权。如果查询中的访问检查操作符表示为CHECK_PRIVILEGE(p,a1,C1,a2,C2,...,aN,CN),则查询的仅授予重写将如下重写查询中包含访问检查操作符的部分:
CHECK_PRIVILEGE(p,a1)AND C1 OR CHECK_PRIVILEGE(p,a2)AND C2...ORCHECK_PRIVILEGE(p,aN)AND CN
如以上所说明的,仅授予重写暴露与访问检查操作符之外的每个数据域关联的访问谓词,从而允许由查询优化过程进行的后续优化。此外,因为仅授予重写保留规定发出请求的主体的检查访问操作符,所以仅授予重写在为重写保存的游标可以由任何其他发出请求的主体重用的意义上是通用的。因而,不需要为了让后续发出请求的主体重用为通过仅授予重写重写的查询所保存的游标而进行检查。
至少有两种仅授予重写可以应用的可能情况。在上述实施例中,当没有在查询中规定的数据域包括对任何主体拒绝特权的访问控制列表时,查询可以利用仅授予重写来重写。换句话说,在查询中规定的数据域集合将不拒绝任何特权,而不管哪个主体提交查询。在这种情况下,不需要为了让保存的游标被其他主体共享而进行游标检查。
在另一种实施例中,当提交查询的特定主体在任何规定的数据域中都不被拒绝所请求特权但是或者其他主体被拒绝特权或者发出请求的主体被拒绝未在当前查询中请求的某个其它特权时,仅授予重写可以使用。在这种情况下,查询可以利用上述仅授予逻辑来重写,但是结果产生的保存的游标一般而言不能被所有主体重用。为除当前主体所请求那些特权之外还包括被拒绝特权的重写的查询生成的游标只能被同一主体或者具有相同特权的另一主体重用。因而,为这种重写保存的游标需要如结合特定于用户的重写所描述的相似的游标共享检查。
对特定于行的访问控制列表的重写
在另一种实施例中,当一个或多个访问控制列表存储在查询中所识别的表的一行或多行中时,重写技术可应用。例如,存储其它数据的表可以包括一列或多列,其中访问控制列表可以按照表的每一行存储或规定。每个特定于行的访问控制列表只适用于它在其中被存储的行。除了基于数据域的任何外部访问控制策略,特定于行的访问控制列表也定义访问控制策略。数据库表可以包括用于存储特定于行的访问控制列表的任何数目的列,并且访问检查操作符可以被修改,以便除外部访问控制策略之外还支持特定于行的访问控制列表。例如,访问检查操作符可以如下对包括存储特定于行的访问控制列表的两列的表进行扩展:
CHECK_PRIVILEGE(p,aa,sa,a1,C1,a2,C2,...,aN,CN)
以上的访问检查操作符包括两个附加参数,aa和sa,表示表中存储特定于行的访问控制列表的两列。在实施例中,特定于行的访问控制列表优先于与相同表关联的任何其它数据访问控制策略(即,在aa和sa参数之后规定的数据域)。如果特定于行的访问控制列表的评估导致特权对主体授予或拒绝,则对所请求的行的访问分别被授予或拒绝,并且剩余的数据域不需要被评估。如果基于特定于行的访问控制列表所请求的特权对发出请求的主体既没有授予也没有拒绝,则与该表关联的剩余数据域被评估。
因而,主体对表中包括特定于行的访问控制列表的所请求行的访问是基于以访问控制操作符规定的次序对任何特定于行的访问控制列表的评估,或者,如果特定于行的访问控制列表不产生授予或拒绝结果,则基于对任何剩余数据访问策略的评估。特定于行的访问控制列表重写逻辑地重写包括规定一个或多个特定于行的访问控制列表的访问检查操作符的查询,以反映这种逻辑。例如,如果数据库服务器确定查询包括规定两个特定于行的访问控制列表列aa和sa的访问检查操作符,则检查访问操作符可以如下重写:
CHECK_PRIVILEGE(p,aa,sa)=Grant OR CHECK_PRIVILEGE(p,aa,sa)=NeitherAND REWRITE[CHECK_PRIVILEGE(p,a1,C1,a2,C2,...,aN,CN)]
以上所说明的重写的访问检查操作符的逻辑评估适当地说明了特定于行的访问控制列表的优先性。例如,如果对用于特定于行的访问控制列表的访问检查操作符的评估导致授予,则查询的整个重写的部分将返回真并且对该行的访问将授予主体。如果对列访问控制列表的访问检查操作符的评估导致拒绝,则整个重写的查询部分将返回假并且主体将被拒绝访问该行。如果对特定于行的访问控制列表的评估既不导致授予也不导致拒绝,则对该行的访问将基于任何剩余数据域的访问检查来确定。
此外,如以上所说明的,规定任何剩余数据域的访问检查操作符本身可以利用本文的其它重写技术来重写。在以上重写的表达式中,特定于行的访问控制列表的访问检查与剩余数据域的访问检查分离,从而允许剩余数据域的访问检查基于其它优化技术进一步重写。例如,依赖于其它数据域的特性和发出请求的主体,数据库服务器可以首先利用特定于行的访问控制列表重写来重写包括规定一个或多个特定于行的访问控制列表列的访问检查操作符的查询,然后利用特定于用户的查询重写或仅授予重写进一步重写该查询。
数据库系统
数据库管理系统(“DBMS”)管理数据库。数据库管理系统可以包括一个或多个数据库服务器。数据库包括存储在持久性存储器机制,诸如一组硬盘,上的数据库数据和元数据。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每个记录中的数据被组织成一个或多个字段。在关系型数据库管理系统中,数据容器被称为表,记录被称为行,而字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,而字段被称为属性。其它数据库体系架构可以使用其它术语。
通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令,数据库应用和客户端与数据库服务器交互。数据库命令可以是以遵循数据库语言语句的数据库语句的形式。用于表示数据库请求的语言是结构化查询语言(SQL)。有许多不同版本的SQL,有些版本是标准的,有些是专用的,并且存在各种扩展。SQL数据定义语言(“DDL”)指令向数据库服务器发布,以创建或配置数据库对象,诸如表、视图或者复杂数据类型。SQL/XML是在对象-关系型的数据库中操纵XML数据时所使用的SQL的常见扩展。虽然例子是基于Oracle的SQL描述的,但是本文所提供的技术不限于SQL的任何特定版本。
多节点数据库管理系统由共享对相同数据库的访问的互连节点组成。通常,节点经网络互连并且以变化的程度共享对共享的储存器的访问,例如,对一组盘驱动器和存储在其上的数据块的共享访问。多节点数据库系统中的节点可以是经网络互连的一组计算机(例如,工作站、个人计算机)的形式。或者,节点可以是网格的节点。网格由形式为刀片服务器的节点组成,这些刀片服务器与机架上的其它刀片服务器互连。
多节点数据库管理系统中的每个节点托管一个数据库服务器。服务器,诸如数据库服务器,是集成的软件部件和计算资源分配的组合,其中计算资源诸如存储器、节点和用于在处理器上执行集成的软件部件的过程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。过程是存储器、用于执行软件的CPU时间以及还有可能其它计算机资源的分配,这种分配是由过程在其上运行的计算机系统上的操作系统进行的。在用于数据库服务器的过程的情况下,过程执行数据库服务器软件。
来自多节点数据库系统中的多个节点的资源可以被分配用来运行特定的数据库服务器的软件。来自节点的软件和资源分配的每种组合是在本文中被称为“服务器实例”或“实例”的服务器。
硬件概述
根据一种实施例,本文所述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如持久性地编程为执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它储存器或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以组合定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
例如,图2是说明本发明的实施例可以在其上实现的计算机系统200的框图。计算机系统200包括总线202或者用于传送信息的其它通信机制,以及与总线202耦合用于处理信息的硬件处理器204。硬件处理器204可以是例如通用微处理器。
计算机系统200还包括耦合到总线202用于存储信息和要由处理器204执行的指令的主存储器206,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器206还可以用于在要由处理器204执行的指令执行期间存储临时变量或其它中间信息。当存储在处理器204可访问的非暂时性存储介质中时,这种指令使计算机系统200变成为执行指令中所规定的操作而定制的专用机器。
计算机系统200还包括只读存储器(ROM)208或者耦合到总线202的其它静态存储设备,用于为处理器204存储静态信息和指令。提供存储设备210,诸如磁盘或光盘,并且耦合到总线202,用于存储信息和指令。
计算机系统200可以经总线202耦合到显示器212,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备214,包括字母数字和其它键,耦合到总线202,用于向处理器204传送信息和命令选择。另一种类型的用户输入设备是光标控制216,诸如鼠标、轨迹球或者光标方向键,用于向处理器204传送方向信息和命令选择并且用于控制显示器212上的光标运动。这种输入设备通常具有在两个轴,第一个轴(例如,x)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
计算机系统200可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统200或者把计算机系统200编程为专用机器。根据一种实施例,本文的技术由计算机系统200响应于执行包含在主存储器206中的一条或多条指令的一个或多个序列而执行。这种指令可以从另一存储介质,诸如存储设备210,读到主存储器206中。包含在主存储器206中的指令序列的执行使处理器204执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
如在本文所使用的,术语“存储介质”指存储使机器以特定方式操作的数据和/或指令的任何非暂时性介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备210。易失性介质包括动态存储器,诸如主存储器206。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质,CD-ROM,任何其它光学数据存储介质,任何具有孔模式的物理介质,RAM、PROM和EPROM、FLASH-EPROM、NVRAM,任何其它存储器芯片或盒式磁带。
存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线202的配线。传输介质还可以采取声波或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。
各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器204供执行。例如,指令最初可以在远端计算机的磁盘或固态驱动器上携带。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统200本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以把数据放在总线202上。总线202把数据携带到主存储器206,处理器204从该主存储器206检索并执行指令。由主存储器206接收的指令可以可选地在被处理器204执行之前或之后存储在存储设备210上。
计算机系统200还包括耦合到总线202的通信接口218。通信接口218提供耦合到网络链路220的双向数据通信,其中网络链路220连接到本地网络222。例如,通信接口218可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口218可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实现中,通信接口218都发送和接收携带表示各种类型信息的数字信号流的电、电磁或光信号。
网络链路220通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路220可以通过本地网络222提供到主计算机224或者到由互联网服务提供商(ISP)226操作的数据设备的连接。ISP 226又通过现在通常称为“互联网”228的全球分组数据通信网络提供数据通信服务。本地网络222和互联网228都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号以及在网络链路220上并通过通信接口218的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统200或者携带来自计算机系统200的数字数据。
计算机系统200可以通过网络、网络链路220和通信接口218发送消息和接收数据,包括程序代码。在互联网例子中,服务器230可以通过互联网228、ISP 226、本地网络222和通信接口218发送对应于程序的所请求代码。
所接收的代码可以在其被接收时由处理器204执行,和/或存储在存储设备210或其它非易失性储存器中,供随后执行。
在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现变化。因而,说明书和附图应当在说明性而不是限制性的意义上考虑。本发明范围的唯一且排他指示,以及申请人预期作为本发明范围的内容,是由本申请产生的权利要求集合的字面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。
Claims (21)
1.一种用于查询优化的计算机实现的方法,包括步骤:
接收与第一主体关联并且针对存储在数据库的一个或多个表中的数据的查询表达式,其中所述一个或多个表中的至少一个表与数据访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问谓词和至少一个条目列表,其中所述访问谓词规定所述至少一个条目列表适用于的一个或多个行,并且其中,所述至少一个条目列表的每个条目把一个或多个主体映射到对所述一个或多个主体授予或拒绝的一个或多个特权;
重写所述查询表达式以形成第一重写的查询表达式,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
基于第一主体和所述一个或多个数据域,确定所述一个或多个数据域的一个或多个具体的访问谓词与第一主体关联;及
响应于确定所述一个或多个具体的访问谓词与第一主体关联,重写第一重写的查询表达式,以形成第二重写的查询表达式,其中第二重写的查询表达式包括在所述访问检查查询操作符外面的与第一主体关联的所述一个或多个具体的访问谓词;及
其中该方法是由一个或多个计算设备执行的。
2.如权利要求1所述的计算机实现的方法,其中所述访问检查查询操作符规定所述一个或多个数据域为参数的有序列表。
3.如权利要求1所述的计算机实现的方法,其中确定所述一个或多个数据域的一个或多个具体的访问谓词与第一主体关联还包括:
识别与查询表达式关联的所请求的特权;
确定一个或多个访问控制列表包括规定对第一主体或者授予或者拒绝所请求的特权的访问控制条目。
4.如权利要求1所述的计算机实现的方法,其中包括与第一主体关联的所述一个或多个访问谓词的第二重写的查询表达式包括与第一主体关联的所述一个或多个访问谓词的逻辑表达式。
5.如权利要求1所述的计算机实现的方法,还包括基于第二重写的查询表达式存储数据库游标。
6.如权利要求5所述的计算机实现的方法,还包括:
接收与第一主体关联的第二查询表达式;
基于数据库游标执行第二查询表达式。
7.如权利要求5所述的计算机实现的方法,还包括:
接收与第二主体关联的第二查询表达式;
基于所述一个或多个数据域,确定第二主体是否与第一主体具有相同的特权;
响应于确定第二主体与第一主体具有相同的特权,基于数据库游标执行第二查询表达式。
8.如权利要求5所述的计算机实现的方法,还包括存储指示关于所存储数据库游标的最大数目的限制的值。
9.一种用于查询优化的计算机实现的方法,包括步骤:
接收针对存储在数据库的一个或多个表中的数据的查询表达式,其中所述一个或多个表中的至少一个表与访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问控制列表和访问谓词,其中所述访问谓词规定所述访问控制列表适用于的一个或多个行,并且其中所述访问控制列表包括一个或多个访问控制条目,所述一个或多个访问控制条目中的每个访问控制条目规定特权、指示该特权被授予或拒绝的值以及主体;
重写查询表达式以形成第一重写的查询表达式,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
确定所述一个或多个数据域的零个访问控制列表包括指示特权被拒绝的访问控制条目;
响应于确定所述一个或多个数据域的零个访问控制列表包括指示特权被拒绝的访问控制条目,重写第一重写的查询表达式,以形成第二重写的查询表达式,其中第二重写的查询表达式包括逻辑表达式,对于所述一个或多个数据域中的每个数据域,所述逻辑表达式包括(1)规定数据域的访问检查查询操作符,和(2)在所述访问检查查询操作符外面的访问谓词;
其中该方法是由一个或多个计算设备执行的。
10.一种用于查询优化的计算机实现的方法,包括步骤:
接收针对存储在数据库的一个或多个表的行中的数据的查询表达式,其中所述一个或多个表中的至少一个表与访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问谓词和至少一个条目列表,其中所述访问谓词规定所述至少一个条目列表适用于的一个或多个行,并且其中,所述至少一个条目列表的每个条目把一个或多个主体映射到对所述一个或多个主体授予或拒绝的一个或多个特权;
重写所述查询表达式以形成第一重写的查询表达式,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
确定所述一个或多个表中的一行包括识别特定于行的访问控制列表的列;
基于确定所述一个或多个表中的一行包括识别特定于行的访问控制列表的列,重写第一重写的查询表达式,以形成包括逻辑表达式的第二重写的查询表达式,该逻辑表达式包括(1)规定所述特定于行的访问控制列表的第一访问检查查询操作符,和(2)规定所述一个或多个数据域的第二访问检查查询操作符;及
其中该方法是由一个或多个计算设备执行的。
11.一种用于查询优化的计算机实现的设备,包括:
用于接收与第一主体关联并且针对存储在数据库的一个或多个表中的数据的查询表达式的装置,其中所述一个或多个表中的至少一个表与数据访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问谓词和至少一个条目列表,其中所述访问谓词规定所述至少一个条目列表适用于的一个或多个行,并且其中,所述至少一个条目列表的每个条目把一个或多个主体映射到对所述一个或多个主体授予或拒绝的一个或多个特权;
用于重写所述查询表达式以形成第一重写的查询表达式的装置,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
用于基于第一主体和所述一个或多个数据域来确定所述一个或多个数据域的一个或多个具体的访问谓词与第一主体关联的装置;及
用于响应于确定所述一个或多个具体的访问谓词与第一主体关联来重写第一重写的查询表达式以形成第二重写的查询表达式的装置,其中第二重写的查询表达式包括在所述访问检查查询操作符外面的与第一主体关联的所述一个或多个具体的访问谓词。
12.如权利要求11所述的计算机实现的设备,其中所述访问检查查询操作符规定所述一个或多个数据域为参数的有序列表。
13.如权利要求11所述的计算机实现的设备,其中用于确定所述一个或多个数据域的一个或多个具体的访问谓词与第一主体关联的装置还包括:
用于识别与查询表达式关联的所请求的特权的装置;
用于确定一个或多个访问控制列表包括规定对第一主体或者授予或者拒绝所请求的特权的访问控制条目的装置。
14.如权利要求11所述的计算机实现的设备,其中包括与第一主体关联的所述一个或多个访问谓词的第二重写的查询表达式包括与第一主体关联的所述一个或多个访问谓词的逻辑表达式。
15.如权利要求11所述的计算机实现的设备,还包括用于基于第二重写的查询表达式存储数据库游标的装置。
16.如权利要求15所述的计算机实现的设备,还包括:
用于接收与第一主体关联的第二查询表达式的装置;
用于基于数据库游标执行第二查询表达式的装置。
17.如权利要求15所述的计算机实现的设备,还包括:
用于接收与第二主体关联的第二查询表达式的装置;
用于基于所述一个或多个数据域来确定第二主体是否与第一主体具有相同的特权的装置;
用于响应于确定第二主体与第一主体具有相同的特权而基于数据库游标执行第二查询表达式的装置。
18.如权利要求15所述的计算机实现的设备,还包括用于存储指示关于所存储数据库游标的最大数目的限制的值的装置。
19.一种用于查询优化的计算机实现的设备,包括:
用于接收针对存储在数据库的一个或多个表中的数据的查询表达式的装置,其中所述一个或多个表中的至少一个表与访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问控制列表和访问谓词,其中所述访问谓词规定所述访问控制列表适用于的一个或多个行,并且其中访问控制列表包括一个或多个访问控制条目,所述一个或多个访问控制条目中的每个访问控制条目规定特权、指示该特权被授予或拒绝的值以及主体;
用于重写所述查询表达式以形成第一重写的查询表达式的装置,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
用于确定所述一个或多个数据域的零个访问控制列表包括指示特权被拒绝的访问控制条目的装置;以及
用于响应于确定所述一个或多个数据域的零个访问控制列表包括指示特权被拒绝的访问控制条目来重写第一重写的查询表达式以形成第二重写的查询表达式的装置,其中第二重写的查询表达式包括逻辑表达式,对于所述一个或多个数据域中的每个数据域,所述逻辑表达式包括(1)规定数据域的访问检查查询操作符,和(2)在所述访问检查查询操作符外面的访问谓词。
20.一种用于查询优化的计算机实现的设备,包括:
用于接收针对存储在数据库的一个或多个表的行中的数据的查询表达式的装置,其中所述一个或多个表中的至少一个表与访问控制策略的一个或多个数据域相关联;
其中所述一个或多个数据域中的每个数据域都包括访问谓词和至少一个条目列表,其中所述访问谓词规定所述至少一个条目列表适用于的一个或多个行,并且其中所述至少一个条目列表的每个条目把一个或多个主体映射到对所述一个或多个主体授予或拒绝的一个或多个特权;
用于重写所述查询表达式以形成第一重写的查询表达式的装置,其中,第一重写的查询表达式包括规定所述一个或多个数据域作为参数的访问检查查询操作符;
用于确定所述一个或多个表中的一行包括识别特定于行的访问控制列表的列的装置;及
用于基于确定一个或多个表中的一行包括识别特定于行的访问控制列表的列来重写第一重写的查询表达式以形成包括逻辑表达式的第二重写的查询表达式的装置,该逻辑表达式包括(1)规定所述特定于行的访问控制列表的第一访问检查查询操作符,和(2)规定所述一个或多个数据域的第二访问检查查询操作符。
21.一种存储指令的非暂时性计算机可读介质,当指令被一个或多个处理器执行时,使这一个或多个处理器执行如权利要求1-10中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/488,739 US9043309B2 (en) | 2012-06-05 | 2012-06-05 | SQL transformation-based optimization techniques for enforcement of data access control |
US13/488,739 | 2012-06-05 | ||
PCT/US2013/043743 WO2013184523A1 (en) | 2012-06-05 | 2013-05-31 | Sql transformation-based optimization techniques for enforcement of data access control |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104471585A CN104471585A (zh) | 2015-03-25 |
CN104471585B true CN104471585B (zh) | 2017-09-08 |
Family
ID=48652331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380037517.1A Active CN104471585B (zh) | 2012-06-05 | 2013-05-31 | 用于数据访问控制实施的基于sql转换的优化方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9043309B2 (zh) |
CN (1) | CN104471585B (zh) |
WO (1) | WO2013184523A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043309B2 (en) * | 2012-06-05 | 2015-05-26 | Oracle International Corporation | SQL transformation-based optimization techniques for enforcement of data access control |
US9087209B2 (en) * | 2012-09-26 | 2015-07-21 | Protegrity Corporation | Database access control |
EP2902926A1 (en) * | 2014-01-31 | 2015-08-05 | Hewlett-Packard Development Company, L.P. | Filtering data from a database |
US9779136B2 (en) * | 2014-09-30 | 2017-10-03 | Linkedin Corporation | Rearranging search operators |
US10176249B2 (en) * | 2014-09-30 | 2019-01-08 | Raytheon Company | System for image intelligence exploitation and creation |
WO2016073701A1 (en) * | 2014-11-05 | 2016-05-12 | Ab Initio Technology Llc | Database security |
JP2016201043A (ja) * | 2015-04-13 | 2016-12-01 | 株式会社日立製作所 | アクセス制御装置、およびアクセス制御方法 |
US10929417B2 (en) | 2015-09-11 | 2021-02-23 | International Business Machines Corporation | Transforming and loading data utilizing in-memory processing |
CN106778288B (zh) * | 2015-11-24 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种数据脱敏的方法及系统 |
CN108475288B (zh) * | 2016-02-19 | 2022-03-29 | 华为技术有限公司 | 一种联合数据库统一访问控制的系统、方法和设备 |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US20170277750A1 (en) * | 2016-03-28 | 2017-09-28 | Futurewei Technologies, Inc. | Querying big data by accessing small data |
US20180032747A1 (en) * | 2016-07-28 | 2018-02-01 | Siemens Product Lifecycle Management Software Inc. | System and Method for Database-Level Access Control Using Rule-Based Derived Accessor Groups |
US10303894B2 (en) | 2016-08-31 | 2019-05-28 | Oracle International Corporation | Fine-grained access control for data manipulation language (DML) operations on relational data |
US10891291B2 (en) * | 2016-10-31 | 2021-01-12 | Oracle International Corporation | Facilitating operations on pluggable databases using separate logical timestamp services |
US9846599B1 (en) * | 2016-10-31 | 2017-12-19 | International Business Machines Corporation | Adaptive query cursor management |
CN108664504B (zh) * | 2017-03-30 | 2021-11-09 | 富士施乐实业发展(中国)有限公司 | 一种对结构化数据进行简化的方法 |
US11954117B2 (en) * | 2017-09-29 | 2024-04-09 | Oracle International Corporation | Routing requests in shared-storage database systems |
US20190114341A1 (en) * | 2017-10-12 | 2019-04-18 | Sap Se | Generic runtime protection for transactional data |
US10621167B2 (en) * | 2017-10-26 | 2020-04-14 | Sap Se | Data separation and write redirection in multi-tenancy database systems |
US10740318B2 (en) * | 2017-10-26 | 2020-08-11 | Sap Se | Key pattern management in multi-tenancy database systems |
CN108038215A (zh) * | 2017-12-22 | 2018-05-15 | 上海达梦数据库有限公司 | 数据处理方法及系统 |
US11048815B2 (en) * | 2018-08-06 | 2021-06-29 | Snowflake Inc. | Secure data sharing in a multi-tenant database system |
US11556666B2 (en) * | 2018-10-16 | 2023-01-17 | Immuta, Inc. | Data access policy management |
US11163756B2 (en) * | 2019-04-16 | 2021-11-02 | Snowflake Inc. | Querying over external tables in database systems |
US11423163B2 (en) | 2020-06-11 | 2022-08-23 | Bank Of America Corporation | System for controlling computing process execution by users with elevated access privilege |
US12013961B2 (en) * | 2022-05-18 | 2024-06-18 | Sap Se | Resource-efficient row-level security in database systems |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1655145A (zh) * | 2004-02-11 | 2005-08-17 | 微软公司 | 最优化行级别数据库安全的系统和方法 |
CN1977227A (zh) * | 2003-01-13 | 2007-06-06 | 甲骨文国际公司 | 属性相关的访问控制策略 |
CN101308505A (zh) * | 2007-05-16 | 2008-11-19 | 国际商业机器公司 | 提供对远程资源数据的访问的方法和数据处理系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030187848A1 (en) | 2002-04-02 | 2003-10-02 | Hovhannes Ghukasyan | Method and apparatus for restricting access to a database according to user permissions |
US7127467B2 (en) * | 2002-05-10 | 2006-10-24 | Oracle International Corporation | Managing expressions in a database system |
US7958150B2 (en) | 2004-04-30 | 2011-06-07 | International Business Machines Corporation | Method for implementing fine-grained access control using access restrictions |
US7685194B2 (en) * | 2006-08-31 | 2010-03-23 | Microsoft Corporation | Fine-grained access control in a database by preventing information leakage and removing redundancy |
US8132259B2 (en) * | 2007-01-04 | 2012-03-06 | International Business Machines Corporation | System and method for security planning with soft security constraints |
US8234299B2 (en) * | 2008-01-11 | 2012-07-31 | International Business Machines Corporation | Method and system for using fine-grained access control (FGAC) to control access to data in a database |
US8584196B2 (en) * | 2008-05-05 | 2013-11-12 | Oracle International Corporation | Technique for efficiently evaluating a security policy |
US8667018B2 (en) * | 2008-08-08 | 2014-03-04 | Oracle International Corporation | Method and system for optimizing row level security in database systems |
US8301667B2 (en) * | 2010-02-25 | 2012-10-30 | Oracle International Corporation | Method and system for implementing efficient cursor pruning |
US20120330925A1 (en) * | 2011-06-23 | 2012-12-27 | Microsoft Corporation | Optimizing fine grained access control using authorization indexes |
WO2013033012A1 (en) * | 2011-08-26 | 2013-03-07 | Board Of Regents Of The University Of Texas System | Authorization policy for group-centric secure information sharing |
US20130117313A1 (en) * | 2011-11-08 | 2013-05-09 | Microsoft Corporation | Access control framework |
US9177171B2 (en) * | 2012-03-11 | 2015-11-03 | International Business Machines Corporation | Access control for entity search |
US9043309B2 (en) * | 2012-06-05 | 2015-05-26 | Oracle International Corporation | SQL transformation-based optimization techniques for enforcement of data access control |
US9330276B2 (en) * | 2012-12-28 | 2016-05-03 | Sybase, Inc. | Conditional role activation in a database |
US10303894B2 (en) | 2016-08-31 | 2019-05-28 | Oracle International Corporation | Fine-grained access control for data manipulation language (DML) operations on relational data |
-
2012
- 2012-06-05 US US13/488,739 patent/US9043309B2/en active Active
-
2013
- 2013-05-31 WO PCT/US2013/043743 patent/WO2013184523A1/en active Application Filing
- 2013-05-31 CN CN201380037517.1A patent/CN104471585B/zh active Active
-
2014
- 2014-06-24 US US14/313,872 patent/US10102355B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1977227A (zh) * | 2003-01-13 | 2007-06-06 | 甲骨文国际公司 | 属性相关的访问控制策略 |
CN1655145A (zh) * | 2004-02-11 | 2005-08-17 | 微软公司 | 最优化行级别数据库安全的系统和方法 |
CN101308505A (zh) * | 2007-05-16 | 2008-11-19 | 国际商业机器公司 | 提供对远程资源数据的访问的方法和数据处理系统 |
Also Published As
Publication number | Publication date |
---|---|
US20130325841A1 (en) | 2013-12-05 |
US20150371018A1 (en) | 2015-12-24 |
CN104471585A (zh) | 2015-03-25 |
US9043309B2 (en) | 2015-05-26 |
US10102355B2 (en) | 2018-10-16 |
WO2013184523A1 (en) | 2013-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104471585B (zh) | 用于数据访问控制实施的基于sql转换的优化方法和设备 | |
US10410008B2 (en) | Thick client policy caching | |
US8095557B2 (en) | Type system for access control lists | |
KR101120814B1 (ko) | 로우 레벨 데이터베이스 보안을 최적화하는 시스템 및 방법 | |
US7644086B2 (en) | Computer-implemented authorization systems and methods using associations | |
EP3299989B1 (en) | Database access-control policy enforcement using reverse queries | |
US10438008B2 (en) | Row level security | |
US10885032B2 (en) | Query execution pipelining with shared states for query operators | |
US20060041421A1 (en) | Method and system for processing grammar-based legality expressions | |
US20110313981A1 (en) | Data Privacy, Redaction and Integrity for Relational Databases | |
US20140250103A1 (en) | Obtaining partial results from a database query | |
US9684639B2 (en) | Efficient validation of binary XML data | |
US10268721B2 (en) | Protected handling of database queries | |
US12010120B2 (en) | Computing system permission administration engine | |
CN104239508B (zh) | 数据查询方法和装置 | |
EP3471010B1 (en) | Generic runtime protection for transactional data | |
US10860579B2 (en) | Query planning and execution with reusable memory stack | |
Hadjiconstantinou et al. | Routing under uncertainty: an application in the scheduling of field service engineers | |
US20170337197A1 (en) | Rule management system and method | |
Amer et al. | A heuristic approach to re-allocate data fragments in DDBSs | |
JP2005332049A (ja) | ポリシ変換方法、ポリシ移行方法およびポリシ評価方法 | |
Bui et al. | Fast distributed evaluation of stateful attribute-based access control policies | |
CN110134704A (zh) | 一种基于分布式缓存的大数据集群事务实现方法 | |
US20210034669A1 (en) | Dynamic endpoint generation | |
US20050192939A1 (en) | System and method for providing classification security in a database management system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |