Systems and methods for fine grained access control of data stored in relational databases
Summary by NHIP
Row-level database access control
The system stores security descriptors within a dedicated column of database tables to enforce granular row access. A query optimizer evaluates user security context against these descriptors to determine which rows satisfy the granted or denied permissions.
Claim Score by NHIP
Abstract
A system and method for facilitating secure access to database(s) is provided. The system relates to authorizing discriminatory access to relational database data. More particularly, the invention provides for an innovative technique of defining secured access to rows in relational database tables in a way that cannot be spoofed while preserving various optimization techniques. The invention affords a persistent scheme via providing for a security architecture whereby discriminatory access policies on persistent entities can be defined and enforced while preserving set based associative query capabilities. A particular aspect of the invention relates to the specification of such policies and the technique by which those policies are enforced. With respect to one particular implementation of the invention, creation, modification and deletion of access control lists called security descriptors is provided. The security descriptors can be provisioned independent of rows in tables of the database and can be shared and embody the policy on what permissions are granted to whom when associated with a row.

Term
Term ended
Expired 21 December 2024, 1.8 years ago.
- Priority
- Filed
- Granted
- Expired
- Today
17 claims: 3 independent, 14 dependent
- 1A computer-implemented system that facilitates secure access to a database, comprising:a security descriptor store component that stores security descriptors which embody security information associated with at least one row of the database, the database comprising at least one table having the at least one row and at least two columns, one of the at least two columns storing a security descriptor associated with the at least one row, the security descriptor identifying security information stored in the security descriptor store component associated with the at least one row, where security descriptor column is included in all access paths to the at least one table, and where the security information stored in the security descriptor comprising a kind of access is granted or denied;a database engine component provides a response to a query of the database, the response being based, at least in part, upon the security information stored in the security descriptor that is evaluated based upon information stored in the database and security context information of a user issuing the query, the response further comprising rows from the table if the rows are satisfied by the user security context information;a query component comprising a query optimizer determines an optimal way to answer the query and employs a cost-based optimization strategy;and a user session memory cache stores a computed result of whether a given security context has a given permission with respect to a particular security descriptor.
- 13Broadest claimClaim Score 34, narrow(NHIP)A method of securely accessing data stored in a database comprising:creating a security descriptor store associated with at least one table;populating at least one row of the at least one table with a security descriptor identifier;storing security descriptors in the security descriptor store, where the security descriptors embody security information associated with the at least one row of the at least one table of the database, the database comprising the at least one table having the at least one row and at least two columns, one of the at least two columns storing a security descriptor associated with the at least one row, the security descriptor identifier identifying security information stored in the security descriptor store associated with the at least one row, where security descriptor column is included in all access paths to the at least one table, and where the security information stored in the security descriptor comprising a kind of access is granted or denied;receiving a query and user security context information;providing a response to the query of the database, theresponse being based, at least in part, upon the security information stored in the security descriptor that is valuated based upon information stored in the database and the security context information of the user issuing the query, the response further comprising rows from the table if the rows are satisfied by the user security context information;optimizing the query prior to the response being provided via a query optimizer that employs a cost-based optimization strategy;and storing a computed result of whether a given security context has a given permission with respect to a particular security descriptor.
- 16A method facilitating a secure access to a database comprising:creating a security descriptor store associated with at least one table;populating at least one row of the at least one table with a security descriptor identifier;storing security descriptors in the security descriptor store, where the security descriptors embody security information associated with the at least one row of the at least one table of the database, the database comprising the at least one table having the at least one row and at least two columns, one of the at least two columns storing a security descriptor associated with the at least one row, the security descriptor identifier identifying security information stored in the security descriptor store associated with the at least one row, where security descriptor column is included in all access paths to the at least one table, where the security information stored in the security descriptor comprising a kind of access is granted or denied, and where the security information further is stored physically with every partially or fully redundant copy of the at least one row;receiving a query and user security context information;providing a response to the query of the database, the response being based, at least in part, upon the security information stored in the security descriptor that is valuated based upon information stored in the database and the security context information of the user issuing the query, the response further comprising rows from the table if the rows are satisfied by the user security context information;optimizing the query prior to the response being provided via a query optimizer that employs a cost-based optimization strategy;and storing a computed result of whether a given security context has a given permission with respect to a particular security descriptor.
Independent claims3
81 paragraphs in 6 sections, as filed
CROSS-REFERENCE TO RELATED APPLICATION(S)
0001This application claims the benefit of U.S. Provisional Patent Application Ser. No. 60/557,239 filed on Mar. 29, 2004 and entitled “SYSTEMS AND METHODS FOR FINE GRAINED ACCESS CONTROL OF DATA STORED IN RELATIONAL DATABASES”, the entirety of which is incorporated herein by reference.
TECHNICAL FIELD
0002The present invention relates generally to computer systems, and more particularly to system(s) and method(s) that relate to computer databases.
BACKGROUND OF THE INVENTION
0003Technological advances in computer hardware, software and networking have lead to increased demand to exchange information electronically rather than through conventional techniques such as paper and telephone correspondence, for example. Electronic communication can provide split-second, reliable data transfer between essentially any two locations throughout the world. Many industries and consumers are leveraging such technology to improve efficiency and decrease cost through web-based (e.g., on-line) services. For example, consumers can purchase goods, review bank statements, research products and companies, obtain real-time stock quotes, download brochures, etc. with the click of a mouse and at the convenience of home.
0004As the amount available electronic data grows, it becomes more important to store such data in a manageable manner that facilitates user friendly and quick data searches and retrieval. Today, a common approach is to store electronic data in one or more databases. In general, a typical database can be referred to as an organized collection of information with data structured such that a computer program, for example, can quickly search and select desired pieces of data. Traditionally, data within a database is organized via one or more tables, wherein respective tables comprise a set of records and a record comprises a set of fields. Records are commonly indexed as rows within a table and the record fields are commonly indexed as columns such that a row/column pair of indices can reference a particular datum within a table.
0005Data stored in a database often includes personal (e.g., bank account and social security numbers) and sensitive information (e.g., medical records) and may not be backed up via hard copies. Therefore, security related to databases and data stored therein is growing in importance. However, many of today's database security techniques can be breached, for example, through software holes and/or by hackers with malicious intent.
SUMMARY OF THE INVENTION
0006The following presents a simplified summary of the invention in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is not intended to identify key/critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.
0007The present invention provides for a system and method facilitating secure access to database(s). With the increasing popularity of computers, more and more data is stored in databases, for example, relational databases. In relational databases, most of the data is stored as rows in one or more tables. The databases can be accessed by one or a plurality of entities. Due to the nature of data stored in databases, authorizing discriminatory access (e.g., no access, read access and/or read/write access) to that data is of significant importance.
0008At the heart of the popularity of relational databases, is the ability to perform associative queries over tables. Sets of entities stored in tables can be accessed using a set processing language (e.g., SQL (Structured Query Language)). The language specifies one or more tables as the source of the data and outputs only those row(s), if any, that satisfy a given condition.
0009In addition, many relational databases optimize such queries based on the various access paths or indices present on the tables. Thus, in accordance with an aspect of the present invention, the system provides for an innovative technique of defining secured access to rows in such tables in a way that it cannot be spoofed while preserving the various optimization techniques that exist today.
0010In accordance with an aspect of the present invention, a system that facilitates secure access to a database having a database engine that accesses a database, and, a security descriptor store is provided. Optionally, the system can include the database.
0011The database stores data in a structured format. For example, the database can be a relational database, an object database and/or an object relational database. With respect to relational databases, a set of entities with the same structure is called a table and each entity is called a row. The components of the structure are called columns. A relational database can include zero, one or a plurality of tables.
0012An aspect of the present invention provides for at least one of the tables associated with the database to include a column storing security information, for example, a security descriptor (e.g., an identifier associated with security information stored in the security descriptor store).
0013The security descriptor store stores one or a plurality of security descriptors. Each security descriptor controls discriminatory access to one or more resources that it is associated with. The security information embodied in a security descriptor can include, for example a list of, (1) whether access is granted or denied, (2) the kind of access (e.g., permission, for example, read only and/or read/write), and, (3) the principal to whom the security information applies. For example, the security descriptor store can be an ordered set of access control entities.
0014The security descriptor (e.g., access control list) can quickly become very long, based on the security requirements of the nature of the data being stored in the row and the complexity of the application through which the data is being accessed. Additionally, in a majority of cases, the number of distinct access control lists associated with the rows of the table is much smaller than the actual number of rows. For example, when modeling a file-system as a table, where each row in the table refers to the file or folder, one can potentially have hundreds of thousands of rows in such a table. But the number of distinct access control lists, is in the order of hundreds. In other words, a lot of the rows have the same security policy associated with them.
0015The database engine receives query information, for example, from a user. The query information includes a query requested to be performed on the database and a user context associated with the initiator of the query (e.g., user name, user identifier and/or type of user).
0016In executing the query, the database engine employs the security descriptor associated with row(s) of the database accessed during query processing and the user context information associated with the query to determine whether the user has the requested access to the row. Thus, the initiator of the query is only provided information from the database to which the user has access rights (e.g., to view and/or modify).
0017Yet another aspect of the present invention provides, as part of a policy specification, a SQL programming language (e.g., TSQL) that is augmented with a new set of statements that allow for the creation, modification and deletion of security descriptor(s) e.g., access control lists). These security descriptor (s) (e.g., access control lists) can include other security related information. For example, security descriptors can be provisioned independent of rows in tables, can be shared and can embody the policy on what permissions are granted and to whom when associated with a row.
0018In traditional relational databases, security policies are not associated with rows of tables. Thus, in accordance with an aspect of the present invention, to indicate that the rows of a particular table in the database system are protected by a security policy, the SQL statements to create and alter tables have been extended to indicate that fact. One of the columns in the definition of these tables is optionally extensible with an attribute that indicates that the column embodies the security policy. The value of that column refers to the identity of a security descriptor discussed previously (e.g., 4 byte code). In one example, if the value of the column is NULL, the row is not secured by any policy. Otherwise, the policy of access control for that row is discriminated based on the corresponding security descriptor and the associated information stored in the security descriptor store.
0019To the accomplishment of the foregoing and related ends, certain illustrative aspects of the invention are described herein in connection with the following description and the annexed drawings. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention may be employed and the present invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the invention may become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
<figref idref="DRAWINGS">FIG. 1</figref> is a block diagram of a system that facilitates secure access to a database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 2</figref> is a diagram of an exemplary table in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 3</figref> is a diagram of an exemplary security descriptor store in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 4</figref> is a block diagram of a system that facilitates secure access to a database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 5</figref> is a block diagram of a system that facilitates secure access to a database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 6</figref> is a flow chart of a method of securely accessing data stored in a database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 7</figref> is a flow chart of a method of securely accessing data stored in a database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 8</figref> is a flow chart of a method facilitating a secure database in accordance with an aspect of the present invention.
<figref idref="DRAWINGS">FIG. 9</figref> illustrates an example operating environment in which the present invention may function.
DETAILED DESCRIPTION OF THE INVENTION
0029The present invention is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It may be evident, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing the present invention.
0030As used in this application, the terms “component,” “handler,” “model,” “system,” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. Also, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate via local and/or remote processes such as in accordance with a signal having one or more data packets (e.g., data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems via the signal). Computer components can be stored, for example, on computer readable media including, but not limited to, an ASIC (application specific integrated circuit), CD (compact disc), DVD (digital video disk), ROM (read only memory), floppy disk, hard disk, EEPROM (electrically erasable programmable read only memory) and memory stick in accordance with the present invention.
0031Referring to <figref idref="DRAWINGS">FIG. 1</figref>, a system <b>100</b> that facilitates secure access to a database in accordance with an aspect of the present invention is illustrated. The system <b>100</b> includes a database engine <b>110</b> that can access a database <b>120</b>, and, a security descriptor store <b>130</b>. Optionally, the system <b>100</b> can further include the database <b>120</b>.
0032With the increasing popularity of computers, more and more data is stored in databases, for example, relational databases. In relational databases, most of the data is stored as rows in one or more tables. The databases can be accessed by one or a plurality of entities. Due to the nature of data stored in databases, authorizing discriminatory access (e.g., no access, read access and/or read/write access) to that data is of significant importance.
0033At the heart of the popularity of relational databases, is the ability to perform associative queries over tables. Sets of entities stored in tables can be accessed using a set processing language (e.g., SQL (Structured Query Language)). The language specifies one or more tables as the source of the data and outputs only those row(s), if any, that satisfy a given condition.
0034In addition, many relational databases optimize such queries based on the various access paths or indices present on the tables. Thus, in accordance with an aspect of the present invention, the system <b>100</b> provides for an innovative technique of defining secured access to rows in such tables in a way that cannot be spoofed while preserving the various optimization techniques that exist today.
0035The database <b>120</b> stores data in a structured format. For example, the database <b>120</b> can be a relational database, an object database and/or an object relational database. With respect to relational databases, a homogenous set of entities with the same structure is called a table and each entity is called a row. The components of the structure are called columns. A relational database can include one or a plurality of tables.
0036In accordance with an aspect of the present invention, at least one of the tables associated with the database <b>120</b> include a column storing security information, for example, a security descriptor (e.g., an identifier associated with security information stored in the security descriptor store <b>130</b>, as discussed below).
0037Referring briefly to <figref idref="DRAWINGS">FIG. 2</figref>, an exemplary table <b>200</b> in accordance with an aspect of the present invention is illustrated. The table <b>200</b> includes data columns <b>210</b> and rows <b>220</b>. Additionally, the table <b>200</b> includes a security descriptor column <b>230</b>. For example, the security descriptor column <b>230</b> can store, for a particular row, a security descriptor associated with that row. In one example, the security descriptor is an identifier associated with a security descriptor store <b>130</b>.
0038Returning to <figref idref="DRAWINGS">FIG. 1</figref>, the security descriptor store <b>130</b> stores security information embodied by one or more security descriptors. The security information can include, for example, (1) whether access is granted or denied, (2) the kind of access (e.g., permission, for example, read only and/or read/write), and, (3) the principal to whom the security information applies. For example, the security descriptor store <b>130</b> can be an ordered set of access control entities.
0039Turning briefly to <figref idref="DRAWINGS">FIG. 3</figref>, an exemplary security descriptor store <b>300</b> in accordance with an aspect of the present invention is illustrated. The security descriptor store <b>300</b> includes one or more security descriptor(s) <b>310</b>.
0040In this example, a particular security descriptor <b>310</b> includes access information <b>320</b>, for example, access granted and/or access denied. The security descriptor <b>310</b> further includes permission <b>330</b> that identifies the kind of access associated with the particular security descriptor <b>310</b>, for example, no access, read only access and/or read/write access. The security descriptor <b>310</b> further includes principal(s) <b>340</b> to whom the security descriptor <b>310</b> applies (e.g., user name(s), group(s) of user(s), user identifier(s) and/or type(s) of user(s)).
0041The security descriptor <b>310</b> (e.g., access control list) can quickly become very long, based on the security requirements of the nature of the data being stored in the row and the complexity of the application thru which the data is being accessed. Additionally, in majority of the cases, the number of distinct security descriptors associated with the rows of the table is much smaller than the actual number of rows. For example, when modeling a file-system as a table, where each row in the table refers to the file or folder, one can potentially have hundreds of thousands of rows in such a table. But the number of distinct security descriptors, is in the order of hundreds. In other words, a lot of the rows have the same security policy associated with them. Additionally, in one example, all the security descriptors can be cached in memory for fast lookup when a database row is accessed.
0042Returning to <figref idref="DRAWINGS">FIG. 1</figref>, the database engine <b>110</b> receives query information, for example, from a user. The query information includes a query requested to be performed on the database <b>120</b> and a user context associated with the initiator of the query (e.g., user name, user identifier and/or type of user).
0043In executing the query, the database engine <b>110</b> evaluates the security descriptor associated with accessed row(s) of the database <b>120</b> and the user context information associated with the query to determine whether the user has the requested access to the row. Thereafter, the database engine <b>110</b> provides a response to the query information based on the query and, significantly, the user context information. Thus, the initiator of the query is only provided information from the database <b>120</b> to which the user has access rights (e.g., to view and/or modify).
0044For example, for a database <b>120</b> having a single table with the following entries:
0045<tables id="TABLE-US-00001" num="00001"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="5"><colspec colname="offset" colwidth="21pt" align="left" /><colspec colname="1" colwidth="35pt" align="left" /><colspec colname="2" colwidth="56pt" align="left" /><colspec colname="3" colwidth="28pt" align="center" /><colspec colname="4" colwidth="77pt" align="center" /><thead><row><entry /><entry namest="offset" nameend="4" rowsep="1">TABLE 1</entry></row><row><entry /><entry namest="offset" nameend="4" align="center" rowsep="1" /></row><row><entry /><entry /><entry /><entry /><entry>Security</entry></row><row><entry /><entry>Name</entry><entry>State</entry><entry>Salary</entry><entry>Descriptor</entry></row><row><entry /><entry namest="offset" nameend="4" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>Jeff</entry><entry>Ohio</entry><entry> $5,000</entry><entry>1</entry></row><row><entry /><entry>Joe</entry><entry>Washington</entry><entry>$10,000</entry><entry>2</entry></row><row><entry /><entry>Sally</entry><entry>Ohio</entry><entry>$25,000</entry><entry>3</entry></row><row><entry /><entry namest="offset" nameend="4" align="center" rowsep="1" /></row></tbody></tgroup></table></tables><br /> and an associated security descriptor store <b>130</b> having the following security descriptors:
0046<tables id="TABLE-US-00002" num="00002"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="1" colwidth="49pt" align="center" /><colspec colname="2" colwidth="168pt" align="left" /><thead><row><entry namest="1" nameend="2" rowsep="1">TABLE 2</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row><row><entry>Security</entry><entry>Access Control List</entry></row><row><entry>Descriptor</entry><entry>(Access: Permission: Grantee Principal)</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry>1</entry><entry>Grant: Read: Jeff; Grant: Read/Write: Administrator</entry></row><row><entry>2</entry><entry>Deny: Read: Joe; Grant: Read/Write: Administrator</entry></row><row><entry>3</entry><entry>Deny: Read: Sally; Grant: Read/Write: Administrator</entry></row><row><entry namest="1" nameend="2" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0047In this example, when user Jeff queries the database <b>120</b> (Table 1) for “all entries”, “Jeff” is the user context provided with the query to the database engine <b>110</b>. Thereafter, the database engine <b>110</b> queries the database <b>120</b>, and preliminarily receives all three rows. However, the database engine <b>110</b> then retrieves the security information stored in the security descriptor store <b>130</b> associated with each of the three rows and based on the user context, only the first row, is returned since that is the only row user Jeff is authorized to read. However, if the Administrator runs the same query (e.g., “all entries”), all three rows are returned since the Administrator is authorized to read and/or write all three rows.
0048In accordance with an aspect of the present invention, as part of a policy specification, a SQL programming language (e.g., “TSQL”) was augmented with a new set of statements that allow for the creation, modification and deletion of security descriptor store(s) <b>130</b>, <b>300</b> (e.g., access control lists). These security descriptor store(s) <b>130</b>, <b>300</b> (e.g., access control lists) can include other security related information. For example, security descriptors can be provisioned independent of rows in tables, can be shared by multiple rows or other entities in the database system and can embody the policy on what permissions are granted and denied and to whom when associated with a row.
0049In traditional relational databases, security policies are not associated with rows of tables. Thus, in accordance with an aspect of the present invention, to indicate that the rows of a particular table in the database system are protected by a security policy, the SQL statements to create and alter tables have been extended to indicate that fact. One of the columns in the definition of these tables is optionally extensible with an attribute that indicates that the column embodies the security policy. The value of that column refers to the identity of a security descriptor discussed previously (e.g., 4 byte code). In one example, if the value of the column is NULL, the row is not secured by any policy. Otherwise, the policy of access control for that row is discriminated based on the corresponding security descriptor and the associated information stored in the security descriptor store <b>130</b>, <b>300</b>. In yet another example, the default value of the column can be set to the identity of the security descriptor that embodies the default security policy of the table.
0050It is to be appreciated that the system <b>100</b>, the database engine <b>110</b>, the database <b>120</b> and/or the security descriptor store <b>130</b> can be computer components as that term is defined herein.
0051Referring next to <figref idref="DRAWINGS">FIG. 4</figref>, a system <b>400</b> that facilitates secure access to a database in accordance with an aspect of the present invention is illustrated. The system <b>400</b> includes a database engine <b>110</b>, a database <b>120</b>, a security descriptor store <b>130</b>, and, a query component <b>410</b>. The query component <b>410</b> can include a query optimizer <b>420</b> and a query executor <b>430</b>. Optionally, the query component <b>410</b> and the database engine <b>110</b> can form a query database engine component <b>440</b>.
0052When a query is posed to the query component <b>410</b>, the query optimizer <b>420</b> can determine the “best way” to answer that query (“optimization”). For example, the query component <b>410</b> can employ a cost-based optimization strategy whereby the least expensive way to execute the query is chosen to be the plan.
0053Those skilled in the art will recognize that the optimization process is complex. The query component <b>410</b> can employ state of the art technologies in enumerating possible plans and pruning out the expensive ones. Indexes on tables play a significant role in reducing the cost of access to data in these tables. It is to be appreciated that any type of optimization process suitable for carrying out the present invention can be employed and all such types of optimization technologies are intended to fall within the scope of the hereto appended claims.
0054Significantly, when rows of a table, secured by security policies in the form of security descriptors are accessed, the database engine <b>110</b>, before even considering the rows as input for constructing the query result, enforces the security policy by verifying that the requester of the query has the permission to read the rows based on the policy determined by the security descriptor associated with each row. Those skilled in the art will appreciate that the model of security described hereto equates visibility of a row to a principal executing the query to a successful evaluation of the security descriptor associated with that row.
0055Conventional database security systems have enforced security policies by grafting a condition that checks that the row is accessible as part of the original query. In modern relational database systems, the query plan that gets executed is often quite different from the query actually posed by the requester. Table access re-ordering is done to reduce costs of accessing the rows. As a fall out of this re-ordering, it is possible for a malicious person performing the query to see extra data, by providing side-effecting functions as part of the query. Most conventional database security systems are susceptible to such spoofing attacks when employed to attempt to enforce fine-grained access control.
0056To thwart the problem and at the same time not perturb the optimization process, the present invention provides an innovative scheme where it ensures that all access paths to the table contain the column having the security descriptors. These access paths to the table include, but are not limited to the table itself stored either as a heap (un-ordered collection) or a clustered or a non-clustered index on the table, and materialized views possibly defined on the table. As a result of including the security descriptor column in all access paths, query optimization becomes orthogonal to fine-grained security enforcement. Accordingly, irrespective of how the query is re-ordered (e.g., optimized by the query optimizer <b>410</b>), at the time the rows (e.g., data elements in tables, indexes, materialized views and any other access paths are all considered to be “rows”) are fetched thru any defined access paths, the two relevant pieces of information, that is, the security policy associated with the row and the current user context, are available. The result is a completely non-spoof-able security enforcement without sacrificing the benefits of optimizing (e.g., re-ordering) the query.
0057It is to be appreciated that such an un-spoof-able scheme is made possible by virtue of the fact that the security information about a row is stored physically with every partially or fully redundant copy of the row (e.g., index record) and that the enforcement of security is made at the time any row is every emanated to construct a result-set.
0058The present invention thus enables set oriented operations on sets of persistent entities without drastically changing the way operating systems define security policies on persistent entities—that is, via security descriptors.
0059It is to be appreciated that the system <b>400</b>, the query component <b>410</b>, the query optimizer <b>420</b> and/or the query executor <b>430</b> can be computer components as that term is defined herein.
0060Referring next to <figref idref="DRAWINGS">FIG. 5</figref>, a system <b>100</b> that facilitates secure access to a database in accordance with an aspect of the present invention is illustrated. The system <b>500</b> includes a database engine <b>110</b>, a database <b>120</b>, a security descriptor store <b>130</b>, a query component <b>410</b> and a user session cache <b>510</b>.
0061The system <b>500</b> employs the user session cache <b>510</b> which is associated with the user's session. The cache <b>510</b> stores a computed result of whether the current security context has a given permission with respect to a security descriptor. Therefore, the check to see whether a principal has access to an object given that object's security descriptor, is evaluated only once per query. If two rows of the table, have the same security policy, that is have the same security descriptor, the result of whether the initiator of the query has access to the row or not, is evaluated for the first time and the result is stored in the cache <b>510</b>. The cached result is employed for the second row.
0062The cache <b>510</b> becomes extremely useful when many rows have the same security policy—which can be the case, for example, in file systems and similar applications.
0063It is to be appreciated that the system <b>500</b> and/or the user session cache can be computer components as that term is defined herein.
0064As mentioned previously, the system(s) <b>100</b>, <b>400</b> and/or <b>500</b> can be employed to facilitate secure access to file(s), folders, contacts, email messages and other persistent entities in databases. For example, a database associated with a file system can include one or more tables that can store information regarding files and/or folders. The table(s) can be employed by the system(s) <b>100</b>, <b>400</b> and/or <b>500</b> so that information can be reasoned about and searched using standard relational technique(s). The system(s) <b>100</b>, <b>400</b> and/or <b>500</b> can enhance file systems by addressing the need of a persistent file system scheme that requires a security architecture whereby discriminatory access policies on persistent entities can be defined and enforced while preserving set based associative query capabilities.
0065Turning briefly to <figref idref="DRAWINGS">FIGS. 6–8</figref>, methodologies that may be implemented in accordance with the present invention are illustrated. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the present invention is not limited by the order of the blocks, as some blocks may, in accordance with the present invention, occur in different orders and/or concurrently with other blocks from that shown and described herein. Moreover, not all illustrated blocks may be required to implement the methodologies in accordance with the present invention.
0066The invention may be described in the general context of computer-executable instructions, such as program modules, executed by one or more components. Generally, program modules include routines, programs, objects, data structures, etc. that performs particular tasks or implement particular abstract data types. Typically the functionality of the program modules may be combined or distributed as desired in various embodiments.
0067Referring to <figref idref="DRAWINGS">FIG. 6</figref>, a method of securely accessing data stored in a database <b>600</b> in accordance with an aspect of the present invention is illustrated. At <b>610</b>, a query and user context information is received. At <b>620</b>, the query is performed (e.g., by a query component <b>410</b>). At <b>630</b>, for each row that satisfies the query, the row is considered as input during construction of the query output only if the security descriptor associated with the row is satisfied by the user context information.
0068Next, referring to <figref idref="DRAWINGS">FIG. 7</figref>, a method of securely accessing data stored in a database <b>700</b> in accordance with an aspect of the present invention is illustrated. At <b>710</b>, a query and user context information is received. At <b>714</b>, a row to be considered while constructing a query result is fetched. At <b>720</b>, a determination is made as to whether a security descriptor of a row is satisfied by the user context information. If the determination at <b>720</b> is NO, processing continues at <b>730</b>. If the determination at <b>730</b> is YES, at <b>740</b>, a determination is made as to whether the row contributes to the result of the query. If the determination at <b>740</b> is NO, processing continues at <b>714</b>. If the determination at <b>740</b> is YES, at <b>750</b>, the row is used in constructing the query result.
0069At <b>730</b>, a determination is made as to whether there are any more row(s). If the determination at <b>730</b> is YES, processing continues at <b>720</b>. If the determination at <b>730</b> is NO, no further processing occurs.
0070Turning to <figref idref="DRAWINGS">FIG. 8</figref>, a method facilitating a secure database <b>800</b> in accordance with an aspect of the present invention is illustrated. At <b>810</b>, a table is created with a security descriptor column. At <b>820</b>, a security descriptor store associated with the table is created. At <b>830</b>, the table is populated (e.g., at least one row of the table having a security descriptor identifier).
0071At <b>840</b>, a query and user context information is received. At <b>850</b>, the query is optimized and performed using the user context information and security descriptor(s) of the table. At <b>860</b>, the result of the optimized query is provided as a response to the query.
0072In order to provide additional context for various aspects of the present invention, <figref idref="DRAWINGS">FIG. 9</figref> and the following discussion are intended to provide a brief, general description of a suitable operating environment <b>910</b> in which various aspects of the present invention may be implemented. While the invention is described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices, those skilled in the art will recognize that the invention can also be implemented in combination with other program modules and/or as a combination of hardware and software. Generally, however, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular data types. The operating environment <b>910</b> is only one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Other well known computer systems, environments, and/or configurations that may be suitable for use with the invention include but are not limited to, personal computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include the above systems or devices, and the like.
0073With reference to <figref idref="DRAWINGS">FIG. 9</figref>, an exemplary environment <b>910</b> for implementing various aspects of the invention includes a computer <b>912</b>. The computer <b>912</b> includes a processing unit <b>914</b>, a system memory <b>916</b>, and a system bus <b>918</b>. The system bus <b>918</b> couples system components including, but not limited to, the system memory <b>916</b> to the processing unit <b>914</b>. The processing unit <b>914</b> can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit <b>914</b>.
0074The system bus <b>918</b> can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, an 8-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
0075The system memory <b>916</b> includes volatile memory <b>920</b> and nonvolatile memory <b>922</b>. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer <b>912</b>, such as during start-up, is stored in nonvolatile memory <b>922</b>. By way of illustration, and not limitation, nonvolatile memory <b>922</b> can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory <b>920</b> includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
0076Computer <b>912</b> also includes removable/nonremovable, volatile/nonvolatile computer storage media. <figref idref="DRAWINGS">FIG. 9</figref> illustrates, for example a disk storage <b>924</b>. Disk storage <b>924</b> includes, but is not limited to, devices like a magnetic disk drive, floppy disk drive, tape drive, Jaz drive, Zip drive, LS-100 drive, flash memory card, or memory stick. In addition, disk storage <b>924</b> can include storage media separately or in combination with other storage media including, but not limited to, an optical disk drive such as a compact disk ROM device (CD-ROM), CD recordable drive (CD-R Drive), CD rewritable drive (CD-RW Drive) or a digital versatile disk ROM drive (DVD-ROM). To facilitate connection of the disk storage devices <b>924</b> to the system bus <b>918</b>, a removable or non-removable interface is typically used such as interface <b>926</b>.
0077It is to be appreciated that <figref idref="DRAWINGS">FIG. 9</figref> describes software that acts as an intermediary between users and the basic computer resources described in suitable operating environment <b>910</b>. Such software includes an operating system <b>928</b>. Operating system <b>928</b>, which can be stored on disk storage <b>924</b>, acts to control and allocate resources of the computer system <b>912</b>. System applications <b>930</b> take advantage of the management of resources by operating system <b>928</b> through program modules <b>932</b> and program data <b>934</b> stored either in system memory <b>916</b> or on disk storage <b>924</b>. It is to be appreciated that the present invention can be implemented with various operating systems or combinations of operating systems.
0078A user enters commands or information into the computer <b>912</b> through input device(s) <b>936</b>. Input devices <b>936</b> include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit <b>914</b> through the system bus <b>918</b> via interface port(s) <b>938</b>. Interface port(s) <b>938</b> include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) <b>940</b> use some of the same type of ports as input device(s) <b>936</b>. Thus, for example, a USB port may be used to provide input to computer <b>912</b>, and to output information from computer <b>912</b> to an output device <b>940</b>. Output adapter <b>942</b> is provided to illustrate that there are some output devices <b>940</b> like monitors, speakers, and printers among other output devices <b>940</b> that require special adapters. The output adapters <b>942</b> include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device <b>940</b> and the system bus <b>918</b>. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) <b>944</b>.
0079Computer <b>912</b> can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) <b>944</b>. The remote computer(s) <b>944</b> can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer <b>912</b>. For purposes of brevity, only a memory storage device <b>946</b> is illustrated with remote computer(s) <b>944</b>. Remote computer(s) <b>944</b> is logically connected to computer <b>912</b> through a network interface <b>948</b> and then physically connected via communication connection <b>950</b>. Network interface <b>948</b> encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
0080Communication connection(s) <b>950</b> refers to the hardware/software employed to connect the network interface <b>948</b> to the bus <b>918</b>. While communication connection <b>950</b> is shown for illustrative clarity inside computer <b>912</b>, it can also be external to computer <b>912</b>. The hardware/software necessary for connection to the network interface <b>948</b> includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.
0081What has been described above includes examples of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
Contents6
9 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9
Every citation, both waysCites: the store holds 20 of 21
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2006047826A1 | Cited by | United States of America | Pre-grant |
| US2012150905A1 | Cited by | United States of America | Pre-grant |
| US2007050237A1 | Cited by | United States of America | Pre-grant |
| US8126750B2 | Cited by | United States of America | Search report |
| US2007198545A1 | Cited by | United States of America | Pre-grant |
| US8261181B2 | Cited by | United States of America | Applicant |
| US8473915B2 | Cited by | United States of America | Applicant |
| US8538861B2 | Cited by | United States of America | Applicant |
| US2007112607A1 | Cited by | United States of America | Pre-grant |
| US2008172629A1 | Cited by | United States of America | Pre-grant |
| US2009287704A1 | Cited by | United States of America | Pre-grant |
| US7730032B2 | Cited by | United States of America | Applicant |
| US2007254740A1 | Cited by | United States of America | Pre-grant |
| US10185726B2 | Cited by | United States of America | Search report |
| US2008184130A1 | Cited by | United States of America | Pre-grant |
| US8276117B2 | Cited by | United States of America | Applicant |
| US2009037873A1 | Cited by | United States of America | Pre-grant |
| US10318752B2 | Cited by | United States of America | Search report |
| US8321326B2 | Cited by | United States of America | Applicant |
| US2008184099A1 | Cited by | United States of America | Pre-grant |
| US9229967B2 | Cited by | United States of America | Applicant |
| US2007143175A1 | Cited by | United States of America | Pre-grant |
| US8756149B2 | Cited by | United States of America | Applicant |
| US2009210422A1 | Cited by | United States of America | Pre-grant |
| US2009271383A1 | Cited by | United States of America | Pre-grant |
| US2007276835A1 | Cited by | United States of America | Pre-grant |
| US9747328B2 | Cited by | United States of America | Applicant |
| US2007260625A1 | Cited by | United States of America | Pre-grant |
| US2009037893A1 | Cited by | United States of America | Pre-grant |
| US8326877B2 | Cited by | United States of America | Search report |
| US2011066539A1 | Cited by | United States of America | Pre-grant |
| US2008172348A1 | Cited by | United States of America | Pre-grant |
| US2008189632A1 | Cited by | United States of America | Pre-grant |
| US2008172414A1 | Cited by | United States of America | Pre-grant |
| US2007156680A1 | Cited by | United States of America | Pre-grant |
| US2006253443A1 | Cited by | United States of America | Pre-grant |
| US8190992B2 | Cited by | United States of America | Applicant |
| US2008172287A1 | Cited by | United States of America | Pre-grant |
| US2007143174A1 | Cited by | United States of America | Pre-grant |
| US8321805B2 | Cited by | United States of America | Applicant |
| US2002061354A1 | Cites | United States of America | Applicant |
| US2002063154A1 | Cites | United States of America | Search report |
| US2003229625A1 | Cites | United States of America | Search report |
| US2004019587A1 | Cites | United States of America | Search report |
| US2005055355A1 | Cites | United States of America | Search report |
| US5734887A | Cites | United States of America | Applicant |
| US5911143A | Cites | United States of America | Applicant |
| US5941947A | Cites | United States of America | Search report |
| US5943671A | Cites | United States of America | Applicant |
| US5956715A | Cites | United States of America | Applicant |
| US6275818B1 | Cites | United States of America | Search report |
| US6289458B1 | Cites | United States of America | Applicant |
| US6308173B1 | Cites | United States of America | Applicant |
| US6334128B1 | Cites | United States of America | Search report |
| US6356889B1 | Cites | United States of America | Search report |
| US6412070B1 | Cites | United States of America | Applicant |
| US6625603B1 | Cites | United States of America | Applicant |
| US6715081B1 | Cites | United States of America | Applicant |
| US6754656B1 | Cites | United States of America | Search report |
| US6801903B2 | Cites | United States of America | Search report |
| Ueli Maurer, The Role of Cryptography in Database Security, SIGMOD 2004, Jun. 13-18, 2004, 6 pages, ACM. | Non-patent | – | Third party observation |
| Marianne Winslett, et al., Formal Query Languages for Secure Relational Databases, ACM Transactions on Database Systems, 1994, pp. 626-662, vol. 19 No. 4. | Non-patent | – | Third party observation |
| Sushil Jajodia, Database Security and Privacy, ACM Computing Surveys, Mar. 1996, pp. 129-131, vol. 28 No. 1, CRC Press. | Non-patent | – | Third party observation |
| Linda M. Null, et al., A Unified Approach For Multilevel Database Security Based on Inference Engines, 1989, pp. 108-111, ACM. | Non-patent | – | Third party observation |
| Elisa Bertino, et al., A Logical Framework for Reasoning About Access Control Models, ACM Transactions on Information and System Security, Feb. 2003, pp. 71-127, vol. 6 No. 1, ACM. | Non-patent | – | Third party observation |
| Shariq Rizvi, et al., Extending Query Rewriting Techniques for Fine-Grained Access Control, SIGMOD 2004, Jun. 13-18, 2004, 12 pages, ACM. | Non-patent | – | Third party observation |
| Tor Didriksen, Rule Based Database Access Control—A Practical Approach, RBAC '97, 1997, pp. 143-151, ACM. | Non-patent | – | Third party observation |
| M. Jaishankar Menon, et al., The Access Control Mechanism of A Database Computer (DBC), 5th Workshop on Computer Architecture for Non-numeric Processing, 1980, pp. 17-28, ACM. | Non-patent | – | Third party observation |
| International Search Report dated Nov. 8, 2005 and mailed Nov. 30, 2005 for PCT Application Ser. No. US04/24161, 4 pages. | Non-patent | – | Third party observation |
| Written Opinion dated Nov. 15, 2000 and mailed Nov. 30, 2005 for PCT Application Ser. No. US04/24161, 7 pages. | Non-patent | – | Third party observation |
| Jim Czuprynski, Oracle Label Security, Part 1: Overview, DBAsupport.com;Oracle 9i Central: Oracle Label Security, Part 1:Overview, http://www.dbasupport.com/oracle/ora9i/OLS01.shtml, 2005. | Non-patent | – | Third party observation |
| Ueli Maurer, The Role of Cryptography in Database Security, SIGMOD 2004, Jun. 13-18, 2004, 6 pages, ACM. | Non-patent | – | Applicant |
| Marianne Winslett, et al., Formal Query Languages for Secure Relational Databases, ACM Transactions on Database Systems, 1994, pp. 626-662, vol. 19 No. 4. | Non-patent | – | Applicant |
| Sushil Jajodia, Database Security and Privacy, ACM Computing Surveys, Mar. 1996, pp. 129-131, vol. 28 No. 1, CRC Press. | Non-patent | – | Applicant |
| Linda M. Null, et al., A Unified Approach For Multilevel Database Security Based on Inference Engines, 1989, pp. 108-111, ACM. | Non-patent | – | Applicant |
| Elisa Bertino, et al., A Logical Framework for Reasoning About Access Control Models, ACM Transactions on Information and System Security, Feb. 2003, pp. 71-127, vol. 6 No. 1, ACM. | Non-patent | – | Applicant |
| Shariq Rizvi, et al., Extending Query Rewriting Techniques for Fine-Grained Access Control, SIGMOD 2004, Jun. 13-18, 2004, 12 pages, ACM. | Non-patent | – | Applicant |
| Tor Didriksen, Rule Based Database Access Control-A Practical Approach, RBAC '97, 1997, pp. 143-151, ACM. | Non-patent | – | Applicant |
| M. Jaishankar Menon, et al., The Access Control Mechanism of A Database Computer (DBC), 5th Workshop on Computer Architecture for Non-numeric Processing, 1980, pp. 17-28, ACM. | Non-patent | – | Applicant |
| International Search Report dated Nov. 8, 2005 and mailed Nov. 30, 2005 for PCT Application Ser. No. US04/24161, 4 pages. | Non-patent | – | Applicant |
| Written Opinion dated Nov. 15, 2000 and mailed Nov. 30, 2005 for PCT Application Ser. No. US04/24161, 7 pages. | Non-patent | – | Applicant |
| Jim Czuprynski, Oracle Label Security, Part 1: Overview, DBAsupport.com;Oracle 9i Central: Oracle Label Security, Part 1:Overview, http://www.dbasupport.com/oracle/ora9i/OLS01.shtml, 2005. | Non-patent | – | Applicant |
31 members in 17 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 55723904 | United States of America | P | |
| 55723904 | United States of America | P | |
| 87815204 | United States of America | A | |
| 60557239 | – | – | – |
| US20040557239P | – | – | – |
| US20040878152 | – | – | – |
Members31
| Document | Office | Kind | |
|---|---|---|---|
| NO20053075D0 | Norway | D0 | |
| CA2507886A1 | Canada | A1 | |
| US2005216465A1 | United States of America | A1 | |
| TW200532495A | Taiwan Province of China | A | |
| AU2004288592A1 | Australia | A1 | |
| WO2005103879A2 | World Intellectual Property Organization (WIPO) | A2 | |
| NO20053075L | Norway | L | |
| MXPA05007142A | Mexico | A | |
| EP1616252A2 | European Patent Office (EPO) | A2 | |
| RU2005120728A | Russian Federation | A | |
| BRPI0406536A | Brazil | A | |
| WO2005103879A3 | World Intellectual Property Organization (WIPO) | A3 | |
| KR20070019519A | Republic of Korea | A | |
| ZA200505028B | South Africa | B | |
| US7200595B2This record | United States of America | B2 | |
| IL169467A0 | Israel | A0 | |
| IL169467D0 | Israel | D0 | |
| US2007174285A1 | United States of America | A1 | |
| CN101052944A | China | A | |
| JP2007531154A | Japan | A | |
| NZ540761A | New Zealand | A | |
| MY138436A | Malaysia | A | |
| US7599937B2 | United States of America | B2 | |
| RU2373571C2 | Russian Federation | C2 | |
| AU2004288592B2 | Australia | B2 | |
| EP1616252A4 | European Patent Office (EPO) | A4 | |
| IL169467A | Israel | A | |
| CN101052944B | China | B | |
| TWI358650B | Taiwan Province of China | B | |
| KR101153064B1 | Republic of Korea | B1 | |
| CA2507886C | Canada | C |
50 transactions on the USPTO file
Allowed after 1 non-final rejection and 1 final rejection.
- Non-final rejections
- 1
- Final rejections
- 1
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Payment of Maintenance Fee, 12th Year, Large EntityM1553 | M1553 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Miscellaneous Incoming LetterLET. | LET. | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Final ActionA.NE | A.NE | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| Cleared by L&R (LARS)L128 | L128 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Referred to Level 2 (LARS) by OIPE CSRL198 | L198 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
6 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS |
Numbers
- Publication
- 07200595
- Publication, DOCDB
- 7200595
- Publication, EPODOC
- US7200595
- Application
- 10878152
- Application, DOCDB
- 87815204
- Application, EPODOC
- US20040878152
Titles
- English
- Systems and methods for fine grained access control of data stored in relational databases
Patent term adjustment
- A delay
- +218 daysthe office missed an examination deadline
- Applicant delay
- −42 days
- Net adjustment
- 176 days
Classification
- CPC, 7
- G06F21/6227
- G06F17/00
- G06F16/217
- Y10S707/99933
- Y10S707/99934
- Y10S707/99932
- Y10S707/99939
- IPC, 7
- G06F17 30
- G06F
- G06F7 00
- G06F12 00
- G06F12 14
- G06F17 00
- G06F21 00
- USPC, 6
- 001001000
- 707999002
- 707999003
- 707999004
- 707999009
- 707999100