US20080275880A1 - Access control for elements in a database object - Google Patents
Access control for elements in a database object Download PDFInfo
- Publication number
- US20080275880A1 US20080275880A1 US12/138,312 US13831208A US2008275880A1 US 20080275880 A1 US20080275880 A1 US 20080275880A1 US 13831208 A US13831208 A US 13831208A US 2008275880 A1 US2008275880 A1 US 2008275880A1
- Authority
- US
- United States
- Prior art keywords
- user
- access
- database object
- dynamic condition
- element set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000004590 computer program Methods 0.000 claims description 10
- 230000015654 memory Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 claims description 4
- 238000000034 method Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 21
- 238000012545 processing Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000013459 approach Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
Definitions
- the present invention relates generally to database management systems. More particularly, the present invention is directed to controlling access to elements in a database object.
- DBMS Database Management System
- data is stored in tables made up of records (e.g., rows) having one or more fields (e.g., columns).
- a view is a logical construct imposed over a table and is defined by metadata in the DBMS known as a view definition.
- the view definition contains mappings to one or more rows and columns in one or more tables stored in a database. Tables and views are considered to be database objects.
- Fine-Grained Access Control is a mechanism by which the DBMS controls access to database object records and/or fields based on the identity of the user attempting to access the database object.
- FGAC complements the traditional Discretionary Access Control (DAC) implemented by many DBMS by allowing the DBMS to enforce two levels of access control: DAC is enforced at the object level (e.g., does the user have the right to access that table?) and FGAC is enforced at the element level (e.g., does the user have the right to access that row or column?).
- DAC Discretionary Access Control
- a view can be used to alter or restrict the data seen by a user using the view to access the underlying table(s).
- Views have a number of shortcomings. For example, when the number of different restrictions is numerous, view definitions may become quite complex in an effort to incorporate all of the restrictions in one view, which strains system limits and makes maintenance of the view difficult.
- a large number of simple views are desired, e.g., each one implementing a unique view of a table based on the restrictions for a specific set of users, the routing of user requests becomes difficult with the solution often being resolved within the database application rather than the DBMS.
- a user may be able to bypass the FGAC implemented through the views by accessing the base tables directly.
- FGAC Another known implementation of FGAC is the use of user attributes to modify queries by adding predicates into the queries.
- a predicate is a condition that must be satisfied for the DBMS to return a value.
- the user attributes e.g., user identifier
- a security policy defined within a procedure provided by the user on a table or view to make decisions regarding access to data.
- query modification approach only allows the DBMS to control access at the row-level. Views still have to be used to control access at the column-level. Additionally, the approach requires user programming of a strictly defined “predicate producing” procedure in order to implement a security policy. Moreover, query modification interferes with dynamic query caching because the modified queries will no longer match the original text of the queries, which makes query matching problematic and impacts the performance benefits of caching.
- a privacy policy indicates who can access what information, for what purpose, and resulting in what obligations. For example, a user John Doe may be allowed to access the credit card column from a customer table if he is using the billing application to process a customer order, but he may not be allowed to access that column for the purpose of sending marketing information to the customer.
- Existing FGAC solutions cannot address this requirement because they either do not support controlling access at the column level or they provide control access at the column level, but only for columns that have been statically defined (i.e., view-based techniques). Hence, a user is always restricted to a set of columns, regardless of the purpose for which he or she is accessing those columns.
- a session context is uniquely identified by a set of session attributes that may include the ID of the user who established that session, the IP address of the computer from which the user initiated the session, as well as other attributes as dictated by a particular implementation or scenario.
- a user can have one or more privileges on one or more database objects that are not necessarily available to them within a different context.
- the next logical user requirement would be to allow certain columns to be accessible within one context, but not within another context.
- the only way to accomplish this would be to define a set of views that restrict access to certain columns and grant access on those views to users depending on their session context. Maintaining several views, however, has the same drawbacks mentioned earlier.
- a method, computer program product, and system for controlling access to elements in a database object are provided.
- a group of one or more users is denoted as a user group and a set of one or more of the elements in a database object is denoted as an element set in the database object.
- the method, computer program product, and system provide for receiving a request from a user to access the database object, determining whether an access restriction is imposed on the database object, the access restriction specifying a first user group to which the access restriction is applicable, defining a first dynamic condition the first user group must satisfy in order to access the database object, and identifying a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied, and controlling access to the elements in the database object by the user based on the access restriction.
- Controlling access to elements in a database object using access restrictions, rather than views or modified queries, eliminates the worries concerning the creation and maintenance of complex views, the users bypassing restrictions by accessing underlying tables directly, the difficulties associated with routing user requests when there is a large number of views, the ability to control access at both the row and column level, the need to program strictly defined “predicate producing” procedures, and the problems of dynamic query caching interferences.
- the access restrictions are defined using one or more dynamic conditions, the flexibility needed to address current privacy and security concerns is achieved.
- Particular implementations can include controlling access to the elements in the database object by confirming whether the user is in the first user group when the access restriction is imposed on the database object, verifying whether the user satisfies the first dynamic condition when the user is in the first user group, and allowing the user to access the first element set when the user satisfies the first dynamic condition.
- Verifying whether the user satisfies the first dynamic condition may include obtaining one or more session variables associated with the user when the user is in the first user group and comparing the one or more session variable associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition.
- allowing the user to access the first element set in the database object comprises generating a dynamic pseudo-view of the database object comprising only the first element set in the database object when the user satisfies the first dynamic condition and responding to the request from the user using the dynamic pseudo-view of the database object.
- the database object is a table or a view
- at least one element in the first element set is a column
- the first dynamic condition is a session context or a session purpose associated with a user in the first user group
- the access restriction is stored in a database. Additionally, the access restriction can further define an additional dynamic condition the first user group must satisfy in order to access the first element set.
- the access restriction further defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and further identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied. At least one element in the first element set may also be an element in the second element set.
- Further aspects may include determining whether another access restriction is imposed on the database object, the other access restriction specifying a second user group to which the other access restriction is applicable.
- the other access restriction can also define another dynamic condition the second user group must satisfy in order to access the database object and identify another element set in the database object accessible to the second user group when the other dynamic condition is satisfied.
- at least one user in the first user group is also a user in the second user group.
- Another implementation also includes deciding whether an exception to the access restriction is applicable to the user requesting access to the database object and permitting the user to access the elements in the database object when the exception to the access restriction is applicable to the user.
- FIG. 1 is a process flow of a method for controlling access to elements in a database object according to an aspect of the invention.
- FIG. 2 illustrates a system according to one embodiment of the invention.
- FIGS. 3-5 depict flowcharts of methods for controlling access to elements in a database object according to various implementations of the invention.
- FIG. 6 shows a sample database object and exemplary dynamic pseudo-views generated based on the sample database object according to one aspect of the invention.
- FIG. 7 is a block diagram of a data processing system with which embodiments of the present invention can be implemented.
- the present invention relates generally to database systems and more particularly to controlling access to elements in a database object.
- the following description is presented to enable one of ordinary skill in the art to make and use the invention.
- Various modifications to the preferred implementations and the generic principles and features described herein will be readily apparent to those skilled in the art.
- the present invention is not intended to be limited to the implementations shown, but is to be accorded the widest scope consistent with the principles and features described herein.
- FIG. 1 depicts a process 100 for controlling access to elements in a database object.
- a request to access the database object is received from a user.
- a determination is then made at 104 as to whether an access restriction is imposed on the database object.
- the access restriction specifies a first user group comprising one or more users to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set comprising one or more of the elements in the database object accessible to the first user group when the first dynamic condition is satisfied.
- a group of one or more users is denoted as a user group and a set of one or more of the elements in a database object is denoted as an element set in the database object.
- Access to the elements in the database object by the user is controlled based on the access restriction when the access restriction is imposed on the database object and the user is in the first user group ( 106 ).
- the database object is a table or a view
- at least one element in the first element set is a column
- the first dynamic condition is a session context or a session purpose associated with a user in the first user group.
- a session purpose could be determined based on the type of application the user is employing when requesting access to the database object, for example, a purchasing application or a marketing application.
- a session context could be the location from which the user is requesting access to the database object, for instance, from the office or at home. The location may be determined based on the IP address of the computer from which the user is requesting access.
- Session context and session purpose are just two examples of dynamic conditions.
- a dynamic condition can also be a function.
- the condition can be “F (current time) is TRUE” where “F” is a function that compares the current time to the time of the day when access can be granted.
- FIG. 2 Illustrated in FIG. 2 is a system 200 including a server 202 interconnected to clients 210 - 1 to 210 - n via a network 208 .
- Server 202 and clients 210 - 1 to 210 - n may be any data processing system, such as computers, workstations, and handheld portable devices.
- system 200 may include more or less clients in other embodiments.
- Network 208 may be the Internet or World Wide Web (WWW) in some implementations.
- WWW World Wide Web
- System 200 also includes a database 204 and resources 206 a - 206 b .
- Each resource may be a storage media, a database, a set of XML (eXtensible Markup Language) documents, a directory service, such as LDAP (Lightweight Directory Access Protocol) server, or a backend system.
- XML eXtensible Markup Language
- directory service such as LDAP (Lightweight Directory Access Protocol) server
- Other embodiments of system 200 may include more or less databases and/or resources.
- Database 204 and resources 206 a - 206 b are coupled to server 202 .
- the interface between server 202 and database 204 and resources 206 a - 206 b may be a local area network, Internet, a proprietary interface, or any combination of the foregoing.
- Clients 210 - 1 to 210 - n can access database 204 and resources 206 a - 206 b through server 202 .
- Any of server 202 , database 204 , resources 206 a - 206 b , and clients 210 - 1 to 210 - n may be located remotely from one another or may share a location.
- network 208 may comprise a wireless link, a telephone communication, a radio communication, or a computer network (e.g., a Local Area Network (LAN) or a Wide Area Network (WAN)).
- LAN Local Area Network
- WAN Wide Area Network
- database 204 is operable to store a database object comprising a plurality of elements and server 202 is operable to receive a request from a user to access the database object.
- the request may be submitted by the user through one of clients 210 - 1 to 210 - n .
- Server 202 is also operable to determine whether an access restriction is imposed on the database object.
- the access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied.
- Server 202 is then operable to control access to the elements in the database object by the user based on the access restriction when the access restriction is imposed on the database object and the user is in the first user group.
- database 204 is further operable to store the access restriction.
- the access restriction may be stored in a catalog of database 204 (not shown).
- FIG. 3 shows a process 300 for controlling access to elements in the database object according to an aspect of the invention.
- a request to access the database object is received from a user at 302 .
- the access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition and an additional dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition and the additional dynamic condition are satisfied.
- process 300 determines whether the user is in the first user group to which the access restriction is applicable ( 308 ). When the user is not in the first user group, process 300 proceeds to 306 and the user is permitted to access the elements in the database object.
- process 300 verifies whether the user satisfies the first dynamic condition ( 310 ). If the user does not satisfy the first dynamic condition, the user is prohibited from accessing the elements in the database object ( 312 ). If the user does satisfy the first dynamic condition, process 300 verifies whether the user satisfies the additional dynamic condition ( 314 ). When the user fails to satisfy the additional dynamic condition, process 300 proceeds to 312 and prohibits the user from accessing the elements in the database object.
- a dynamic pseudo-view of the database object comprising only the first element set is generated when the user satisfies the first dynamic condition and the additional dynamic condition ( 316 ).
- the request from the user is then responded to using the dynamic pseudo-view of the database object ( 318 ).
- a dynamic pseudo-view is a view-like entity with attributes similar to a predefined regular view. However, because it is dynamically created, it does not exist in a database, such as database 204 in FIG. 2 , and has no dependencies.
- FIG. 4 Depicted in FIG. 4 is another process 400 for controlling access to elements in a database object.
- a request is received from a user to access the database object.
- a determination is then made at 404 as to whether an access restriction is imposed on the database object.
- the access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied.
- the access restriction also defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied.
- at least one element in the first element set is also an element in the second element set.
- process 400 determines whether the user is in the first user group ( 408 ). If the user is not in the first user group, process 400 proceeds to 406 and permits the user to access the elements in the database object.
- one or more session variables associated with the user is obtained ( 410 ).
- a session start trigger will populate one or more session variables associated with the user with the appropriate values based on information from the user and the application.
- the session start trigger is a program that is automatically executed when a session is established.
- Process 400 compares the one or more session variables associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition ( 412 ).
- the user is allowed to access the first element set in the database object when the user satisfies the first dynamic condition, i.e., the one or more session variables match or correspond to the first dynamic condition ( 414 ).
- process 400 compares them to the second dynamic condition ( 416 ). If they also fail to match the second dynamic condition, the user is prohibited from accessing the elements in the database object ( 418 ). However, if the one or more session variables associated with the user match the second dynamic condition, the user is allowed to access the second element set in the database object ( 420 ).
- FIG. 5 illustrates a process 500 for controlling access to elements in a database object according to a further embodiment of the invention.
- a request to access the database object is received from a user at 502 .
- a determination is then made at 504 as to whether an access restriction has been imposed on the database object.
- the access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied.
- process 500 decides whether an exception to the access restriction is applicable to the user requesting access to the database object ( 508 ).
- the exception to the access restriction is applicable to the user at block 508
- the other access restriction specifies a second user group to which the other access restriction is applicable ( 510 ).
- at least one user in the first user group is also a user in the second user group.
- the other access restriction may further define another dynamic condition the second user group must satisfy in order to access the database object and identify another element set in the database object accessible to the second user group when the other dynamic condition is satisfied. Additionally, the other element set in the database object may be a subset of the first element set.
- Process 500 will proceed to 506 to permit the user to access the elements in the database object when no other access restrictions are imposed on the database object. However, it will decide whether an exception to the other access restriction is applicable to the user requesting access to the database object when the other access restriction is also imposed on the database object ( 512 ). The user is permitted to access the elements in the database object if the exception to the other access restriction is applicable to the user ( 506 ). In contrast, access to the elements in the database object by the user is controlled based on the other access restriction if the exception to the other access restriction is inapplicable to the user ( 514 ).
- Access to the elements in the database object by the user will be controlled based on the access restriction when the exception to the other access restriction is applicable to the user ( 518 ). Conversely, access to the elements in the database object by the user will be controlled based on both access restrictions when the exception to the other access restriction is not applicable to the user ( 522 ).
- Database object 600 is a table called “customer data” with a column 602 for names, a column 604 for addresses, a column 606 for phone numbers, and a column 608 for credit card numbers.
- Table 600 has n number of rows 610 - 1 to 610 - n .
- Embodiments of the present invention enables access restrictions to be created such that it becomes possible to express which elements 602 - 610 in database object 600 are accessible by a user and under what condition.
- SQL Structured Query Language
- server 202 in FIG. 2 can determine that an access restriction applies for user Bob.
- Server 202 may then look up a session variable “SessionVariablePurpose” associated with user Bob and read its value. If it is set to “Billing,” server 202 will implement access restriction “r1” in the query plan as if that restriction was statically defined as follows:
- server 202 will implement restriction “r1” in the query plan as if that restriction was statically defined as follows:
- the invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements.
- the invention is implemented in software, which includes, but is not limited to, firmware, resident software, microcode, etc.
- the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
- a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- the medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
- Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk.
- Current examples of optical disks include DVD, compact disk-read-only memory (CD-ROM), and compact disk-read/write (CD-R/W).
- FIG. 7 depicts a data processing system 700 suitable for storing and/or executing program code.
- Data processing system 700 includes a processor 702 coupled to memory elements 704 a - b through a system bus 706 .
- data processing system 700 may include more than one processor and each processor may be coupled directly or indirectly to one or more memory elements through a system bus.
- Memory elements 704 a - b can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times the code must be retrieved from bulk storage during execution.
- I/O devices 708 a - b including, but not limited to, keyboards, displays, pointing devices, etc.
- I/O devices 708 a - b may be coupled to data processing system 700 directly or indirectly through intervening I/O controllers (not shown).
- a network adapter 710 is coupled to data processing system 700 to enable data processing system 700 to become coupled to other data processing systems or remote printers or storage devices through communication link 712 .
- Communication link 712 can be a private or public network. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
A system for controlling access to elements in a database object are provided. The system provides for receiving a request from a user to access the database object, determining whether an access restriction is imposed on the database object, and controlling access to the elements in the database object by the user based on the access restriction. The access restriction specifies one or more users to which the access restriction is applicable, defines a dynamic condition the one or more users must satisfy in order to access the database object, and identifies one or more of the elements in the database object accessible to the one or more users when the dynamic condition is satisfied.
Description
- Under 35 USC §120, this application is a continuation application and claims the benefit of priority to U.S. patent application Ser. No. 11/299,857, filed Dec. 12, 2005, entitled “Access Control for Elements in a Database Object,” which is incorporated herein by reference.
- The present invention relates generally to database management systems. More particularly, the present invention is directed to controlling access to elements in a database object.
- In a Database Management System (DBMS), data is stored in tables made up of records (e.g., rows) having one or more fields (e.g., columns). A view is a logical construct imposed over a table and is defined by metadata in the DBMS known as a view definition. The view definition contains mappings to one or more rows and columns in one or more tables stored in a database. Tables and views are considered to be database objects.
- Fine-Grained Access Control (FGAC) is a mechanism by which the DBMS controls access to database object records and/or fields based on the identity of the user attempting to access the database object. FGAC complements the traditional Discretionary Access Control (DAC) implemented by many DBMS by allowing the DBMS to enforce two levels of access control: DAC is enforced at the object level (e.g., does the user have the right to access that table?) and FGAC is enforced at the element level (e.g., does the user have the right to access that row or column?).
- Traditional methods of implementing FGAC within DBMS have relied upon the use of views. A view can be used to alter or restrict the data seen by a user using the view to access the underlying table(s). Views, however, have a number of shortcomings. For example, when the number of different restrictions is numerous, view definitions may become quite complex in an effort to incorporate all of the restrictions in one view, which strains system limits and makes maintenance of the view difficult.
- Additionally, if a large number of simple views are desired, e.g., each one implementing a unique view of a table based on the restrictions for a specific set of users, the routing of user requests becomes difficult with the solution often being resolved within the database application rather than the DBMS. Furthermore, a user may be able to bypass the FGAC implemented through the views by accessing the base tables directly.
- Another known implementation of FGAC is the use of user attributes to modify queries by adding predicates into the queries. A predicate is a condition that must be satisfied for the DBMS to return a value. In this approach, the user attributes (e.g., user identifier) are compared against a security policy defined within a procedure provided by the user on a table or view to make decisions regarding access to data. This approach allows row restrictions, traditionally handled by views, to be dynamically added to queries without requiring application modification.
- One drawback of the query modification approach is that it only allows the DBMS to control access at the row-level. Views still have to be used to control access at the column-level. Additionally, the approach requires user programming of a strictly defined “predicate producing” procedure in order to implement a security policy. Moreover, query modification interferes with dynamic query caching because the modified queries will no longer match the original text of the queries, which makes query matching problematic and impacts the performance benefits of caching.
- Further, the solutions described above fail to address the requirements from emerging privacy applications. Generally, a privacy policy indicates who can access what information, for what purpose, and resulting in what obligations. For example, a user John Doe may be allowed to access the credit card column from a customer table if he is using the billing application to process a customer order, but he may not be allowed to access that column for the purpose of sending marketing information to the customer. Existing FGAC solutions cannot address this requirement because they either do not support controlling access at the column level or they provide control access at the column level, but only for columns that have been statically defined (i.e., view-based techniques). Hence, a user is always restricted to a set of columns, regardless of the purpose for which he or she is accessing those columns.
- Privacy applications are only one example where such flexibility is needed. Recent user requirements in the area of database security indicate that there is a need for database vendors to provide the notion of a session context. A session context is uniquely identified by a set of session attributes that may include the ID of the user who established that session, the IP address of the computer from which the user initiated the session, as well as other attributes as dictated by a particular implementation or scenario. Within a particular context, a user can have one or more privileges on one or more database objects that are not necessarily available to them within a different context. Thus, it is only natural that the next logical user requirement would be to allow certain columns to be accessible within one context, but not within another context. Currently, the only way to accomplish this would be to define a set of views that restrict access to certain columns and grant access on those views to users depending on their session context. Maintaining several views, however, has the same drawbacks mentioned earlier.
- Accordingly, there is a need for a flexible mechanism to control access to elements in a database object based on one or more dynamic conditions, such as a session context or an access purpose without requiring the creation and maintenance of static views or the modification of queries. The present invention addresses such a need.
- A method, computer program product, and system for controlling access to elements in a database object are provided. In this document, a group of one or more users is denoted as a user group and a set of one or more of the elements in a database object is denoted as an element set in the database object. The method, computer program product, and system provide for receiving a request from a user to access the database object, determining whether an access restriction is imposed on the database object, the access restriction specifying a first user group to which the access restriction is applicable, defining a first dynamic condition the first user group must satisfy in order to access the database object, and identifying a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied, and controlling access to the elements in the database object by the user based on the access restriction.
- Controlling access to elements in a database object using access restrictions, rather than views or modified queries, eliminates the worries concerning the creation and maintenance of complex views, the users bypassing restrictions by accessing underlying tables directly, the difficulties associated with routing user requests when there is a large number of views, the ability to control access at both the row and column level, the need to program strictly defined “predicate producing” procedures, and the problems of dynamic query caching interferences. In addition, because the access restrictions are defined using one or more dynamic conditions, the flexibility needed to address current privacy and security concerns is achieved.
- Particular implementations can include controlling access to the elements in the database object by confirming whether the user is in the first user group when the access restriction is imposed on the database object, verifying whether the user satisfies the first dynamic condition when the user is in the first user group, and allowing the user to access the first element set when the user satisfies the first dynamic condition.
- Verifying whether the user satisfies the first dynamic condition may include obtaining one or more session variables associated with the user when the user is in the first user group and comparing the one or more session variable associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition. In an implementation, allowing the user to access the first element set in the database object comprises generating a dynamic pseudo-view of the database object comprising only the first element set in the database object when the user satisfies the first dynamic condition and responding to the request from the user using the dynamic pseudo-view of the database object.
- In some embodiments, the database object is a table or a view, at least one element in the first element set is a column, the first dynamic condition is a session context or a session purpose associated with a user in the first user group, and the access restriction is stored in a database. Additionally, the access restriction can further define an additional dynamic condition the first user group must satisfy in order to access the first element set.
- In other implementations, the access restriction further defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and further identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied. At least one element in the first element set may also be an element in the second element set.
- Further aspects may include determining whether another access restriction is imposed on the database object, the other access restriction specifying a second user group to which the other access restriction is applicable. The other access restriction can also define another dynamic condition the second user group must satisfy in order to access the database object and identify another element set in the database object accessible to the second user group when the other dynamic condition is satisfied. In one embodiment, at least one user in the first user group is also a user in the second user group.
- Another implementation also includes deciding whether an exception to the access restriction is applicable to the user requesting access to the database object and permitting the user to access the elements in the database object when the exception to the access restriction is applicable to the user.
-
FIG. 1 is a process flow of a method for controlling access to elements in a database object according to an aspect of the invention. -
FIG. 2 illustrates a system according to one embodiment of the invention. -
FIGS. 3-5 depict flowcharts of methods for controlling access to elements in a database object according to various implementations of the invention. -
FIG. 6 shows a sample database object and exemplary dynamic pseudo-views generated based on the sample database object according to one aspect of the invention. -
FIG. 7 is a block diagram of a data processing system with which embodiments of the present invention can be implemented. - The present invention relates generally to database systems and more particularly to controlling access to elements in a database object. The following description is presented to enable one of ordinary skill in the art to make and use the invention. Various modifications to the preferred implementations and the generic principles and features described herein will be readily apparent to those skilled in the art. Thus, the present invention is not intended to be limited to the implementations shown, but is to be accorded the widest scope consistent with the principles and features described herein.
-
FIG. 1 depicts aprocess 100 for controlling access to elements in a database object. At 102, a request to access the database object is received from a user. A determination is then made at 104 as to whether an access restriction is imposed on the database object. In an embodiment, the access restriction specifies a first user group comprising one or more users to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set comprising one or more of the elements in the database object accessible to the first user group when the first dynamic condition is satisfied. In this document, a group of one or more users is denoted as a user group and a set of one or more of the elements in a database object is denoted as an element set in the database object. - Access to the elements in the database object by the user is controlled based on the access restriction when the access restriction is imposed on the database object and the user is in the first user group (106). In some implementations, the database object is a table or a view, at least one element in the first element set is a column, and the first dynamic condition is a session context or a session purpose associated with a user in the first user group.
- A session purpose could be determined based on the type of application the user is employing when requesting access to the database object, for example, a purchasing application or a marketing application. A session context could be the location from which the user is requesting access to the database object, for instance, from the office or at home. The location may be determined based on the IP address of the computer from which the user is requesting access.
- Session context and session purpose are just two examples of dynamic conditions. A dynamic condition can also be a function. For example, the condition can be “F (current time) is TRUE” where “F” is a function that compares the current time to the time of the day when access can be granted.
- Illustrated in
FIG. 2 is asystem 200 including aserver 202 interconnected to clients 210-1 to 210-n via anetwork 208.Server 202 and clients 210-1 to 210-n may be any data processing system, such as computers, workstations, and handheld portable devices. In addition,system 200 may include more or less clients in other embodiments.Network 208 may be the Internet or World Wide Web (WWW) in some implementations. -
System 200 also includes adatabase 204 andresources 206 a-206 b. Each resource may be a storage media, a database, a set of XML (eXtensible Markup Language) documents, a directory service, such as LDAP (Lightweight Directory Access Protocol) server, or a backend system. Other embodiments ofsystem 200 may include more or less databases and/or resources. -
Database 204 andresources 206 a-206 b are coupled toserver 202. The interface betweenserver 202 anddatabase 204 andresources 206 a-206 b may be a local area network, Internet, a proprietary interface, or any combination of the foregoing. Clients 210-1 to 210-n can accessdatabase 204 andresources 206 a-206 b throughserver 202. Any ofserver 202,database 204,resources 206 a-206 b, and clients 210-1 to 210-n may be located remotely from one another or may share a location. - The configuration of
system 200 is not intended as a limitation of the present invention, as will be understood by those of ordinary skill in the art from a review of the following detailed description. For example,network 208 may comprise a wireless link, a telephone communication, a radio communication, or a computer network (e.g., a Local Area Network (LAN) or a Wide Area Network (WAN)). - In one implementation,
database 204 is operable to store a database object comprising a plurality of elements andserver 202 is operable to receive a request from a user to access the database object. The request may be submitted by the user through one of clients 210-1 to 210-n.Server 202 is also operable to determine whether an access restriction is imposed on the database object. The access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied. -
Server 202 is then operable to control access to the elements in the database object by the user based on the access restriction when the access restriction is imposed on the database object and the user is in the first user group. In some embodiments,database 204 is further operable to store the access restriction. The access restriction may be stored in a catalog of database 204 (not shown). -
FIG. 3 shows aprocess 300 for controlling access to elements in the database object according to an aspect of the invention. A request to access the database object is received from a user at 302. At 304, a determination is made as to whether an access restriction is imposed on the database object. The access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition and an additional dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition and the additional dynamic condition are satisfied. - If no access restriction is imposed on the database object, the user is permitted to access the elements in the database object (306). However, if the access restriction is imposed on the database object,
process 300 confirms whether the user is in the first user group to which the access restriction is applicable (308). When the user is not in the first user group,process 300 proceeds to 306 and the user is permitted to access the elements in the database object. - When the user is in the first user group,
process 300 verifies whether the user satisfies the first dynamic condition (310). If the user does not satisfy the first dynamic condition, the user is prohibited from accessing the elements in the database object (312). If the user does satisfy the first dynamic condition,process 300 verifies whether the user satisfies the additional dynamic condition (314). When the user fails to satisfy the additional dynamic condition,process 300 proceeds to 312 and prohibits the user from accessing the elements in the database object. - A dynamic pseudo-view of the database object comprising only the first element set is generated when the user satisfies the first dynamic condition and the additional dynamic condition (316). The request from the user is then responded to using the dynamic pseudo-view of the database object (318). A dynamic pseudo-view is a view-like entity with attributes similar to a predefined regular view. However, because it is dynamically created, it does not exist in a database, such as
database 204 inFIG. 2 , and has no dependencies. - Depicted in
FIG. 4 is anotherprocess 400 for controlling access to elements in a database object. At 402, a request is received from a user to access the database object. A determination is then made at 404 as to whether an access restriction is imposed on the database object. The access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied. - In the embodiment, the access restriction also defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied. In some implementations, at least one element in the first element set is also an element in the second element set.
- When no access restrictions are imposed on the database object, the user is permitted to access the elements in the database object (406). When the access restriction is imposed on the database object,
process 400 confirms whether the user is in the first user group (408). If the user is not in the first user group,process 400 proceeds to 406 and permits the user to access the elements in the database object. - If the user is in the first user group, one or more session variables associated with the user is obtained (410). In one embodiment, when the user establishes a session through some application, a session start trigger will populate one or more session variables associated with the user with the appropriate values based on information from the user and the application. The session start trigger is a program that is automatically executed when a session is established.
Process 400 then compares the one or more session variables associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition (412). - The user is allowed to access the first element set in the database object when the user satisfies the first dynamic condition, i.e., the one or more session variables match or correspond to the first dynamic condition (414). When the one or more session variables do not match the first dynamic condition,
process 400 compares them to the second dynamic condition (416). If they also fail to match the second dynamic condition, the user is prohibited from accessing the elements in the database object (418). However, if the one or more session variables associated with the user match the second dynamic condition, the user is allowed to access the second element set in the database object (420). -
FIG. 5 illustrates aprocess 500 for controlling access to elements in a database object according to a further embodiment of the invention. A request to access the database object is received from a user at 502. A determination is then made at 504 as to whether an access restriction has been imposed on the database object. The access restriction specifies a first user group to which the access restriction is applicable, defines a first dynamic condition the first user group must satisfy in order to access the database object, and identifies a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied. - If no access restrictions are imposed on the database object, the user is permitted to access the elements in the database object (506). If, however, the access restriction has been imposed on the database object,
process 500 decides whether an exception to the access restriction is applicable to the user requesting access to the database object (508). When the exception to the access restriction is applicable to the user atblock 508, a determination is made as to whether another access restriction is imposed on the database object, the other access restriction specifies a second user group to which the other access restriction is applicable (510). In an implementation, at least one user in the first user group is also a user in the second user group. - The other access restriction may further define another dynamic condition the second user group must satisfy in order to access the database object and identify another element set in the database object accessible to the second user group when the other dynamic condition is satisfied. Additionally, the other element set in the database object may be a subset of the first element set.
-
Process 500 will proceed to 506 to permit the user to access the elements in the database object when no other access restrictions are imposed on the database object. However, it will decide whether an exception to the other access restriction is applicable to the user requesting access to the database object when the other access restriction is also imposed on the database object (512). The user is permitted to access the elements in the database object if the exception to the other access restriction is applicable to the user (506). In contrast, access to the elements in the database object by the user is controlled based on the other access restriction if the exception to the other access restriction is inapplicable to the user (514). - When the exception to the access restriction is not applicable to the user at
block 508, a determination is made as to whether another access restriction is imposed on the database object (516). If no other access restrictions are imposed on the database object, access to the elements in the database object by the user is controlled based on the access restriction (518). However, if another access restriction is imposed on the database object,process 500 will decide whether an exception to the other access restriction is applicable to the user requesting access to the database object (520). - Access to the elements in the database object by the user will be controlled based on the access restriction when the exception to the other access restriction is applicable to the user (518). Conversely, access to the elements in the database object by the user will be controlled based on both access restrictions when the exception to the other access restriction is not applicable to the user (522).
- Shown in
FIG. 6 is asample database object 600 with elements 602-610.Database object 600 is a table called “customer data” with acolumn 602 for names, acolumn 604 for addresses, acolumn 606 for phone numbers, and acolumn 608 for credit card numbers. Table 600 has n number of rows 610-1 to 610-n. Embodiments of the present invention enables access restrictions to be created such that it becomes possible to express which elements 602-610 indatabase object 600 are accessible by a user and under what condition. - For example, suppose a user named “Bob” is allowed to access
columns only columns -
- CREATE RESTRICTION r1
- ON TABLE customer data
- FOR Bob
- TO COLUMNS
- (name, address, credit card) WHEN (SessionVariablePurpose=‘Billing’)
- (name, address) WHEN (SessionVariablePurpose=‘Marketing’)
- Thus, when table 600 is queried by user Bob,
server 202 inFIG. 2 for example, can determine that an access restriction applies for user Bob.Server 202 may then look up a session variable “SessionVariablePurpose” associated with user Bob and read its value. If it is set to “Billing,”server 202 will implement access restriction “r1” in the query plan as if that restriction was statically defined as follows: -
- CREATE RESTRICTION r1
- ON TABLE customer data
- FOR Bob
- TO COLUMNS (name, address, credit card)
A dynamic pseudo-view 612 a of table 600 that is depicted inFIG. 6 can be generated to respond to user Bob's queries to table 600.
- However, if the value of the session variable “SessionVariablePurpose” was “Marketing,” then
server 202 will implement restriction “r1” in the query plan as if that restriction was statically defined as follows: -
- CREATE RESTRICTION r1
- ON TABLE customer data
- FOR Bob
- TO COLUMNS (name, address)
Adynamic pseudo-view 612 b of table 600, which is illustrated inFIG. 6 , will be generated to respond to user Bob's queries on table 600. For more information regarding the creation and use of access restrictions, see “A Method for Implementing Fine-Grained Access Control Using Access Restrictions,” U.S. patent application Ser. No. 10/837,387, filed on Apr. 30, 2004, which is hereby incorporated by reference in its entirety for all purposes.
- The invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. In one aspect, the invention is implemented in software, which includes, but is not limited to, firmware, resident software, microcode, etc.
- Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer-readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, and an optical disk. Current examples of optical disks include DVD, compact disk-read-only memory (CD-ROM), and compact disk-read/write (CD-R/W).
-
FIG. 7 depicts adata processing system 700 suitable for storing and/or executing program code.Data processing system 700 includes aprocessor 702 coupled to memory elements 704 a-b through asystem bus 706. In other embodiments,data processing system 700 may include more than one processor and each processor may be coupled directly or indirectly to one or more memory elements through a system bus. - Memory elements 704 a-b can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times the code must be retrieved from bulk storage during execution. As shown, input/output or I/O devices 708 a-b (including, but not limited to, keyboards, displays, pointing devices, etc.) are coupled to
data processing system 700. I/O devices 708 a-b may be coupled todata processing system 700 directly or indirectly through intervening I/O controllers (not shown). - In the embodiment, a
network adapter 710 is coupled todata processing system 700 to enabledata processing system 700 to become coupled to other data processing systems or remote printers or storage devices throughcommunication link 712.Communication link 712 can be a private or public network. Modems, cable modems, and Ethernet cards are just a few of the currently available types of network adapters. - Various implementations for controlling access to elements in a database object have been described. Nevertheless, one of ordinary skill in the art will readily recognize that various modifications may be made to the implementations, and any variations would be within the spirit and scope of the present invention. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the invention. Accordingly, many modifications may be made by one of ordinary skill in the art without departing from the spirit and scope of the following claims.
Claims (20)
1. A system comprising:
a database operable to store a database object, the database object comprising elements; and
a server coupled to the database, the server comprising a processor and a memory, the server being operable to:
receive a request from a user to access the database object;
determine whether an access restriction is imposed on the database object, the access restriction specifying a first user group to which the access restriction is applicable, defining a first dynamic condition the first user group must satisfy in order to access the database object, wherein the first dynamic condition is a function that compares a current time to a time of the day when access can be granted, and identifying a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied; and
control access to the elements in the database object by the user based on the access restriction, wherein controlling access to the elements in the database object comprises:
confirming whether the user is in the first user group when the access restriction is imposed on the database object;
verifying whether the user satisfies the first dynamic condition when the user is in the first user group; and
allowing the user to access the first element set when the user satisfies the first dynamic condition, wherein allowing the user to access the first element set comprises:
generating a dynamic pseudo-view of the database object comprising only the first element set when the user satisfies the first dynamic condition, wherein the dynamic pseudo-view is a view-like entity with attributes similar to a predefined regular view, wherein the dynamic pseudo-view does not exist in a database, wherein the dynamic pseudo-view does not have dependencies; and
responding to the request from the user using the dynamic pseudo-view of the database object.
2. The system of claim 1 wherein the database object is a table or a view.
3. The system of claim 1 wherein at least one element in the first element set is a column.
4. The system of claim 1 wherein the first dynamic condition is a session context or a session purpose associated with a user in the first user group.
5. The system of claim 1 wherein the server is further operable to:
obtain one or more session variables associated with the user when the user is in the first user group; and
compare the one or more session variables associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition.
6. The system of claim 1 wherein the access restriction further defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and further identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied.
7. The system of claim 6 wherein at least one element in the first element set is also an element in the second element set.
8. The system of claim 1 wherein the access restriction further defines an additional dynamic condition the first user group must satisfy in order to access the first element set.
9. The system of claim 1 wherein the server is further operable to:
determine whether another access restriction is imposed on the database object, the other access restriction specifying a second user group to which the other access restriction is applicable.
10. The system of claim 9 wherein the other access restriction further defines another dynamic condition the second user group must satisfy in order to access the database object and identifies another element set in the database object accessible to the second user group when the other dynamic condition is satisfied.
11. The system of claim 10 wherein the other element set is a subset of the first element set.
12. The system of claim 9 wherein at least one user in the first user group is also a user in the second user group.
13. The system of claim 1 wherein the server is further operable to:
decide whether an exception to the access restriction is applicable to the user requesting access to the database object; and
permit the user to access the elements in the database object when the exception to the access restriction is applicable to the user.
14. A computer program product comprising a computer-readable storage medium, the computer-readable storage medium including a computer-readable program for controlling access to elements in a database object, wherein the computer-readable program when executed on a computer causes the computer to:
receive a request from a user to access the database object;
determine whether an access restriction is imposed on the database object, the access restriction specifying a first user group to which the access restriction is applicable, defining a first dynamic condition the first user group must satisfy in order to access the database object, wherein the first dynamic condition is a function that compares a current time to a time of the day when access can be granted, and identifying a first element set in the database object accessible to the first user group when the first dynamic condition is satisfied; and
control access to the elements in the database object by the user based on the access restriction, wherein controlling access to the elements in the database object comprises:
confirming whether the user is in the first user group when the access restriction is imposed on the database object;
verifying whether the user satisfies the first dynamic condition when the user is in the first user group; and
allowing the user to access the first element set when the user satisfies the first dynamic condition, wherein allowing the user to access the first element set comprises:
generating a dynamic pseudo-view of the database object comprising only the first element set when the user satisfies the first dynamic condition, wherein the dynamic pseudo-view is a view-like entity with attributes similar to a predefined regular view, wherein the dynamic pseudo-view does not exist in a database, wherein the dynamic pseudo-view does not have dependencies; and
responding to the request from the user using the dynamic pseudo-view of the database object.
15. The computer program product of claim 14 wherein the database object is a table or a view.
16. The computer program product of claim 14 wherein at least one element in the first element set is a column.
17. The computer program product of claim 14 wherein the first dynamic condition is a session context or a session purpose associated with a user in the first user group.
18. The computer program product of claim 14 wherein verifying whether the user satisfies the first dynamic condition comprises:
obtaining one or more session variables associated with the user when the user is in the first user group; and
comparing the one or more session variables associated with the user to the first dynamic condition to determine whether the user satisfies the first dynamic condition.
19. The computer program product of claim 14 wherein the access restriction further defines a second dynamic condition the first user group must alternatively satisfy in order to access the database object and further identifies a second element set in the database object accessible to the first user group when the second dynamic condition is satisfied.
20. The computer program product of claim 14 wherein at least one element in the first element set is also an element in the second element set.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/138,312 US20080275880A1 (en) | 2005-12-12 | 2008-06-12 | Access control for elements in a database object |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/299,857 US7865521B2 (en) | 2005-12-12 | 2005-12-12 | Access control for elements in a database object |
US12/138,312 US20080275880A1 (en) | 2005-12-12 | 2008-06-12 | Access control for elements in a database object |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/299,857 Continuation US7865521B2 (en) | 2005-12-12 | 2005-12-12 | Access control for elements in a database object |
Publications (1)
Publication Number | Publication Date |
---|---|
US20080275880A1 true US20080275880A1 (en) | 2008-11-06 |
Family
ID=37735273
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/299,857 Expired - Fee Related US7865521B2 (en) | 2005-12-12 | 2005-12-12 | Access control for elements in a database object |
US12/138,312 Abandoned US20080275880A1 (en) | 2005-12-12 | 2008-06-12 | Access control for elements in a database object |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/299,857 Expired - Fee Related US7865521B2 (en) | 2005-12-12 | 2005-12-12 | Access control for elements in a database object |
Country Status (2)
Country | Link |
---|---|
US (2) | US7865521B2 (en) |
WO (1) | WO2007068546A1 (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136291A1 (en) * | 2005-12-12 | 2007-06-14 | Bird Paul M | Access control for elements in a database object |
US20100145979A1 (en) * | 2008-12-08 | 2010-06-10 | Continental Airlines, Inc. | Geospatial data interaction |
US20110289547A1 (en) * | 2010-05-20 | 2011-11-24 | International Business Machines Corporation | Taking configuration management data and change business process data into account with regard to authorization and authentication rules |
US20120233148A1 (en) * | 2011-03-09 | 2012-09-13 | International Business Machines Corporation | Managing materialized query tables (mqts) over fine-grained access control (fgac) protected tables |
WO2015012867A1 (en) * | 2013-07-26 | 2015-01-29 | Hewlett Packard Development Company, L.P. | Data view based on context |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8600964B2 (en) * | 2007-09-28 | 2013-12-03 | Avaya Inc. | Methods and apparatus for providing customer treatment information over a network |
US8478782B1 (en) * | 2008-05-08 | 2013-07-02 | Salesforce.Com, Inc. | System, method and computer program product for sharing tenant information utilizing a multi-tenant on-demand database service |
US20090300019A1 (en) * | 2008-05-30 | 2009-12-03 | Schumberger Technology Corporation | Hierarchical item level entitlement |
US9753737B2 (en) * | 2010-02-03 | 2017-09-05 | Oracle International Corporation | Declarative attribute security using custom properties |
US8713043B2 (en) | 2010-03-01 | 2014-04-29 | Salesforce.Com, Inc. | System, method and computer program product for sharing a single instance of a database stored using a tenant of a multi-tenant on-demand database system |
US10296596B2 (en) * | 2010-05-27 | 2019-05-21 | Varonis Systems, Inc. | Data tagging |
WO2012053040A1 (en) * | 2010-10-22 | 2012-04-26 | Hitachi, Ltd. | File server for migration of file and method for migrating file based on file's attributes and storage apparatuses ' attributes |
US8983985B2 (en) | 2011-01-28 | 2015-03-17 | International Business Machines Corporation | Masking sensitive data of table columns retrieved from a database |
US8930410B2 (en) | 2011-10-03 | 2015-01-06 | International Business Machines Corporation | Query transformation for masking data within database objects |
US20150237400A1 (en) * | 2013-01-05 | 2015-08-20 | Benedict Ow | Secured file distribution system and method |
GB2522918A (en) * | 2014-02-11 | 2015-08-12 | Ibm | Adaptive access control in relational database system |
US10176341B2 (en) * | 2016-03-18 | 2019-01-08 | Oracle International Corporation | Systems and methods for providing data residency protection using remote proxies |
US10713246B2 (en) * | 2017-06-22 | 2020-07-14 | Sap Se | Column based data access controls |
US10909266B2 (en) * | 2017-10-24 | 2021-02-02 | Merck Sharp & Dohme Corp. | Adaptive model for database security and processing |
US11048815B2 (en) * | 2018-08-06 | 2021-06-29 | Snowflake Inc. | Secure data sharing in a multi-tenant database system |
US11163904B2 (en) * | 2018-09-04 | 2021-11-02 | International Business Machines Corporation | Fine-grained access control to datasets |
US20220319645A1 (en) * | 2021-03-31 | 2022-10-06 | Change Healthcare Holdings Llc | Methods, systems, and computer program products for sharing health care information with delegated entities using discretionary and non-discretionary access rules |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815574A (en) * | 1994-12-15 | 1998-09-29 | International Business Machines Corporation | Provision of secure access to external resources from a distributed computing environment |
US6026388A (en) * | 1995-08-16 | 2000-02-15 | Textwise, Llc | User interface and other enhancements for natural language information retrieval system and method |
US6085191A (en) * | 1997-10-31 | 2000-07-04 | Sun Microsystems, Inc. | System and method for providing database access control in a secure distributed network |
US6308273B1 (en) * | 1998-06-12 | 2001-10-23 | Microsoft Corporation | Method and system of security location discrimination |
US6321334B1 (en) * | 1998-07-15 | 2001-11-20 | Microsoft Corporation | Administering permissions associated with a security zone in a computer system security model |
US6321235B1 (en) * | 1998-09-29 | 2001-11-20 | International Business Machines Corporation | Global caching and sharing of SQL statements in a heterogeneous application environment |
US6424974B1 (en) * | 1997-03-31 | 2002-07-23 | International Business Machines Corporation | Storing P-code in a database |
US6487552B1 (en) * | 1998-10-05 | 2002-11-26 | Oracle Corporation | Database fine-grained access control |
US20030046550A1 (en) * | 2001-09-05 | 2003-03-06 | International Business Machines Corporation | Dynamic control of authorization to access internet services |
US6643633B2 (en) * | 1999-12-02 | 2003-11-04 | International Business Machines Corporation | Storing fragmented XML data into a relational database by decomposing XML documents with application specific mappings |
US20040139043A1 (en) * | 2003-01-13 | 2004-07-15 | Oracle International Corporation | Attribute relevant access control policies |
US20050246338A1 (en) * | 2004-04-30 | 2005-11-03 | International Business Machines Corporation | Method for implementing fine-grained access control using access restrictions |
US20070033196A1 (en) * | 2005-08-02 | 2007-02-08 | Sap Ag | Service directory |
US20070038596A1 (en) * | 2005-08-15 | 2007-02-15 | Microsoft Corporation | Restricting access to data based on data source rewriting |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7133875B1 (en) * | 2002-04-12 | 2006-11-07 | Oracle International Corporation | Method and apparatus for redefining a group of related objects in a relational database system |
US7865521B2 (en) | 2005-12-12 | 2011-01-04 | International Business Machines Corporation | Access control for elements in a database object |
-
2005
- 2005-12-12 US US11/299,857 patent/US7865521B2/en not_active Expired - Fee Related
-
2006
- 2006-11-15 WO PCT/EP2006/068524 patent/WO2007068546A1/en active Application Filing
-
2008
- 2008-06-12 US US12/138,312 patent/US20080275880A1/en not_active Abandoned
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815574A (en) * | 1994-12-15 | 1998-09-29 | International Business Machines Corporation | Provision of secure access to external resources from a distributed computing environment |
US6026388A (en) * | 1995-08-16 | 2000-02-15 | Textwise, Llc | User interface and other enhancements for natural language information retrieval system and method |
US6424974B1 (en) * | 1997-03-31 | 2002-07-23 | International Business Machines Corporation | Storing P-code in a database |
US6085191A (en) * | 1997-10-31 | 2000-07-04 | Sun Microsystems, Inc. | System and method for providing database access control in a secure distributed network |
US6308273B1 (en) * | 1998-06-12 | 2001-10-23 | Microsoft Corporation | Method and system of security location discrimination |
US6321334B1 (en) * | 1998-07-15 | 2001-11-20 | Microsoft Corporation | Administering permissions associated with a security zone in a computer system security model |
US6321235B1 (en) * | 1998-09-29 | 2001-11-20 | International Business Machines Corporation | Global caching and sharing of SQL statements in a heterogeneous application environment |
US6487552B1 (en) * | 1998-10-05 | 2002-11-26 | Oracle Corporation | Database fine-grained access control |
US6643633B2 (en) * | 1999-12-02 | 2003-11-04 | International Business Machines Corporation | Storing fragmented XML data into a relational database by decomposing XML documents with application specific mappings |
US6721727B2 (en) * | 1999-12-02 | 2004-04-13 | International Business Machines Corporation | XML documents stored as column data |
US20030046550A1 (en) * | 2001-09-05 | 2003-03-06 | International Business Machines Corporation | Dynamic control of authorization to access internet services |
US20040139043A1 (en) * | 2003-01-13 | 2004-07-15 | Oracle International Corporation | Attribute relevant access control policies |
US20050246338A1 (en) * | 2004-04-30 | 2005-11-03 | International Business Machines Corporation | Method for implementing fine-grained access control using access restrictions |
US20070033196A1 (en) * | 2005-08-02 | 2007-02-08 | Sap Ag | Service directory |
US20070038596A1 (en) * | 2005-08-15 | 2007-02-15 | Microsoft Corporation | Restricting access to data based on data source rewriting |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136291A1 (en) * | 2005-12-12 | 2007-06-14 | Bird Paul M | Access control for elements in a database object |
US7865521B2 (en) | 2005-12-12 | 2011-01-04 | International Business Machines Corporation | Access control for elements in a database object |
US20100145979A1 (en) * | 2008-12-08 | 2010-06-10 | Continental Airlines, Inc. | Geospatial data interaction |
US8250052B2 (en) * | 2008-12-08 | 2012-08-21 | Continental Airlines, Inc. | Geospatial data interaction |
US20110289547A1 (en) * | 2010-05-20 | 2011-11-24 | International Business Machines Corporation | Taking configuration management data and change business process data into account with regard to authorization and authentication rules |
US8453256B2 (en) * | 2010-05-20 | 2013-05-28 | International Business Machines Corporation | Taking configuration management data and change business process data into account with regard to authorization and authentication rules |
US20130152164A1 (en) * | 2010-05-20 | 2013-06-13 | International Business Machines Corporation | Taking Configuration Management Data and Change Business Process Data Into Account With Regard to Authorization and Authentication Rules |
US8990957B2 (en) * | 2010-05-20 | 2015-03-24 | International Business Machines Corporation | Taking configuration management data and change business process data into account with regard to authorization and authentication rules |
US20120233148A1 (en) * | 2011-03-09 | 2012-09-13 | International Business Machines Corporation | Managing materialized query tables (mqts) over fine-grained access control (fgac) protected tables |
US8515948B2 (en) * | 2011-03-09 | 2013-08-20 | International Business Machines Corporation | Managing materialized query tables (MQTS) over fine-grained access control (FGAC) protected tables |
WO2015012867A1 (en) * | 2013-07-26 | 2015-01-29 | Hewlett Packard Development Company, L.P. | Data view based on context |
US10027632B2 (en) | 2013-07-26 | 2018-07-17 | Hewlett Packard Enterprise Development Lp | Data view based on context |
Also Published As
Publication number | Publication date |
---|---|
US7865521B2 (en) | 2011-01-04 |
WO2007068546A1 (en) | 2007-06-21 |
US20070136291A1 (en) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20080275880A1 (en) | Access control for elements in a database object | |
US7356840B1 (en) | Method and system for implementing security filters for reporting systems | |
US7630974B2 (en) | Multi-language support for enterprise identity and access management | |
US10108813B2 (en) | Query conditions-based security | |
US9870483B2 (en) | Row-level security in a relational database management system | |
US7299171B2 (en) | Method and system for processing grammar-based legality expressions | |
US7478094B2 (en) | High run-time performance method for setting ACL rule for content management security | |
US7206851B2 (en) | Identifying dynamic groups | |
US7711750B1 (en) | Systems and methods that specify row level database security | |
US7904487B2 (en) | Translating data access requests | |
KR101120814B1 (en) | Systems and methods that optimize row level database security | |
US7114037B2 (en) | Employing local data stores to maintain data during workflows | |
US8375113B2 (en) | Employing wrapper profiles | |
EP2405607B1 (en) | Privilege management system and method based on object | |
JP4892179B2 (en) | Zone-based security management for data items | |
US8051168B1 (en) | Method and system for security and user account integration by reporting systems with remote repositories | |
US20150135296A1 (en) | Catalog driven order management for rule definition | |
US20050289342A1 (en) | Column relevant data security label | |
US20070038596A1 (en) | Restricting access to data based on data source rewriting | |
US20080059479A1 (en) | Method and apparatus for invoking a plug-in on a server | |
US7801967B1 (en) | Method and system for implementing database connection mapping for reporting systems | |
US7832015B2 (en) | Method and system for providing access to computer resources that utilize distinct protocols for receiving security information and providing access based on received security information | |
US20060167850A1 (en) | System and method for providing secure access to data with user defined table functions | |
US11372859B2 (en) | Efficiently supporting value style access of MOBs stored in SQL LOB column by providing value based semantics for LOBs in RDBMS | |
KR20010064809A (en) | User Access Control Method in Access Control System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BIRD, PAUL MILLER;RJAIBI, WALID;REEL/FRAME:021089/0730 Effective date: 20051205 |
|
STCB | Information on status: application discontinuation |
Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION |