System and method for network permissions evaluation

Information

  • Patent Application
  • 20080046961
  • Publication Number
    20080046961
  • Date Filed
    August 11, 2006
    19 years ago
  • Date Published
    February 21, 2008
    18 years ago
Abstract
The invention is a system and method for delegating security permission evaluation from a client computer to remote network service (e.g., a security server). The centralization of permission evaluation allows performance enhancements using rules compilation and better manageability. An application on a client machine may request a permission to access a resource at runtime and provide evidence data to a security server. The permission evaluation (the decision) is executed by the network service and enforced locally on the client machine. When the application runs on top of a virtual machine, its security manager may be used to hide all of the client-side processes, and thus providing the extra information to the network service in order to locally enforce the results.
Description

DETAILED DESCRIPTION OF DRAWINGS


FIG. 1 is a high-level block diagram for a system, according to one embodiment of the invention.



FIG. 2 is a diagram for a method of a client server process, according to one embodiment of the invention.





DETAILED DESCRIPTION

The invention enables significant performance gains by compiling complex access control rules using a network service (e.g., security server), wherein several client applications can share the same compiled access control rules. Centralized sharing of the same rules works to eliminate the risk of having different applications, rules, and versions coexisting on the same network. It also makes it a lot easier to update the access control logic since it is centralized into a few, possibly a single, component.



FIG. 1 is a high level block diagram of a client computer and server, among other things. A client computer 100 may include application code(s) 102, virtual machine (VM) 104, which may include a security manager 106 among other things. A network service acting as a security server 120 may include a rule compiler 114, rule evaluator 116 and a storage for the compiled rules logic and data 118. Other network resources may be linked to the network 110, including but not limited to, application server(s) 130, database server(s) 140, directory service(s) 150 and other client computers. The network of FIG. 1 is scalable to accommodate multiple client computers with one or more security servers.


Security server 120 may be located in logical and/or physical proximity to client computer 100 or to the other servers 130, 140, 150. Client computer 100 may encompass other types of client devices and should not be limited to personal computer. For example, client machine may be a mobile device, like a cell-phone, or other device, like an embedded system. Client computer may also operate in an off-line mode if needed. In an off-line mode the permission evaluation may use cached information from previous communication with the servers, and consider their results as valid as long as a response timestamp is still valid.


During client computer operations the application 102 and/or security manager 106 of the virtual machine 104 on client computer 100 may request permission(s) to access application resources (e.g., files, directories, process). Permissions may represent the right to access various system and network resources based on security policies. A set of permissions may be determined for an application code based on the security policy and evidence provided by the application code including, but not limited to, identity, publisher, source (e.g., URL, website), origin (e.g., Internet, Intranet) and/or other information about the application seeking permission. With an ECMA-335 VM, the application and its assemblies (e.g., .DLL files, .EXE files) may specify the requested permissions using declarative or imperative security. Declarative security allows the developer of the application code to insert permission attributes into the code itself whereas imperative security may allow the developer to specify permissions dynamically within source code. Both types are well known in code development and execution. The present invention is able to delegate the permission evaluation to a network service without requiring change to existing VM and security manager, enabling existing applications to gain both performance and manageability advantages without extensive changes.


According to one aspect of the invention, an application 102 running on a client computer 100, may request permissions from a network service running on a security server. This request may include at least, the requested permission (e.g. access file “secret.doc”) and some evidences to help evaluation (e.g. current user is “Bob”).


Alternatively, an application 102 may be executed under a virtual machine 104. In this case the application's declarative and/or imperative security may request permissions from the VM security manager 106, which can delegate the permission evaluation to a network service running on a security server 120. The request may include the XML representation of the permission, the current call stack, application domain, and assembly's evidences. In this case changes to the application itself are minor due to the transparency of the security manager's actions.


In both cases, a security server 120 can use the rule compiler 114 to compile its stored security policies from storage 118 and any other rules it receives from other servers 130, 140, 150. This allows static access control rules and definitions to be compiled for more efficient security evaluation when permissions are requested from client computers 100. Using the code evidences and permission request supplied by the client computer 100 the compiled rules may be executed, with a greater speed than interpreted rules. In the event that a rule does change, the rule can trigger a re-compilation at the security server.



FIG. 2 is a flow diagram for client and server operations, according to an aspect of the invention. A security server 120 may receive access control policy, security policy and/or other security information from application host server(s), client computer(s), and/or other sources (operation 50). The information can either be pulled from the security server (e.g., retrieving an update from a remote database server at a specified time) or pushed from a remote server (e.g., an update when a new user is being added to the directory services). Such pull and/or push mechanisms may be configured on each security server 120 and does not require updates to every client computer 100. Received information may be stored at security server storage 118 or other location, for example a remote database server 140. Security server 120 may have logic incorporating the ability to compile and execute access control security. Security server 120 may compile the rules, using the rule compiler 114 and the information contained in storage 118, before, during or after an application is instantiated on client computer 100 (operation 52). Client computer begins execution of an application (operation 54), which includes one or more request for permissions (operation 56). The request may be made directly to security server 120 or indirectly via the security manager 106 of the client computer 100. The security server 120 receives the request for permission, either directly from the application runtime or indirectly via security manager 106. In both cases, the security server 120 receives request accompanied with application evidence. The evidence information may be sent to security server via XML standards. The evidence is combined with the permission request and provided to the security server 120. The security server 120 may parse, interpret, and evaluate which actions to take based on the information (operation 58). After access control has been remotely evaluated, the security server 120 forwards (operation 60) the resulting information to client computer 100 for local enforcement (operation 62).


Delegated permission evaluation allows the security permissions to be judged outside the client machine. Further optimization may be made by security server 120 in specific contexts. For example, the repetitive pattern of asking for network resources can be cached. Thus, a response to request for a web service (e.g. service discovery) from a client computer 100 can be made almost instantly when presented a second or subsequent time. Caching the results of the web service for a policy defined time can lower bandwidth usage and improve performance without sacrificing security. Caching can also be implemented at the client computer 100. In this case the security server 120 may add a timestamp within a response. This timestamp can indicate an interval of time, between now and a specified time, for which the result is known to be valid. Client-side caching may be useful when client computers 100 are executing in an offline mode.


A further optimization technique is possible if parts of some rules logic are expected to change often. For example, it may be that a large part of the rule is static and a minor part is dynamic. Splitting such rules into several smaller rules and compiling the rules independently (e.g., one assembly per rule file) can improve performance in the case that some (top) rules are being generated very frequently or automatically for each request. The change of one or more rule(s) can trigger a selective recompilation at security server 120. The impact of the changes is still very small compared to the gains made by compiling the rules.


Thus, the client machine's environment may remain unchanged with respect to evolving security rules. The client computer 100 supplies the evidence in order for the security server 120 to evaluate the security permissions and the client computer 100 enforces the policies sent back from the security server 120. The client computer 100 requests permissions and receives permissions with little regard as to where the security decision came from. The client may be further optimized when applications are executed on a virtual machine where the security manager can be extended to provide such services transparently.


A networked permission also has the advantage of being very generic. The client computer 100 may have limited (little to none) knowledge about the rules used to evaluate the requested permission. Such rules can be changed without affecting the local applications, even while the local applications are executing on the client computer 100.


In the foregoing specification, the invention has been described with reference to specific embodiments thereof. Various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.

Claims
  • 1. A computer implemented method including one or more network services having access control policies for managing application permissions, comprising: receiving security rules from servers and other network services on a network;storing the received security rules;compiling rules with the access control policies;receiving a request based on an application instantiated on a client machine for permission to access a resource;evaluating the request for permission;forwarding the evaluation result to the client machine.
  • 2. The method of claim 1, wherein the network service is a security server.
  • 3. The method of claim 1, wherein the application is executing using virtual machine on the client machine.
  • 4. The method of claim 3, wherein the virtual machine includes a security manager for transparently invoking a network connection with the network service to transmit the request to the network service.
  • 5. The method of claim 1, wherein the request based on the application instantiated on the client machine is transmitted directly from the application executing on the client machine to the security server.
  • 6. The method of claim 1, wherein the client computer includes, transmitting to a network service a request for permission to perform an operation;providing application code evidence with the request;receiving in response to the request, access control instructions from the network service;enforcing the received access control instructions on the instantiated application running on the client computer.
  • 7. The method of claim 1, wherein the evaluation results are valid for a predetermined time according to a time stamp sent with the evaluation results.
  • 8. The method of claim 7, wherein the evaluation results are stored at client machine cache for predetermined time according to the time stamp.
  • 9. The method of claim 1, wherein the server includes at least an application server and database server.
  • 10. The method of claim 9, wherein the access control policies are static and compiled to perform true/false results at compilation time.
  • 11. The method of claim 10, wherein an update to the security rules triggers a re-compilation at the network service.
  • 12. A computer system including one or more network servers hosting a network service and further comprising: a network server for receiving security rules from servers and other network services on the network;a database for storing the received security rules;a rules compiler for compiling rules with the access control policies;a communications link for receiving a request based on an application instantiated on a client machine for permission to access a resource;a rules evaluator for evaluating the request for permission;the network server forwarding the evaluation result to the client machine.
  • 13. The method of claim 12, wherein the network service is a security server.
  • 14. The system of claim 12, wherein the application is executing using virtual machine on the client machine.
  • 15. The system of claim 14, wherein the virtual machine includes a security manager for transparently invoking a network connection with the network service to transmit the request to the network server.
  • 16. The system of claim 12, wherein the request based on the application instantiated on a client is transmitted directly from the application executing on the client machine to the security server.
  • 17. The system of claim 12, wherein the client computer includes a virtual machine including, means for transmitting to a network service a request for permission to perform an operation;means for providing application code evidence with the request;means for receiving in response to the request, access control instructions from the network service;means for enforcing the received access control instructions on the instantiated application running on the client computer.
  • 18. The system of claim 12, wherein the evaluation results are valid for a predetermined time according to a time stamp sent with the evaluation results.
  • 19. The system of claim 18, wherein the evaluation results are stored at client machine cache for predetermined time according to time stamp.
  • 20. The system of claim 12, wherein the server includes at least an application server and database server.
  • 21. The system of claim 20, wherein the access control policies are static and compiled by rules compiler to perform true/false results at compilation time.
  • 22. The system of claim 21, wherein an update to security rule triggers a re-compilation at the network service.