1.0 Field of the Invention
This invention relates to access control, and in particular, to an access control technique for resolving grants to users and groups of users on objects and groups of objects.
2.0 Description of the Related Art
In a computer system, users are granted access rights as to which objects, such as files and folders, they may access. Users may be grouped into an access group. An access group has one or more users which are members. Access rights can be granted to individual users and to access groups. In addition, an access group can be a member of one or more other access groups. Objects may be grouped into collections, and a collection has one or more objects which are members. Access rights can also be granted to individual objects and to collections. A collection can also be a member of one or more other collections. A record of a grant is made when a grant occurs, and is removed when a “revoke” occurs. An access control system typically manages the access rights. To determine the access rights that a user has to an object, in addition to considering the user and the object, the access control system considers the access groups of which the user is a member and the collections of which the object is a member.
Multiple levels of access may be granted. In one conventional access control system, each level of access granted encompasses a set of abilities, such as get properties, set properties and delete object, rather than a single ability, and the levels of access have a strict ordering such that the abilities of each level are a superset of the abilities of the next lower level. For example, the levels may be—“Full,” “Write,” “Read,” and “None.” “Full” level access provides the ability to delete plus all the abilities of “Write” level access. “Write” level access provides the ability to set properties plus the abilities of “Read” level access. “Read” level access provides the ability to get properties plus all the abilities of “None” level access. “None” level access provides no abilities.
Multiple grants may apply when a user attempts to access a particular object. For example, a specific user may have been granted “Write” level access on a collection containing a particular object, and an access group of which the specific user is a member may have been granted “Read” access on the particular object.
In general, it is desirable that access granted to a specific user takes precedence over access granted to an access group, and also that access granted on a particular object takes precedence over access granted on a collection. However, these two principles can come into conflict when one grant is to a specific user on a collection, and another grant is on a particular object to an access group. Therefore there is a need for an improved technique to resolve access.
To overcome the limitations in the prior art described above, and to overcome other limitations that will become apparent upon reading and understanding the present specification, various embodiments of a method, computer system, and article of manufacture to resolve access to a specific principal on a particular resource are provided. A principal set comprises a specific principal and any principals of which the specific principal is a member. A resource set comprises a particular resource and any resources of which the particular resource is a member. A set of candidate access rights to at least one principal on at least one resource is determined based on at least one grant. Any candidate access right for which there is another candidate access right to a same principal on a resource which is closer to the particular resource along a same route is eliminated from the set of candidate access rights. Any candidate access right for which there is another candidate access right on a same resource to a principal which is closer to the specific principal along a same route is eliminated from the set of candidate access rights. Access is provided in accordance with a most permissive access level of the set of candidate access rights.
In this way, a technique is provided to resolve access.
The teachings of the present invention can be readily understood by considering the following description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to some of the figures.
After considering the following description, those skilled in the art will clearly realize that the teachings of the various embodiments of the present invention can be utilized to resolve which grant, among multiple grants that could apply to a principal and a resource, takes precedence in a computer system. Various embodiments of a method, computer system and article of manufacture to resolve access to a specific principal on a particular resource are provided. A principal set comprises a specific principal and any principals of which the specific principal is a member. A resource set comprises a particular resource and any resources of which the particular resource is a member. A set of candidate access rights to at least one principal on at least one resource is determined based on at least one grant. Any candidate access right for which there is another candidate access right to a same principal on a resource which is closer to the particular resource along a same route is eliminated from the set of candidate access rights. Any candidate access right for which there is another candidate access right on a same resource to a principal which is closer to the specific principal along a same route is eliminated from the set of candidate access rights. Access is provided in accordance with a most permissive access level of the set of candidate access rights.
In various embodiments, a resource comprises one from a group consisting of an object and a collection. In some embodiments, a resource comprises one from a group consisting of an object, a collection and all objects. A resource set comprises a particular resource and any resources of which the particular resource is a member either directly or indirectly. For example, a particular object plus the collections of which the particular object is a member, either directly or indirectly, constitute a resource set. In another example, a particular collection plus the collections of which the particular collection is a member, either directly or indirectly, constitute a resource set. P In various embodiments, an access table contains grants to one or more principals on one or more resources with specified levels of access. Typically, the grants are defined by a user.
In step 20, a set of candidate access rights to the principals of the principal set on the resources of the resource set are identified based on the specified grants, wherein the principal set comprises a specific principal and any principals of which the specific principal is a member, either directly or indirectly, and the resource set comprises a particular resource and any resources of which the particular resource is a member, either directly or indirectly.
Step 22 determines whether there is a candidate access right to the specific principal on the particular resource. If so, in step 24, access is provided in accordance with the access level of that candidate access right.
In response to step 22 determining that there is no candidate access right to the specific principal on the particular resource, in step 26, the principal closeness of the specific principal to each principal of the principal set is determined along a route to the specific principal. In step 28, the resource closeness of the particular resource to each resource of the resource set is determined along a route to the particular resource.
In step 30, any candidate access right for which there is another candidate access right on a same resource to a principal which is closer to the specific principal resource along a same route to the specific principal is eliminated from the set of candidate access rights based on the principal closeness. In step 32, any candidate access right for which there is another candidate access right to a same principal on a resource which is closer to the particular resource along a same route to the particular resource is eliminated from the set of candidate access rights based on the resource closeness. In some embodiments, step 32 is performed prior to step 30. In step 34, access is provided based on the most permissive candidate access right from the set of candidate access rights.
Various steps of
In various embodiments, one or more routes are also identified based on the membership of the principals and resources. In some embodiments, a route is associated with one or more principals which directly and/or indirectly provide the specific principal with membership in another principal. Since each principal can be a member of one or more other principals, a principal may have an indirect membership in another principal via more than one route. For example, user1 is the specific principal; and access groups “A,” “B” and “C” are other principals. Suppose that user1 is a member of access group “A” and access group “B,” and that both access group “A” and access group “B” are members of access group “C.” A principal set comprises userl and access groups “A,” “B” and “C.” User1 is indirectly a member of access group “C” via two routes, via access group “A” and access group “B.” Therefore, one route comprises user1, access group “A” and access group “C”; and, another route comprises user1, access group “B” and access group “C.”
In various embodiments, a route is associated with one or more resources which directly and/or indirectly provide the particular resource with membership in another resource. Since each resource can be a member of one or more other resources, a particular resource may have indirect membership in another resource via more than one route. For example, object one is a particular resource, and collections “A,” “B” and “C” are other resources. Suppose that object one is a member of collection “A” and collection “B,” and that both collection “A” and collection “B” are members of collection “C.” A resource set comprises object one and collections “A,” “B” and “C.” Object one is a member of collection “C” via two indirect routes, via collection “A” and collection “B.” Therefore, one route comprises object one, collection “A” and collection “C;” and, another route comprises object one, collection “B” and collection “C.”
Thus, in some embodiments, if a candidate access right record defines a candidate access right to a principal of which a specific principal is a member via more than one route, the single candidate access right record is replaced with a candidate access right record for each route. If the candidate access right record defines a candidate access right on a resource of which the particular resource is a member via more than one route, the single candidate access right record is replaced with a candidate access right record for each route. In other words, in some embodiments, the single grant from the access table is associated with one record for each route in the set of candidate access rights.
In step 26, the principal closeness of the specific principal to each principal of the principal set along a specific route is determined. A principal closeness of zero is assigned to the specific principal. Each principal of which the specific principal is a directly a member is assigned a principal closeness of one. Each principal having a member with a principal closeness of one, is assigned a principal closeness of two. In general, each principal having a member with a principal closeness of n is assigned a principal closeness of n+1. The principal closeness of the principals and of the specific principal is recorded in the set of candidate access rights.
In step 28, the resource closeness of the particular resource to each resource of the resource set along a specific route is determined. Any resource of which the particular resource is directly or indirectly a member is analyzed to determine the resource closeness of each such resource to the particular resource. The particular resource is assigned a resource closeness of zero. Each resource of which the particular resource is a member is assigned a resource closeness of one. Each resource having a member with a resource closeness of n is assigned a resource closeness of n+1. The resource closeness of the resource and the particular resource is recorded in the set of candidate access rights.
In step 30, any candidate access right for which there is another candidate access right on a same resource to a principal which is closer to the specific principal along a same route to the specific principal is eliminated from the set of candidate access rights based on the principal closeness. In various embodiments, each candidate access right of the set of candidate access rights is evaluated for elimination based on the principal closeness. In some embodiments, to eliminate a candidate access right from consideration, that candidate access right is overridden, that is, deleted from the set of candidate access rights. Alternately, the candidate access right is flagged as no longer belonging to the set of candidate access rights.
In step 32, any candidate access right for which there is another candidate access right to a same principal on a resource which is closer to the particular resource along a same route to the particular resource is eliminated from the set of candidate access rights based on the resource closeness. In various embodiments, each candidate access right of the set of candidate access rights is evaluated for elimination. In some embodiments, to eliminate a candidate access right from consideration, that candidate access right is overridden, that is, the associated record of the candidate access right is deleted from the set of candidate access rights. Alternately, the candidate access right is flagged as no longer belonging to the set of candidate access rights.
In step 34, access is provided based on the most permissive access level of the set of candidate access rights. The remaining candidate access right records in the set of candidate access rights are strictly ordered by the levels of access such that the abilities of each level are a superset of the abilities of the next lower level. Among all candidate access rights remaining in the set of candidate access rights, the most permissive candidate access right is selected and used. In various embodiments, the levels of access comprise: “Full,” “Write,” “Read” and “None.” In some embodiments, the levels of access comprise: “Full,” “Write,” “Read” and “Identity,” where the “Identity” access right is the most restrictive access right and provides the ability to view an object's properties, such as the object's name and the object's owner, but not view the contents of the object.
Various embodiments of the technique of the flowchart of
As shown in
Object172 is a member of two collections, Collection174 and Collection276, as indicated by lines 78 and 80, respectively. Collection174 is a member of a larger collection named Collection1Parent 82, as indicated by line 84. Collection1Parent 82 and Collection276 are both members of a larger collection named Collection386, as indicated by lines 88 and 90, respectively. For example, Object1 is a direct member of Collection1 and indirectly a member of Collection1 Parent. The resource set comprises Object1, Collection1, Collection2, Collection1Parent and Collection3.
In accordance with Table 1, User142 has been granted Full access to Collection386, Write access to Collection1Parent 82, and Read access to Collection174, as shown by lines 92, 94 and 96, respectively. Group246 has been granted Read access to Object172 as indicated by line 98. Group2Parent 48 has been granted Write access to Object172 as indicated by line 100. Group350 has been granted Read access to Object172 as indicated by line 102.
The numbers next to each block indicate either the principal closeness to the specific principal, User1, or the resource closeness to the particular resource, Object1, via a route to the specific principal or particular resource, respectively.
To identify a route among principals, the membership of each principal, such as an access group, is examined. For example, because User1 is a member of Group1 and Group1 is a member of Group3, route one comprises User142, Group144 and Group350. Route two comprises User142, Group246, Group2Parent 48 and Group350. For example, Group350 has a principal closeness of two via route one, and a principal closeness of three via the route two. To identify a route among resources, the membership of each resource, such as a collection, is examined. Because Object1 is a member of Collection1, and Collection1 is a member of Collection1Parent, and Collection1Parent is a member of Collection3, route three comprises Object172, Collection174, Collection1Parent 82 and Collection386. Route four comprises Object172, Collection276 and Collection386. Collection386 has a closeness of three via route three and a resource closeness of two via route two.
In accordance with steps 26 and 28 of
Arrows 138 and 140 indicate which candidate access rights are eliminated in accordance with step 30 of
Arrows 142 and 144 indicate the candidate access rights that are eliminated in accordance with step 32 of
In another embodiment, a user is directly a member of only one group, and a group is directly a member of only one other group. In other words, in this embodiment, a principal is directly a member of only one other principal, and no alternates routes from a specific principal to a containing principal would occur.
In yet another embodiment, a group is not a member of any other group. For example, the closeness to a principal would be zero (grant to the user), one (grant to a group the user is in), or two (grant to public); therefore there would be no alternate routes from a specific principal to a containing principal. In another example, the closeness to a principal would be zero (grant to the user) or one (grant to a group the user is in); therefore there would be no alternate routes from a specific principal to a containing principal.
In another embodiment, an object is directly a member of only one collection, and a collection is a member of only one other collection. In other words, in this embodiment, a resource is directly a member of only one other resource, and there would be no alternate routes from a particular resource to a containing resource.
In yet another embodiment, a collection is not a member of any other collection. For example, the closeness to a resource would be zero (grant on the resource), one (grant on a collection the resource is in), or two (grant on all objects); therefore, there would be no alternate routes from a particular resource to a containing resource. In another example, the closeness to a resource would be zero (grant on the resource) or one (grant on a collection the resource is in); therefore, there would be no alternate routes from a particular resource to a containing resource.
The memory 160 generally comprises different modalities, illustratively semiconductor memory, such as random access memory (RAM), and disk drives. In various embodiments, the memory 160 stores an operating system 176, collection(s) and object(s) 178 and an access control system 180. The access control system 180 comprises membership definitions 182, an access table 184 and a set of candidate access rights 186. The membership definitions 182 define groups and collection objects. In various embodiments, the membership definitions 182 and access table 184 is stored in persistent storage and the set of candidate access rights is stored in volatile memory.
In various embodiments, the specific software instructions, data structures and data that implement various embodiments of the present invention are typically incorporated in the access control system 180. Generally, an embodiment of the present invention is tangibly embodied in a computer-readable medium, for example, the memory 160, and is comprised of instructions which, when executed by the processor 152, cause the computer system 150 to utilize the present invention. The memory 160 may store the software instructions, data structures and data for any of the operating system 178 and access control system 180 in semiconductor memory, in disk memory, or a combination thereof. Other computer memory devices presently known or that become known in the future, or combination thereof, may be used for memory 160.
The operating system 176 may be implemented by any conventional operating system such as AIX® (Registered Trademark of International Business Machines Corporation), UNIX® (UNIX is a registered trademark of the Open Group in the United States and other countries), Windows® (Registered Trademark of Microsoft Corporation), Linux® (Registered trademark of Linus Torvalds), Solaris® (Registered trademark of Sun Microsystems Inc.) and HP-UX® (Registered trademark of Hewlett-Packard Development Company, L.P.).
In various embodiments, the present invention may be implemented as a method, computer system, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” (or alternatively, “computer program product”) as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier or media. In addition, the software in which various embodiments are implemented may be accessible through the transmission medium, for example, from a server over the network. The article of manufacture in which the code is implemented also encompasses transmission media, such as the network transmission line and wireless transmission media. Thus the article of manufacture also comprises the medium in which the code is embedded. Those skilled in the art will recognize that many modifications may be made to this configuration without departing from the scope of the present invention.
The exemplary computer system illustrated in
The foregoing detailed description of various embodiments of the invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. It is intended that the scope of the invention be limited not by this detailed description, but rather by the claims appended thereto.