Abstract:
The Custom Access Controller adds a custom security hierarchy to the organizational data in the View Processor of WEBSPHERE Virtual Member Manager. Whenever an entity or application attempts to access a resources the access control engine starts the View Processor to identify the organizational data and assigned security policy for the resource. The assigned security policy is applied to a delegated administration path which is part of the delegated administration hierarchy but includes the appropriate path and security policy for the resource. The delegated administration path is sent to an access control engine that grants or denies access to the resource. A View Processor Interface allows network administrators to create and modify custom security hierarchies.

Description:
FIELD OF THE INVENTION 
     The invention relates to the security of files, objects or other resources on a network and how access to the resources is granted. 
     BACKGROUND OF THE INVENTION 
     Security levels are used to limit access to resources, such as applications, objects, and files, on a computer. The security levels for resources are assigned as a function of a computer&#39;s file system. Each resources requires a certain security level to be accessed, viewed or updated. Examples of the security levels, ordered from highest to lowest, are root/admin, super user, user, and guest. Thus, a database table may require “user” level access to read the contents, “super user” to change a table entry, and “admin” to delete the table. A user with a “guest” access level would not be able to even read the table. Assignment of security levels to resources and limiting user access to restricted resources is well known in the art. 
     Each server, computer, or logical partition on a network has its own file system. Because resources are distributed across different file systems, a “resource manager” is used to create a hierarchy categorizing the files, applications and other objects on the network. An “authorization engine” is part of the resource manager that controls access to each resource. The authorization engine uses the file system security levels for each component of the network. Because of the differences in security protocols between file systems, users of a resource on one file system on the network may have difficulty accessing another resource on another file system on the network. 
     Middleware is software designed to facilitate interoperability between different file systems on a network. IBM&#39;s WEBSPHERE Virtual Member Manger is an example of middleware. WEBSPHERE Virtual Member Manger and other middleware products use “access control engines” to overcome problems caused by different security protocols used by different file systems on the same network. An access control engine insulates applications from a resource manager by separating the authorization engine from the rest of the resource manager. The access control engine can, for example, supply a security proxy granting a user or an object access to another resource. 
     IBM developed a View Processor plug-in to WEBSPHERE Virtual Member Manger for displaying multiple views on the same set of organizational data. The View Processor works with WEBSPHERE Virtual Member Manger components, including the access control engine. The View Processor collects organizational data from repositories on each file system, then displays the organizational data in a uniform manner. The View Processor transforms the organizational data related to resources on a file system into a “delegated administration hierarchy.” Each resource on a delegated administration hierarchy can be represented by a delegated administration path, which describes the resource&#39;s physical or logical location in the delegated administration hierarchy. The View Processor allows network users or administrators to define custom organizational hierarchies that transcend the physical or logical locations on a file system. Custom organizational hierarchies allow resources to be categorized by how the resources interrelate independently from how or where the resources are stored on the network. Custom organizational hierarchies can organize resources by a business functional role or by a corporate reporting structure. For example, the Human Resources group of a company may need to access payroll data on a first server with a LDAP file system and may need to access time keeping data on a second server with a different file system. A custom Human Resources hierarchy can be set up that shows both the payroll and time keeping resources within the same organizational structure. A second example of a custom organization hierarchy could display a reporting view of an organization where the reporting hierarchy consists of managers and their employees. 
     Although access control engines overcome some of the limitations caused by native file system security protocols, access control engines are still limited by the defined organizational hierarchies of the underlying file systems. The access control engine must work within these predefined frameworks when assigning security proxies for granting access to resources on different file systems on a network. A need exists for a method to transform pre-defined organizational hierarchies of underlying file systems to a uniform custom organizational hierarchy, and apply the security protocols of the pre-defined underlying organizational hierarchy to the custom organizational hierarchy for use by an access control engine. 
     SUMMARY OF THE INVENTION 
     The Custom Access Controller adds a custom security hierarchy to the organizational data in the View Processor of WEBSPHERE Virtual Member Manager. Whenever an entity or application attempts to access a resource, the access control engine starts the View Processor to identify a delegated administration path with the organizational data and assigned security policy for the resource. The assigned security policy identifies the security policy of the entity or application and applies the security policy to the delegated administration path. The delegated administration path and security policies are sent to an access control engine that grants or denies access to the resource. A View Processor Interface allows network administrators to create and modify custom security hierarchies. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
       The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will be understood best by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
         FIG. 1  is an exemplary computer network; 
         FIG. 2  describes programs and files in a memory on a computer; 
         FIG. 3  is a flowchart of a View Processor; 
         FIG. 4  is a flowchart of a View Processor Interface; 
         FIG. 5A  represents repository entries describing objects on a resource; and 
         FIG. 5B  is a graphical hierarchy of the objects. 
     
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     The principles of the present invention are applicable to a variety of computer hardware and software configurations. The term “computer hardware” or “hardware,” as used herein, refers to any machine or apparatus that is capable of accepting, performing logic operations on, storing, or displaying data, and includes without limitation processors and memory; the term “computer software” or “software,” refers to any set of instructions operable to cause computer hardware to perform an operation. A “computer,” as that term is used herein, includes without limitation any useful combination of hardware and software, and a “computer program” or “program” includes without limitation any software operable to cause computer hardware to accept, perform logic operations on, store, or display data. A computer program may, and often is, comprised of a plurality of smaller programming units, including without limitation subroutines, modules, functions, methods, and procedures. Thus, the functions of the present invention may be distributed among a plurality of computers and computer programs. The invention is described best, though, as a single computer program that configures and enables one or more general-purpose computers to implement the novel aspects of the invention. For illustrative purposes, the inventive computer program will be referred to as the “Custom Access Controller” 
     Additionally, the Custom Access Controller is described below with reference to an exemplary network of hardware devices, as depicted in  FIG. 1 . A “network” comprises any number of hardware devices coupled to and in communication with each other through a communications medium, such as the Internet. A “communications medium” includes without limitation any physical, optical, electromagnetic, or other medium through which hardware or software can transmit data. For descriptive purposes, exemplary network  100  has only a limited number of nodes, including workstation computer  105 , workstation computer  110 , server computer  115 , and persistent storage  120 . Network connection  125  comprises all hardware, software, and communications media necessary to enable communication between network nodes  105 - 120 . Unless otherwise indicated in context below, all network nodes use publicly available protocols or messaging services to communicate with each other through network connection  125 . 
     Custom Access Controller  200  typically is stored in a memory, represented schematically as memory  220  in  FIG. 2 . The term “memory,” as used herein, includes without limitation any volatile or persistent medium, such as an electrical circuit, magnetic disk, or optical disk, in which a computer can store data or software for any duration. A single memory may encompass and be distributed across a plurality of media. Further Custom Access Controller  200  may reside in more than one memory distributed across different computers, servers, logical partitions, or other hardware devices. The elements depicted in memory  220  may be located in or distributed across separate memories in any combination, and Custom Access Controller  200  may be adapted to identify, locate and access any of the elements and coordinate actions, if any, by the distributed elements. Thus,  FIG. 2  is included merely as a descriptive expedient and does not necessarily reflect any particular physical embodiment of memory  220 . As depicted in  FIG. 2 , though, memory  220  may include additional data and programs. Of particular import to Custom Access Controller  200 , memory  220  may include repository  230 , target object  240 , and View Processor  250  with which Custom Access Controller  200  interacts. View Processor  250  is an existing middleware identity manager included in IBM&#39;s WEBSPHERE Virtual Member Manager having an authorization engine  252  and a hierarchy database  254 . Custom Access Controller  200  has View Processor Plug-In  300  and View Processor Interface Plug-In  400 . 
     Referring to  FIG. 3 , View Processor Plug-In  300  starts ( 310 ) in response to an entity attempting to access or perform an action on target object  240  on network  100 . View Processor Plug-In  300  identifies the entity and target object  240  ( 312 ). View Processor Plug-In  300  accesses the Delegated Administration Hierarchy from repository  230  to identify organizational data related to target object  240  ( 314 ). View Processor Plug-In  300  retrieves a custom delegated administration path for target object  240  ( 316 ). View Processor Plug-In  300  requests a security policy from security policy database  254  ( 318 ) and applies the security policy for the entity to the delegated administration path ( 320 ). The View Processor Plug-In  300  sends the delegated administration path to Authorization Engine  252  ( 322 ) which evaluates the delegated administration path and grants or denies access to the object. After sending the delegated administration path, View Processor Plug-In  300  stops ( 324 ). 
       FIG. 4  shows the steps taken when an administrator on network  100  initiates View Processor Interface Plug-In  400  ( 410 ). View Processor Interface Plug-In  400  identifies each entity and target object for a hierarchy ( 412 ). View Processor Interface Plug-In  400  retrieves the delegated administration path for each identified target object from repository  230  ( 414 ). View Processor Interface Plug-In  400  retrieves security policies for each identified entity and target object from security policy database  252  ( 416 ). Using the delegated administration path and security policies, View Processor Interface Plug-In  400  displays a graphical representation of the organizational data and security policies ( 418 ). The graphical display contains prompts, such as drop down menus or interactive words or images that allow an administrator to make changes to the security policies in an existing data hierarchy or to create a custom policy. If the administrator wants to change an existing security policy ( 420 ), View Processor Interface Plug-In  400  reads the security policy change ( 422 ) and saves the change to repository  230  ( 424 ). If the administrator wants to create a custom security policy ( 426 ), View Processor Interface Plug-In  400  reads the new security policy ( 428 ) and saves the change to repository  230  ( 430 ). After saving changes to a repository, View Processor Interface Plug-In  400  goes back to step  412  to collect and display the new organizational data and security policies. View Processor Interface Plug-In  400  continues to allow the administrator to make changes (steps  420 - 430 ) for as long as View Processor Interface Plug-In  400  remains open ( 432 ) and when the administrator is finished, View Processor Interface Plug-In  400  stops ( 434 ). 
       FIG. 5A  shows an example of repository entries  501 ,  502 ,  503 ,  504 ,  505  and  506  for a delegated administration hierarchy, which is the custom organizational hierarchy created with the Custom Access Controller. Each entry may or may not be a concrete entity representing an actual user or resource. For example, the entry may represent a business function or another arbitrary “entity.” Each entry has links and pointers representing the entry&#39;s position in the hierarchy. A “viewEntryName” API returns the delegated administration path for an entity. For example, entry  504  could be expressed as:
         viewEntryName/root/cn=Dale,L0=YSL,L1=SC 2 ,L2=DeptA
 
where cn means “common name” and “L0,” “L1,” and “L2” refer to hierarchy levels. The delegated administration path describes the location of the entity in the organizational hierarchy and contains the security policy for the entity.  FIG. 5B  shows a graphical hierarchy constructed from the repository entries of  FIG. 5A . the graphical hierarchy of  FIG. 5B  is exemplary of how View Processor Interface  400  displays the organizational data for entities in a hierarchy. Security attributes are applied to each entity in hierarchy. In  FIG. 5B , Adam  522  is shown at the highest level of the hierarchy. Adam  522  is a manager, and has security rights to all objects in YSL  512  and every level below YSL  512 . Bill  532  is only a member of SC 1   524 , and only has access to objects SC 1   524 . Carol  534  is a member of SC 2   536 , and has access to objects in SC 2   536  and objects in lower levels DeptA  536  and DeptB  538 . Dale  542  and Emily  544  each have access only to objects in DeptA  536 . Farid  546  only has access to objects in DeptB  538 .
       

     A preferred form of the invention has been shown in the drawings and described above, but variations in the preferred form will be apparent to those skilled in the art. The preceding description is for illustration purposes only, and the invention should not be construed as limited to the specific form shown and described. The scope of the invention should be limited only by the language of the following claims.