A method, system and article of manufacture for managing access to query results and, more particularly, for managing access by multiple users to persistently stored query results, whereby at least some of the users may have different access rights. One embodiment provides a method of managing access to a query result obtained upon execution of a query against one or more databases. The method comprises creating security information configured for restricting access to the query result. The security information is associated with the query result. access to some or all of the query result is granted to a requesting entity on the basis of the security information and an attribute of the requesting entity.
|
7. A method of managing access by multiple users to a limited subset of data, comprising:
executing a query against one or more databases;
generating a plurality of persistent data objects, wherein generating comprises, for each persistent data object:
receiving a query result comprising a dataset obtained from one or more databases in response to execution of a query against the one or more databases;
attaching security information to the query result in order to restrict access to the query result, and wherein the security information includes security settings for a plurality of potential requesting entities, the security settings defining access rights of each potential requesting entity to at least a portion of the query result; and
storing the query result and the attached security information as a rowset in a persistent data object in a data repository; whereby each respective persistent data object is independently accessible on the basis of the respective security information contained within the respective persistent data object; and
granting access to the query result by the multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the query result.
1. A method of managing access to a query result, comprising:
a) generating a plurality of persistent data objects, wherein generating comprises, for each persistent data object:
receiving a query result comprising a dataset obtained from one or more databases in response to execution of a query against the one or more databases;
creating security information configured for restricting access to the query result;
associating the security information with the query result, wherein the security information includes security settings for a plurality of potential requesting entities, the security settings defining access rights of each potential requesting entity to at least a portion of the query result; and
storing the query result and the security information together as a rowset in the respective persistent data object, the respective persistent data object being stored in a data repository; whereby each respective persistent data object is independently accessible on the basis of the respective security information contained within the respective persistent data object; and
b) granting access to a requesting entity to at least some of the query result of a given persistent data object on the basis of the security information and an attribute of the requesting entity.
23. A system, comprising:
one or more databases having data; and
one or more computer processors executing a query manager configured for:
a) executing a query against the one or more databases;
b) generating a plurality of persistent data objects, wherein generating comprises, for each persistent data object:
receiving a query result comprising a dataset obtained from one or more databases in response to execution of a query against the one or more databases;
attaching security information to the query result in order to restrict access to the query result, and wherein the security information includes security settings for a plurality of potential requesting entities, the security settings defining access rights of each potential requesting entity to at least a portion of the query result; and
storing the query result and the attached security information as a rowset in a persistent data object in a data repository; whereby each respective persistent data object is independently accessible on the basis of the respective security information contained within the respective persistent data object; and
c) granting access to the query result by multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the query result.
18. A computer-readable storage medium containing a program which, when executed, performs a process of managing access by multiple users to a limited subset of data, the process comprising:
executing a query against one or more databases;
generating, by a computer processor executing the program, a plurality of persistent data objects, wherein generating comprises, for each persistent data object:
receiving a query result comprising a dataset obtained from one or more databases in response to execution of a query against the one or more databases;
attaching security information to the query result in order to restrict access to the query result, and wherein the security information includes security settings for a plurality of potential requesting entities, the security settings defining access rights of each potential requesting entity to at least a portion of the query result; and
storing the query result and the attached security information as a rowset in a persistent data object in a data repository; whereby each respective persistent data object is independently accessible on the basis of the respective security information contained within the respective persistent data object; and
granting access to the query result by the multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the query result.
12. A computer-readable storage medium containing a program which, when executed, performs a process for managing access to a query result, the process comprising:
a) generating, by a computer processor executing the program, a plurality of persistent data objects, wherein generating comprises, for each persistent data object:
receiving a query result comprising a dataset obtained from one or more databases in response to execution of a query against the one or more databases;
creating security information configured for restricting access to the query result;
associating the security information with the query result, wherein the security information includes security settings for a plurality of potential requesting entities, the security settings defining access rights of each potential requesting entity to at least a portion of the query result; and
storing the query result and the security information together as a rowset in the respective persistent data object, the respective persistent data object being stored in a data repository; whereby each respective persistent data object is independently accessible on the basis of the respective security information contained within the respective persistent data object; and
b) granting access to a requesting entity to at least some of the query result of a given persistent data object on the basis of the security information and an attribute of the requesting entity.
2. The method of
(i) a user name;
(ii) a role of the user; and
(iii) an authorization level of the user.
3. The method of
receiving a first request for accessing the query result from a first requesting entity;
presenting a first portion of the query result to the first requesting entity on the basis of the security information and the attribute of the first requesting entity;
receiving a second request for accessing the query result from a second requesting entity; and
presenting a second portion of the query result to the second requesting entity on the basis of the security information and the attribute of the second requesting entity, wherein the first portion contains one or more data objects not presented in the second portion.
4. The method of
5. The method of
6. The method of
8. The method of
(i) a user name;
(ii) a role of the user; and
(iii) an authorization level of the user.
9. The method of
allowing one or more of the users to modify the subset of data; and
subsequently synchronizing the one or more databases with the modified subset of data.
10. The method of
11. The method of
13. The computer-readable medium of
(i) a user name;
(ii) a role of the user; and
(iii) an authorization level of the user.
14. The computer-readable medium of
receiving a first request for accessing the query result from a first requesting entity;
presenting a first portion of the query result to the first requesting entity on the basis of the security information and the attribute of the first requesting entity;
receiving a second request for accessing the query result from a second requesting entity; and
presenting a second portion of the query result to the second requesting entity on the basis of the security information and the attribute of the second requesting entity, wherein the first portion contains one or more data objects not presented in the second portion.
15. The computer-readable medium of
16. The computer-readable medium of
17. The computer-readable medium of
19. The computer-readable medium of
(i) a user name;
(ii) a role of the user; and
(iii) an authorization level of the user.
20. The computer-readable medium of
allowing one or more of the users to modify the subset of data; and
subsequently synchronizing the one or more databases with the modified subset of data.
21. The computer-readable medium of
22. The computer-readable medium of
|
This application is a continuation of U.S. patent application Ser. No. 10/879,812, filed Jun. 29, 2004 (now patented and bearing the U.S. Pat. No. 7,461,066), which is herein incorporated by reference in its entirety.
1. Field of the Invention
The present invention generally relates to query processing and, more particularly, to managing access by multiple users to persistently stored query results.
2. Description of the Related Art
Databases are computerized information storage and retrieval systems. A relational database management system is a computer database management system (DBMS) that uses relational techniques for storing and retrieving data. The most prevalent type of database is the relational database, a tabular database in which data is defined so that it can be reorganized and accessed in a number of different ways. A distributed database is one that can be dispersed or replicated among different points in a network. An object-oriented programming database is one that is congruent with the data defined in object classes and subclasses.
Regardless of the particular architecture, a DBMS can be structured to support a variety of different types of operations. Such operations can be configured to retrieve, add, modify and delete information being stored and managed by the DBMS. Standard database access methods support these operations using high-level query languages, such as the Structured Query Language (SQL). The term “query” denominates a set of commands that cause execution of operations for processing data from a stored database. For instance, SQL supports four types of query operations, i.e., SELECT, INSERT, UPDATE and DELETE. A SELECT operation retrieves data from a database, an INSERT operation adds new data to a database, an UPDATE operation modifies data in a database and a DELETE operation removes data from a database.
Any requesting entity, including applications, operating systems and, at the highest level, users, can issue queries against data in one or more databases. Queries may be predefined (i.e., hard coded as part of an application) or may be generated in response to input (e.g., user input). A given requesting entity may execute a multiplicity of different queries. Upon execution of each query against one or more databases, a corresponding query result is returned to the requesting entity. Any executed query and corresponding query result(s) can be stored persistently.
A typical approach for managing query results involves RowSet-like technologies. More specifically, a RowSet is an instance of a Java® RowSet class which in turn is part of a RowSet framework which has been created on the basis of the Java® programming language. The RowSet framework provides others the ability to query one or more databases for obtaining a series of database rows forming a query result, i.e., a rowset. The rowset can be detached from the one or more databases and stored as a persistent data object. Thus, the rowset can be accessed and modified as required independent of the one or more databases. Subsequently, the modified rowset and the one or more databases can be synchronized to reflect the modifications performed on the rowset in the one or more databases. A given rowset can be provided to a plurality of users which can, thus, share data contained in the rowset.
However, one problem when dealing with rowsets is that, conventionally, a rowset can only be shared by different users having identical access rights. In other words, if two different users have distinct security settings, they cannot share a given rowset as the access rights of at least one of the users may not authorize this user(s) to access one or more portions of the given rowset. For instance, assume a rowset which contains data about a given research activity in a company. This rowset is accessible by researchers in the company. Assume now that at least one portion of the data contained in the rowset is useful to project managers of the company. However, as project managers and researchers generally have differing access rights, the project managers would not be able to access the at least one portion of the data in the rowset.
Therefore, there is a need for an efficient and more flexible technique for sharing persistently stored query results between multiple users, whereby at least some of the users may have different access rights.
The present invention is generally directed to a method, system and article of manufacture for managing access to query results and, more particularly, for managing access by multiple users to persistently stored query results, whereby at least some of the users may have different access rights.
One embodiment provides a method of managing access to a query result obtained upon execution of a query against one or more databases. The method comprises creating security information configured for restricting access to the query result. The security information is associated with the query result. Access to some or all of the query result is granted to a requesting entity on the basis of the security information and an attribute of the requesting entity.
Another embodiment provides a method of managing access by multiple users to a limited subset of data stored in one or more databases. The method comprises executing a query against the one or more databases to obtain the subset of data, and attaching security information to the subset of data. The method further comprises allowing access to the subset of data by the multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the subset of data.
Still another embodiment provides a computer-readable medium containing a program which, when executed by a processor, performs a process for managing access to a query result obtained upon execution of a query against one or more databases. The process comprises creating security information configured for restricting access to the query result. The security information is associated with the query result. Access to a requesting entity to some or all of the query result is granted on the basis of the security information and an attribute of the requesting entity.
Still another embodiment provides a computer-readable medium containing a program which, when executed by a processor, performs a process of managing access by multiple users to a limited subset of data stored in one or more databases. The process comprises executing a query against the one or more databases to obtain the subset of data, and attaching security information to the subset of data. The process further comprises allowing access to the subset of data by the multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the subset of data.
Still another embodiment provides a system comprising one or more databases, a query result obtained upon execution of a query against the one or more databases, security information configured for restricting access to the query result, and a query manager. The query manager is configured for granting access to a requesting entity to some or all of the query result on the basis of the security information and an attribute of the requesting entity.
Still another embodiment provides a system comprising one or more databases having data, and a query manager. The query manager is configured for executing a query against the one or more databases to obtain a subset of the data. The security information is attached to the subset of the data. The query manager is further configured for allowing access to the subset of the data by multiple users, whereby the access by a particular user is dependent on one or more attributes of the particular user and the security information attached to the subset of the data.
So that the manner in which the above recited features, advantages and objects of the present invention are attained and can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to the embodiments thereof which are illustrated in the appended drawings.
It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments.
The present invention is generally directed to a method, system and article of manufacture for managing access to query results and, more particularly, for managing access by multiple users to persistently stored query results. According to one aspect, at least some of the users have different access rights for the persistently stored query results.
In one embodiment, access to a query result obtained upon execution of a query against one or more databases is managed. In order to restrict access to the query result, corresponding security information is created for the query result. The security information is associated with the query result. Thus, access to some or all of the query result can be granted to a requesting entity on the basis of the security information and an attribute of the requesting entity. Accordingly, access to some or all of the query result is restricted to access by authorized requesting entities.
In another embodiment, access by multiple users to a limited subset of data stored in one or more databases is managed. According to one aspect, the subset of data can be obtained by executing a query against the one or more databases. Access to the subset of data by the multiple users is allowed. However, in order to manage the access to the subset of data, security information is attached to the subset of data. Thus, the access to the subset of data by a particular user can be made dependent on one or more attributes of the particular user and the security information attached to the subset of data.
One embodiment of the invention is implemented as a program product for use with a computer system. The program(s) of the program product defines functions of the embodiments (including the methods described herein) and can be contained on a variety of signal-bearing media. Illustrative signal-bearing media include, but are not limited to: (i) information permanently stored on non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive); (ii) alterable information stored on writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive); or (iii) information conveyed to a computer by a communications medium, such as through a computer or telephone network, including wireless communications. The latter embodiment specifically includes information downloaded from the Internet and other networks. Such signal-bearing media, when carrying computer-readable instructions that direct the functions of the present invention, represent embodiments of the present invention.
In general, the routines executed to implement the embodiments of the invention, may be part of an operating system or a specific application, component, program, module, object, or sequence of instructions. The software of the present invention typically is comprised of a multitude of instructions that will be translated by the native computer into a machine-readable format and hence executable instructions. Also, programs are comprised of variables and data structures that either reside locally to the program or are found in memory or on storage devices. In addition, various programs described hereinafter may be identified based upon the application for which they are implemented in a specific embodiment of the invention. However, it should be appreciated that any particular nomenclature that follows is used merely for convenience, and thus the invention should not be limited to use solely in any specific application identified and/or implied by such nomenclature.
Embodiments of the invention can be implemented in a hardware/software configuration including at least one networked client computer and at least one server computer. Furthermore, embodiments of the present invention can apply to any comparable hardware configuration, regardless of whether the computer systems are complicated, multi-user computing apparatus, single-user workstations, or network appliances that do not have non-volatile storage of their own. Further, it is understood that while reference may be made to particular query languages, including SQL, the invention is not limited to a particular language, standard or version. Accordingly, persons skilled in the art will recognize that the invention is adaptable to other query languages and that the invention is also adaptable to future changes in a particular query language as well as to other query languages presently unknown. Moreover, it is understood that while reference may be made to implementations on the basis of RowSet-like technologies, the invention is not limited to such technologies and can be applied to any subset or collection of data from a data source, including rowsets.
In the following, reference is made to embodiments of the invention. However, it should be understood that the invention is not limited to specific described embodiments. Instead, any combination of the following features and elements, whether related to different embodiments or not, is contemplated to implement and practice the invention. Furthermore, in various embodiments the invention provides numerous advantages over the prior art. However, although embodiments of the invention may achieve advantages over other possible solutions and/or over the prior art, whether or not a particular advantage is achieved by a given embodiment is not limiting of the invention. Thus, the following aspects, features, embodiments and advantages are merely illustrative and, unless explicitly present, are not considered elements or limitations of the appended claims.
Referring now to
Illustratively, the software components include a requesting entity 110 and a query manager 140. According to one aspect, the requesting entity 110 issues queries, such as query 120, against data 132 of a data source 130. By way of example, the requesting entity 110 can be embodied by any application, an operating system or, at the highest level, users. The queries issued by the requesting entity 110 may be predefined (i.e., hard coded as part of an application) or may be generated in response to input (e.g., user input).
In one embodiment, the query 120 is an SQL query. One of the most common executed SQL queries is the SELECT statement. The SELECT statement generally has the format: “SELECT <clause> FROM <clause> WHERE <clause> GROUP BY <clause> HAVING <clause> ORDER BY <clause>”. The clauses must generally follow this sequence. Only the SELECT and FROM clauses are required and all other clauses are optional. The result of a SELECT statement is, in general, a subset of data retrieved from one or more existing tables (e.g., data 132) stored in a relational database (e.g., data source 130 of
In another embodiment, the query 120 is an abstract query. An abstract query is composed using logical fields defined by a data abstraction model. Each logical field is mapped to one or more physical entities of data of an underlying data representation being used in the data source 130 (e.g., XML, SQL, or other type representation). Furthermore, in the data abstraction model the logical fields are defined independently from the underlying data representation, thereby allowing queries to be formed that are loosely coupled to the underlying data representation. The abstract query can be configured to access the data 132 and return query results, or to modify (i.e., insert, delete or update) the data 132. For execution against the data 132, the abstract query is transformed into a form (referred to herein as concrete query) consistent with the underlying data representation of the data 132. Transformation of abstract queries into concrete queries is described in detail in the commonly owned, co-pending U.S. patent application Ser. No. 10/083,075, entitled “Application Portability And Extensibility Through Database Schema And Query Abstraction,” filed Feb. 26, 2002, which is incorporated by reference in its entirety.
The data source 130 is representative of any collection of data regardless of the particular physical representation. In one embodiment, the data source 130 includes one or more databases. Each of the one or more databases may be organized according to a relational schema (accessible by SQL queries) or according to an XML schema (accessible by XML queries). However, the invention is not limited to a particular schema and contemplates extension to schemas presently unknown. As used herein, the term “schema” generically refers to a particular arrangement of data.
The query manager 140 executes the query 120 against the data 132 of the data source 130 to obtain a query result. Illustratively, upon execution of the query 120, the query manager 140 obtains a query result 156 from the data source 130. As illustrated by dashed arrow 192, the query result 156 may subsequently be presented to the requesting entity 110.
The query manager 140 stores the query result 156 as a persistent data object in a result repository 150. Illustratively, the result repository 150 already includes a multiplicity of query results 152, 154 (only two are shown, for brevity) which are also stored as persistent data objects. However, it should be noted that providing the result repository 150 with the obtained query results 152, 154 and 156 is merely illustrative and not intended for limiting the invention accordingly. For instance, the obtained query results 152, 154 and 156 may be obtained by different requesting entities and stored individually at different locations in a corresponding data processing system.
In one embodiment, access to the query results 152, 154 and 156 is restricted on the basis of security settings 134. Illustratively, the security settings 134 are stored in the data source 130. By way of example, access to a given query result can be restricted by modifying a subsequently received query from another requesting entity to remove one or more results fields from the query based on security information attached to the given query result and one or more attributes of the other requesting entity. Access to the given query result can further be restricted by presenting the other requesting entity with only a limited portion of data of the given query result based on the security information attached to the given query result and one or more attributes of the other requesting entity. Operation of the query manager 140 for restricting access to the query results 152, 154 and 156 is explained in more detail below with reference to
According to one aspect, a given data request can be embodied as a particular query (e.g., query 120 of
By way of example, assume that one of the requesting entities 1101-110N (hereinafter referred to as “requesting entity 110”) issues one of the data requests 160 (hereinafter referred to as “data request 160”) against the query result 152. The query manager 140 receives the data request 160 and determines whether the requesting entity 110 is authorized to access all or at least some of the query result 152. To this end, the query manager 140 determines one or more attributes from the requesting entity 110. The determined attribute(s) is suitable to identify the requesting entity 110. By way of example, the determined attribute(s) can be an entity name, an entity identifier, a role of the requesting entity or an authorization level. According to one aspect, the requesting entity 110 is a user. Accordingly, the determined attribute(s) can be a user name, a user identifier, a role of the user or an authorization level associated with the user.
The query manager 140 further accesses the security settings 134 in the data source 130 for determining access rights for the requesting entity 110. In one embodiment, the security settings 134 are suitable for identifying access rights for a plurality of potential requesting entities, including the requesting entities 1101-110N, to components of a given data processing system, such as the data source 130 and/or the result repository 150. Accordingly, using the security settings 134, access to these components can be restricted to access by authorized requesting entities.
For instance, the security settings 134 can be implemented in order to define for each portion of the data 132 which requesting entity of the requesting entities 1101-110N is allowed to access that portion of the data 132. Furthermore, the security settings 134 may be provided with a user or application-specific granularity. For instance, the security settings 134 can be configured for restricting access to entire database tables, columns or rows of the database tables. Accordingly, different scenarios may occur in which different access rights to the query result 152 are determined for different requesting entities based on the security settings 134 and the attributes. In other words, while all these requesting entities are operating on the same query result, i.e., query result 152, different data can be presented to each of these requesting entities. By way of example, a first portion of the query result 152 may be presented to a first requesting entity and a second portion of the query result 152 may be presented to a second requesting entity, whereby the first portion contains one or more data objects not presented in the second portion. Exemplary scenarios in which different requesting entities illustratively represented by users attempt to access a single query result provided in the form of a rowset are described below with reference to Tables I-IV:
TABLE I
EXEMPLARY SCENARIO 1
001
User A executes query: “Select * from table-x”
002
User A can access all rows from query result
003
User B can only access even rows from the query result
As can be seen from Table I, User A executes a query against a database table “table-x” to create a rowset containing all rows of the database table “table-x” (line 001). According to line 002, the security settings 134 are defined such that when User A connects to the rowset, each call to a NEXT function goes to the next row of the rowset, as User A is allowed to access all rows thereof. However, when User B connects to the rowset, each call to the NEXT function continues calling the NEXT function according to line 003 until an allowed row is reached, i.e., an even row of the rowset.
TABLE II
EXEMPLARY SCENARIO 2
001
User A executes query: “Select * from table-x, table-y”
002
User A can access all rows from query result
003
User B can only access a single row from table-x
As can be seen from Table II, User A executes a query against database tables “table-x” and “table-y” to create a rowset containing all rows of these database tables (line 001). According to line 002, the security settings 134 are defined such that when User A connects to the rowset, each call to a NEXT function goes to the next row of the rowset. However, when User B connects to the rowset, each call to the NEXT function continues calling the NEXT function according to line 003 until the single row from “table-x” in the rowset is reached.
TABLE III
EXEMPLARY SCENARIO 3
001
User A executes query: “Select * from table-x, table-y”
002
User A can access a first set of rows from query result
003
User B can access a different, second set of rows from
the query result
As can be seen from Table III, User A executes a query against the database tables “table-x” and “table-y” to create a rowset containing all rows of these database tables (line 001). According to line 002, the security settings 134 are defined such that when User A connects to the rowset, only rows contained in the first set of rows from the rowset are presented to User A. Similarly, when User B connects to the rowset, only rows contained in the second set of rows from the rowset are presented to User B._In other words, all rows contained in the first set of rows from the rowset are hidden to User B.
TABLE IV
EXEMPLARY SCENARIO 4
001
User A executes query: “Select * from table-x, table-y”
002
User A can access all rows from query result
003
User B can access all rows from table-x and table-y
004
User C can only access a single row from the query result
005
User B is not authorized to access the query result
As can be seen from Table IV, User A executes a query against the database tables “table-x” and “table-y” to create a rowset containing all rows of these database tables (line 001). According to line 002, the security settings 134 are defined such that when User A connects to the rowset, each call to a NEXT function goes to the next row of the rowset. When User C connects to the rowset, each call to the NEXT function continues calling the NEXT function according to line 004 until the single row from the rowset is reached. However, while User B is authorized to access all rows from “table-x” and “table-y” (line 003), User B is not authorized to access the rowset (line 005). Accordingly, if User B attempts to connect to the rowset, access is denied by the query manager 140 on the basis of the security settings 134.
Assume now that in the example illustrated in
Referring now to
Assume now, by way of example, that the query manager 140 receives a given data request from the data requests 160 (hereinafter referred to as “data request 160”) from a user against a given query result 180 from the query results 180 (hereinafter referred to as “query result 180”). Upon receipt of the data request 160, the query manager 140 determines whether the user is authorized to access all or at least some of the result data 182 of the query result 180. To this end, the query manager 140 determines attributes from the user as described above with reference to
In one embodiment, the security information 184 is created on the basis of the security settings 134 of
Referring now to
At step 220, a query (e.g., query 120 of
At step 240, security information is created. The security information is configured for restricting access to the limited subset of data. In one embodiment, creating the security information includes creating security settings. According to one aspect, the security information (e.g., security information 184 of
At step 250, the security information is associated with the limited subset of data. At step 260, the security information is stored together with the limited subset of data as a persistent data object (e.g., query result 180 of
At step 270, one or more attributes of the requesting entity are determined, such as an entity name, an entity identifier, a role of the requesting entity or an authorization level. Then, on the basis of the determined attribute(s) and the security information, the extent to which the requesting entity is allowed to access the persistent data object is determined. According to the determined extent, data from the persistent data object is identified is allowed to be presented to the requesting entity. The determined data is presented as output data (e.g., output data 170 of
It should be noted that the persistent data object that has been stored at step 260 of method 200 can subsequently be accessed by multiple requesting entities on the basis of the security information and one or more attribute(s) of the requesting entities attempting to access the persistent data object. An exemplary method 300 illustrating access to the persistent data object by some requesting entity X is described below with reference to
Method 300 starts at step 310. At step 320, a data request (e.g., data request 160 of
At step 330, access to at least one or more portions of the persistent data object is granted or denied. An exemplary method of granting access to a persistent data object is described below with reference to
At step 340, the requesting entity X processes the output data as required. For instance, the requesting entity X may display or print the output data. Furthermore, the requesting entity X may modify the output data. By way of example, if the output data is presented in tabular form having a plurality of rows and columns, the requesting entity X may insert, update or delete rows and/or columns from the output data. If the requesting entity X modifies the output data, the persistent data object is accordingly modified. However, in this case the persistent data object and corresponding data in the underlying data source (e.g., data source 130 of
If the persistent data object has not been changed, method 300 exits at step 370. If, however, it is determined at step 350 that the persistent data object has been changed by modifications of the output data, then at step 360, the underlying data source is synchronized. In other words, at step 360, if the persistent data object has been changed, the corresponding data in the underlying data source is changed accordingly. Method 300 then exits at step 370.
However, it should be noted that synchronizing the underlying data source is merely optional. Furthermore, synchronization and/or a degree of synchronization can be application-specific or defined by an administrator of the underlying data source. For instance, it can be defined that the underlying data source is synchronized in response to modifications which are performed by specific users, but that modifications of other users are not taken into consideration. Furthermore, it can be defined that modifications on specific portions of the persistent data object require synchronization, while modifications on other portions are not considered. Moreover, it can be defined that no synchronization at all should be performed. In other words, synchronization of the underlying data source can be handled in various different ways which are all broadly contemplated.
Referring now to
If security information is included with the persistent data object (e.g., query result 180 of
If, however, it is determined at step 410 that security information is not included with the persistent data object (e.g., query result 160 of
In various embodiments, the invention provides numerous advantages over the prior art. For instance, in one embodiment reuse of query results is improved by attaching security information thereto. Accordingly, the query results can be used more broadly, making it possible to achieve more efficient utilization of databases in query execution, especially if the query result is stored as a persistent data object which can be offloaded to various servers for use, for example, in a business tier of an n-tier architecture application. Thus, the persistent data objects can be made available to users even when a given main server, which stores the underlying database(s), is offline.
Furthermore, in one embodiment existing standards work going on for RowSet-type data access can be leveraged. For instance, according to one aspect a user may create an instance of an extension to the Java® RowSet class (hereinafter referred to as a “SecurityEnabledRowSet”) similar to creating an instance of the Java® RowSet class. By way of example, the user may construct the SecurityEnabledRowSet from a ResultSet or another RowSet object, which thus contains a limited subset of data. The SecurityEnabledRowSet encrypts its limited subset of data upon creation. Furthermore, the SecurityEnabledRowSet provides connect methods which allow users to establish a connection to it in a manner which can be similar to a connection to a database. A user connected to a SecurityEnabledRowSet can then access the limited subset of data in the same way that a normal RowSet or ResultSet is accessed. However, retrieval of rows and data cells is governed by the security settings of the users being applied to the limited subset of data.
According to one aspect, a SecurityEnabledRowSet can be created with a user list which is configured to limit a number of different users of the SecurityEnabledRowSet to users, for which security information has been collected. Accordingly, the size of the SecurityEnabledRowSet can be minimized, make the SecurityEnabledRowSet less complex. Further, the SecurityEnabledRowSet serves as an automatic access list for the use of the SecurityEnabledRowSet which has value in and of itself.
According to another aspect, the SecurityEnabledRowSet can be created in a deferred security mode. In this mode, the security information is not initially stored for all users, but is instead retrieved from the underlying database(s) via a remote call when a user connects to the rowset. In this model, the rowset may inform the database(s) of what data it has available. Then, the database(s) may provide some map defining, for instance, which rows are available for access by the connecting user. This is beneficial as it may limit the security information retrieved from the database(s). It is also beneficial in that it allows a late binding of security information to the rowset ensuring that if a user's access rights change after the rowset is created, the changed access rights will be taken into consideration.
While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.
Dettinger, Richard D., Kolz, Daniel P., Djugash, Judy I.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5734887, | Sep 29 1995 | Toshiba Global Commerce Solutions Holdings Corporation | Method and apparatus for logical data access to a physical relational database |
5941947, | Aug 18 1995 | Rovi Technologies Corporation | System and method for controlling access to data entities in a computer network |
6253203, | Oct 02 1998 | NCR Voyix Corporation | Privacy-enhanced database |
6370524, | Apr 02 1999 | ORACLE INTERNATIONAL CORPORATION OIC | System and method for processing queries having an inner query block containing a grouping operator |
6490626, | Nov 19 1997 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Browser system |
6553368, | Mar 03 1998 | Oracle America, Inc | Network directory access mechanism |
6581060, | Jun 21 2000 | International Business Machines Corporation | System and method for RDBMS to protect records in accordance with non-RDBMS access control rules |
6725227, | Oct 02 1998 | NEC Corporation | Advanced web bookmark database system |
6889231, | Aug 01 2002 | Oracle International Corporation | Asynchronous information sharing system |
6928431, | Apr 25 2002 | International Business Machines Corporation | Dynamic end user specific customization of an application's physical data layer through a data repository abstraction layer |
6954748, | Apr 25 2002 | WORKDAY, INC | Remote data access and integration of distributed data sources through data schema and query abstraction |
6976023, | Apr 23 2002 | International Business Machines Corporation | System and method for managing application specific privileges in a content management system |
6996558, | Feb 26 2002 | WORKDAY, INC | Application portability and extensibility through database schema and query abstraction |
7096229, | May 23 2002 | International Business Machines Corporation | Dynamic content generation/regeneration for a database schema abstraction |
7461066, | Jun 29 2004 | ServiceNow, Inc | Techniques for sharing persistently stored query results between multiple users |
7788270, | Feb 28 2008 | Red Hat, Inc.; Red Hat, Inc | Name-based filters utilized in full-text search engine |
20020078068, | |||
20040088286, | |||
20040230571, | |||
20050120203, | |||
20050289144, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jun 25 2004 | DJUGASH, JUDY I | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038015 | /0986 | |
Jun 25 2004 | KOLZ, DANIEL P | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038015 | /0986 | |
Jun 28 2004 | DETTINGER, RICHARD D | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038015 | /0986 | |
Jul 17 2008 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Dec 31 2015 | International Business Machines Corporation | MIDWAY TECHNOLOGY COMPANY LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 037704 | /0257 | |
Mar 24 2016 | MIDWAY TECHNOLOGY COMPANY LLC | ServiceNow, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 038324 | /0816 |
Date | Maintenance Fee Events |
Dec 04 2015 | REM: Maintenance Fee Reminder Mailed. |
Apr 04 2016 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 04 2016 | M1554: Surcharge for Late Payment, Large Entity. |
May 19 2017 | ASPN: Payor Number Assigned. |
May 19 2017 | RMPN: Payer Number De-assigned. |
Oct 23 2019 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Oct 10 2023 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Apr 24 2015 | 4 years fee payment window open |
Oct 24 2015 | 6 months grace period start (w surcharge) |
Apr 24 2016 | patent expiry (for year 4) |
Apr 24 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Apr 24 2019 | 8 years fee payment window open |
Oct 24 2019 | 6 months grace period start (w surcharge) |
Apr 24 2020 | patent expiry (for year 8) |
Apr 24 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Apr 24 2023 | 12 years fee payment window open |
Oct 24 2023 | 6 months grace period start (w surcharge) |
Apr 24 2024 | patent expiry (for year 12) |
Apr 24 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |