IP Library › Granted Patent US 8,667,018
Granted Patent B2
US 8,667,018 · App. 12/188,675 · Granted Mar 4, 2014

Method and system for optimizing row level security in database systems

Inventors: Mohammed Irfan Rafiq (Mountain View, CA); Chon Hei Lei (Alameda, CA); Vikram Kapoor (Cupertino, CA); Thomas F. Keefe (Mill Valley, CA); Nipun Agarwal (Santa Clara, CA); Thomas Baby (Maple Valley, WA); Sam Idicula (Santa Clara, CA); Vikram Reddy Pesati (San Jose, CA)
Assignee: Oracle International Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,667,018
App. No.
12/188,675
Granted
Mar 4, 2014
Kind
B2
Abstract

One embodiment of the present invention provides a system that implements a security policy in a database. During operation, the system receives a request associated with a set of objects in the database. Next, the system obtains a set of access control lists (ACLs) associated with the database, wherein a respective ACL specifies one or more access privileges associated with a user or user group, and wherein a respective ACLs is not specific to a particular object in the database. The system then evaluates the ACLs to obtain a set of ACL results associated with the request and processes the request by applying the set of ACL results to the objects without evaluating the ACLs repeatedly for each of the objects.

Claims (73)

1. A computer-implemented method for implementing a security policy in a database, comprising:

receiving a request associated with a first table row and a second table row in a database table;

obtaining a set of access control lists (ACLs) associated with the database;

evaluating the ACLs to obtain a corresponding set of ACL results associated with the database;

storing the ACL results;

applying a set of predicates to the stored ACL results and the first table row to obtain a first access privilege for the first table row, wherein a predicate determines the relevance of a corresponding ACL result to one or more rows of the database table;

applying the predicates to the stored ACL results and the second table row to obtain a second access privilege for the second table row, without re-evaluating the ACLs, thereby allowing evaluation of access privileges for the first and second table rows without repeatedly evaluating the ACLs; and

producing a result in response to the request.

2. The computer-implemented method of claim 1 , wherein obtaining the ACL results involves:

storing the ACL results in a bitmap; and

providing the bitmap for subsequent retrieval of the ACL results.

3. The computer-implemented method of claim 2 , wherein an ACL result is stored in the bitmap as a grant, a deny, an irrelevant, or an unknown.

4. The computer-implemented method of claim 1 , wherein applying the set of predicates to the stored ACL results and the second table row involves:

obtaining a predicate associated with an ACL;

evaluating the predicate based on the second table row; and

determining access privileges for the request based on the evaluated predicate and a stored ACL result for the ACL.

5. The computer-implemented method of claim 4 , wherein the first and second access privileges are associated with at least one of a read privilege, a write privilege, and an execute privilege.

6. The computer-implemented method of claim 4 , wherein the first and second access privileges are determined based on an order of the ACL results.

7. The computer-implemented method of claim 1 , wherein the request corresponds to a database query.

8. The computer-implemented method of claim 1 ,

wherein an ACL result is based on a security context associated with the request, and

wherein the security context corresponds to at least one of session information associated with the request, a user associated with the request, and a role of the user.

9. A system for implementing a security policy in a database, comprising:

a processor;

a memory;

a security repository comprising a set of access control lists (ACLs) associated with the database;

a request manager configured to:

receive a request associated with a first table row and a second table row in a database table; and

obtain the ACLs associated with the database;

a security manager configured to:

evaluate the ACLs to obtain a corresponding set of ACL results associated with the database;

store the ACL results;

apply a set of predicates to the stored ACL results and the first table row to obtain a first access privilege for the first table row, wherein a predicate determines the relevance of a corresponding ACL result to one or more rows of the database table; and

apply the predicates to the stored ACL results and the second table row to obtain a second access privilege for the second table row, without re-evaluating the ACLs, thereby allowing evaluation of access privileges for the first and second table rows without repeatedly evaluating the ACLs; and

an output manager configured to produce a result in response to the request.

10. The system of claim 9 , wherein the security manager is configured to obtain the ACL results by:

storing the ACL results in a bitmap; and

providing the bitmap for subsequent retrieval of the ACL results.

11. The system of claim 10 , wherein an ACL result is stored in the bitmap as a grant, a deny, an irrelevant, or an unknown.

12. The system of claim 9 , wherein the security manager is configured to apply the set of predicates to the stored ACL results and the second table row by:

obtaining a predicate associated with an ACL;

evaluating the predicate based on the second table row; and

determining access privileges for the request based on the evaluated predicate and a stored ACL result for the ACL.

13. The system of claim 12 , wherein the first and second access privileges are associated with at least one of a read privilege, a write privilege, and an execute privilege.

14. The system of claim 12 , wherein the first and second access privileges are determined based on an order of the ACL results.

15. The system of claim 9 ,

wherein the security manager corresponds to a query optimizer, and

wherein the request corresponds to a database query.

16. The system of claim 9 ,

wherein an ACL result is based on a security context associated with the request, and

wherein the security context corresponds to at least one of session information associated with the request, a user associated with the request, and a role of the user.

17. A computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for implementing a security policy, the method comprising:

receiving a request associated with a first table row and a second table row in a database table;

obtaining a set of access control lists (ACLs) associated with the database;

evaluating the ACL to obtain a corresponding set of ACL results associated with the database;

storing the ACL results;

applying a set of predicates to the stored ACL results and the first table row to obtain a first access privilege for the first table row, wherein a predicate determines the relevance of a corresponding ACL result to one or more rows of the database table;

applying the predicates to the stored ACL results and the second table row to obtain a second access privilege for the second table row, without re-evaluating the ACLs, thereby allowing evaluation of access privileges for the first and second table rows without repeatedly evaluating the ACLs; and

producing a result in response to the request.

18. The computer-readable storage medium of clam 17 , wherein obtaining the ACL results involves:

storing the ACL results in a bitmap; and

providing the bitmap for subsequent retrieval of the ACL results.

19. The computer-readable storage medium of claim 18 , wherein an ACL result is stored in the bitmap as a grant, a deny, an irrelevant, or an unknown.

20. The computer-readable storage medium of claim 17 , wherein applying the set of predicates to the stored ACL results and the second table row involves:

obtaining a predicate associated with an ACL;

evaluating the predicate based on the second table row; and

determining access privileges for the request based on the evaluated predicate and a stored ACL result for the ACL.

21. The computer-readable storage medium of claim 20 , wherein the access privilege is associated with at least one of a read privilege, a write privilege, and an execute privilege.

22. The computer-readable storage medium of claim 20 , wherein the first and second access privileges are determined based on an order of the ACL results.

23. The computer-readable storage medium of claim 17 , wherein the request corresponds to a database query.

24. The computer-readable storage medium of claim 17 ,

wherein an ACL result is based on a security context associated with the request, and

wherein the security context corresponds to at least one of session information associated with the request, a user associated with the request, and a role of the user.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2008
From: RAFIQ, MOHAMMED IRFAN; LEI, CHON HEI; KAPOOR, VIKRAM; KEEFE, THOMAS F.; AGARWAL, NIPUN; BABY, THOMAS; IDICULA, SAM; PESATI, VIKRAM REDDY
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 021587/0561 →
Continuity (1)
Related Publication 20100036846A1 · Feb 11, 2010