A method and apparatus are provided for maintaining and enforcing security rules using protection domains. As new code arrives at a computer, a determination is assigned to a protection domain based on the source from which the code is received. The protection domain establishes the permissions that apply to the code. In embodiments where the code to be executed by the computer belongs to object classes, an association is established between the protection domains and the classes of objects. When an object requests an action, a determination is made as to whether the action is permitted based on the class to which the object belongs and the association between classes and protection domains. |
Citations|
| US5311591 | Jun 3, 1993 | May 10, 1994 | | Computer system security method and apparatus for creating and using program authorization information data structures | | US5720033 | Jul 25, 1995 | Feb 17, 1998 | Lucent Technologies Inc. | Security platform and method using object oriented rules for computer-based systems using UNIX-line operating systems | | US5758153 | Oct 24, 1995 | May 26, 1998 | Object Technology Licensing Corp. | Object oriented file system in an object oriented operating system | | US5841870 | Nov 12, 1996 | Nov 24, 1998 | Cheyenne Property Trust | Dynamic classes of service for an international cryptography framework | | US5845129 | Mar 22, 1996 | Dec 1, 1998 | Philips Electronics North America Corporation | Protection domains in a single address space | | US5892904 | Dec 6, 1996 | Apr 6, 1999 | Microsoft Corporation | Code certification for network transmission |
Referenced by|
| US6691230 | Oct 15, 1998 | Feb 10, 2004 | International Business Machines Corporation | Method and system for extending Java applets sand box with public client storage | | US6721958 | Mar 8, 2000 | Apr 13, 2004 | OpenTV, Inc. | Optional verification of interactive television content | | US6886038 | Oct 24, 2000 | Apr 26, 2005 | Microsoft Corporation | System and method for restricting data transfers and managing software components of distributed computers | | US6915338 | Oct 24, 2000 | Jul 5, 2005 | Microsoft Corporation | System and method providing automatic policy enforcement in a multi-computer service application | | US7016950 | Dec 8, 2004 | Mar 21, 2006 | Microsoft Corporation | System and method for restricting data transfers and managing software components of distributed computers | | US7043545 | Dec 8, 2004 | May 9, 2006 | Microsoft Corporation | System and method for restricting data transfers and managing software components of distributed computers | | US7076804 | May 11, 2001 | Jul 11, 2006 | International Business Machines Corporation | Automated program resource identification and association | | US7080143 | May 11, 2004 | Jul 18, 2006 | Microsoft Corporation | System and method providing automatic policy enforcement in a multi-computer service application | | US7089242 | Feb 29, 2000 | Aug 8, 2006 | International Business Machines Corporation | Method, system, program, and data structure for controlling access to sensitive functions | | US7093288 | Oct 24, 2000 | Aug 15, 2006 | Microsoft Corporation | Using packet filters and network virtualization to restrict network communications | | US7096258 | May 12, 2004 | Aug 22, 2006 | Microsoft Corporation | System and method providing automatic policy enforcement in a multi-computer service application | | US7113900 | Oct 24, 2000 | Sep 26, 2006 | Microsoft Corporation | System and method for logical modeling of distributed computer systems | | US7131143 | Jun 21, 2000 | Oct 31, 2006 | Microsoft Corporation | Evaluating initially untrusted evidence in an evidence-based security policy manager | | US7155380 | Dec 9, 2004 | Dec 26, 2006 | Microsoft Corporation | System and method for designing a logical model of a distributed computer system and deploying physical resources according to the logical model | | US7200655 | Nov 12, 2004 | Apr 3, 2007 | Microsoft Corporation | System and method for distributed management of shared computers | | US7213247 | Jan 10, 2000 | May 1, 2007 | Wind River Systems, Inc. | Protection domains for a computer operating system | | US7243374 | Aug 8, 2001 | Jul 10, 2007 | Microsoft Corporation | Rapid application security threat analysis | | US7337318 | Feb 27, 2003 | Feb 26, 2008 | International Business Machines Corporation | Method and apparatus for preventing rogue implementations of a security-sensitive class interface | | US7363493 | Jan 4, 2002 | Apr 22, 2008 | Antimalware, Ltd. | Method for protecting computer programs and data from hostile code | | US7370103 | Nov 12, 2004 | May 6, 2008 | | System and method for distributed management of shared computers | | US7392525 | Oct 1, 2003 | Jun 24, 2008 | Cray Inc. | Inter-thread long jumps in a multithreaded environment | | US7395320 | Jun 1, 2005 | Jul 1, 2008 | Microsoft Corporation | Providing automatic policy enforcement in a multi-computer service application | | US7406517 | Nov 1, 2004 | Jul 29, 2008 | Microsoft Corporation | System and method for distributed management of shared computers | | US7426732 | Oct 10, 2003 | Sep 16, 2008 | Cray Inc. | Placing a task of a multithreaded environment in a known state | | US7536690 | Sep 16, 2003 | May 19, 2009 | Cray Inc. | Deferred task swapping in a multithreaded environment | | US7567504 | Sep 8, 2003 | Jul 28, 2009 | Microsoft Corporation | Network load balancing with traffic routing | | US7574343 | Mar 7, 2006 | Aug 11, 2009 | Microsoft Corporation | System and method for logical modeling of distributed computer systems | | US7590736 | Jun 30, 2003 | Sep 15, 2009 | Microsoft Corporation | Flexible network load balancing | | US7606898 | Oct 24, 2000 | Oct 20, 2009 | Microsoft Corporation | System and method for distributed management of shared computers | | US7606929 | Sep 8, 2003 | Oct 20, 2009 | Microsoft Corporation | Network load balancing with connection manipulation | | US7613822 | Jun 30, 2003 | Nov 3, 2009 | Microsoft Corporation | Network load balancing with session information | | US7613930 | Jun 2, 2005 | Nov 3, 2009 | Trustware International Limited | Method for protecting computer programs and data from hostile code | | US7630877 | Dec 29, 2005 | Dec 8, 2009 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications | | US7636917 | Jun 30, 2003 | Dec 22, 2009 | Microsoft Corporation | Network load balancing with host status information | | US7669235 | May 25, 2004 | Feb 23, 2010 | Microsoft Corporation | Secure domain join for computing devices | | US7684964 | Sep 8, 2005 | Mar 23, 2010 | Microsoft Corporation | Model and system state synchronization | | US7689676 | Jan 12, 2007 | Mar 30, 2010 | Microsoft Corporation | Model-based policy application | | US7711121 | Nov 2, 2004 | May 4, 2010 | Microsoft Corporation | System and method for distributed management of shared computers | | US7734739 | Apr 20, 2001 | Jun 8, 2010 | Hewlett-Packard Development Company, L.P. | Method and system for consolidating network topology in duplicate IP networks | | US7734918 | Jan 17, 2008 | Jun 8, 2010 | International Business Machines Corporation | Preventing rogue implementations of a security-sensitive class interface | | US7739380 | Nov 12, 2004 | Jun 15, 2010 | Microsoft Corporation | System and method for distributed management of shared computers | | US7739731 | Aug 21, 2006 | Jun 15, 2010 | Oracle America, Inc. | Method and apparatus for protection domain based security | | US7743407 | Aug 13, 2002 | Jun 22, 2010 | Qualcomm Incorporated | Using permissions to allocate device resources to an application | | US7778422 | Feb 27, 2004 | Aug 17, 2010 | Microsoft Corporation | Security associations for devices | | US7779460 | Apr 17, 2007 | Aug 17, 2010 | Microsoft Corporation | Partial grant set evaluation from partial evidence in an evidence-based security policy manager | | US7797147 | Apr 15, 2005 | Sep 14, 2010 | Microsoft Corporation | Model-based system monitoring | | US7802144 | Apr 15, 2005 | Sep 21, 2010 | Microsoft Corporation | Model-based system monitoring | | US7822723 | Mar 23, 2005 | Oct 26, 2010 | International Business Machines Corporation | Method, system, program and data structure for controlling access to sensitive functions | | US7840997 | May 30, 2002 | Nov 23, 2010 | | Method and device for computer memory protection against unauthorized access | | US7886041 | Mar 1, 2004 | Feb 8, 2011 | Microsoft Corporation | Design time validation of systems | | US7890543 | Oct 24, 2003 | Feb 15, 2011 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications | | US7890951 | Jun 29, 2005 | Feb 15, 2011 | Microsoft Corporation | Model-based provisioning of test environments | | US7904454 | Jun 16, 2002 | Mar 8, 2011 | International Business Machines Corporation | Database access security | | US7925881 | Oct 4, 2007 | Apr 12, 2011 | International Business Machines Corporation | Method and apparatus for preventing rogue implementations of a security-sensitive class interface | | US7933923 | Nov 4, 2005 | Apr 26, 2011 | International Business Machines Corporation | Tracking and reconciling database commands | | US7941309 | Nov 2, 2005 | May 10, 2011 | Microsoft Corporation | Modeling IT operations/policies | | US7970788 | Aug 2, 2005 | Jun 28, 2011 | International Business Machines Corporation | Selective local database access restriction | | US8078886 | Sep 2, 2009 | Dec 13, 2011 | Trustware International Limited | Method for protecting computer programs and data from hostile code | | US8122106 | Oct 24, 2003 | Feb 21, 2012 | Microsoft Corporation | Integrating design, deployment, and management phases for systems | | US8141100 | Dec 20, 2006 | Mar 20, 2012 | International Business Machines Corporation | Identifying attribute propagation for multi-tier processing | | US8239923 | Jun 12, 2006 | Aug 7, 2012 | Cisco Technology, Inc. | Controlling computer program extensions in a network device |
Claims1. A method for providing security, the method comprising the steps of: - establishing one or more protection domains, wherein a protection domain is associated with zero or more permissions;
- establishing an association between said one or more protection domains and one or more classes of one or more objects; and
- determining whether an action requested by a particular object is permitted based on said association between said one or more protection domains and said one or more classes.
2. The method of claim 1, wherein: - at least one protection domain of said one or more protection domains is associated with a code identifier;
- at least one class of said one or more classes is associated with said code identifier; and
- the step of establishing an association between said one or more protection domains and said one or more classes of one or more objects further includes the step of associating said one or more protection domains and said one or more classes based on said code identifier.
3. The method of claim 2, wherein said code identifier indicates a source of code used to define each class of said one or more classes. 4. The method of claim 2, wherein said code identifier indicates a key associated with each class of said one or more classes. 5. The method of claim 2, wherein said code identifier indicates a source of code used to define each class of said one or more classes and indicates a key associated with each class of said one or more classes. 6. The method of claim 2, wherein the step of associating said one or more protection domains and said one or more classes based on said code identifier further includes associating said one or more protection domains and said one or more classes based on data persistently stored, wherein said data associates code identifiers with a set of one or more permissions. 7. A method of providing security, the method comprising the steps of: - establishing one or more protection domains, wherein a protection domain is associated with zero or more permissions;
- establishing an association between said one or more protection domains and one or more sources of code; and
- in response to executing code making a request to perform an action, determining whether said request is permitted based on a source of said code making said request and said association between said one or more protection domains and said one or more sources of code.
8. The method of claim 7, wherein the step of establishing an association between said one or more protection domains and said one or more sources of code further includes establishing an association between said one or more protection domains and said one or more sources of code and one or more keys associated with said one or more sources of code. 9. The method of claim 8, wherein the step of establishing an association between said one or more protection domains and said one or more sources of code and said one or more keys associated with said one or more sources of code further includes establishing said association between said one or more protection domains and said one or more sources of code and said one or more keys associated with said one or more sources of code based on data persistently stored, wherein said data associates particular sources of code and particular keys with a set of one or more permissions. 10. A computer-readable medium carrying one or more sequences of one or more instructions, the one or more sequences of the one or more instructions including instructions which, when executed by one or more processors, causes the one or more processors to perform the steps of: - establishing one or more protection domains, wherein a protection domain is associated with zero or more permissions;
- establishing an association between said one or more protection domains and one or more classes of one or more objects; and
- determining whether an action requested by a particular object is permitted based on said association between said one or more protection domains and said one or more classes.
11. The computer readable medium of claim 10, wherein: - at least one protection domain of said one or more protection domains is associated with a code identifier;
- at least one class of said one or more classes is associated with said code identifier; and
- the step of establishing an association between said one or more protection domains and said one or more classes of one or more objects further includes the step of associating said one or more protection domains and said one or more classes based on said code identifier.
12. The computer readable medium of claim 11, wherein said code identifier indicates a source of code used to define each class of said one or more classes. 13. The computer readable medium of claim 11, wherein said code identifier indicates a key associated with each class of said one or more classes. 14. The computer readable medium of claim 11, wherein said code identifier indicates a source of code used to define each class of said one or more classes and indicates a key associated with each class of said one or more classes. 15. The computer readable medium of claim 14, wherein the step of associating said one or more protection domains and said one or more classes based on said code identifier further includes associating said one or more protection domains and said one or more classes based on data persistently stored, wherein said data associates code identifiers with a set of one or more permissions. 16. A computer-readable medium carrying one or more sequences of one or more instructions, wherein the execution of the one or more sequences of the one or more instructions causes the one or more processors to perform the steps of: - establishing one or more protection domains, wherein a protection domain is associated with zero or more permissions;
- establishing an association between said one or more protection domains and one or more sources of code; and
- in response to executing code making a request to perform an action, determining whether said request is permitted based on a source of said code making said request and said association between said one or more protection domains and said one or more sources of code.
17. The computer readable medium of claim 16, wherein the step of establishing an association between said one or more protection domains and said one or more sources of code further includes establishing an association between said one or more protection domains and said one or more sources of code and one or more keys associated with said one or more sources of code. 18. The computer readable medium of claim 17, wherein the step of establishing an association between said one or more protection domains and said one or more sources of code and said one or more keys associated with said one or more sources of code further includes establishing said association between said one or more protection domains and said one or more sources of code and said one or more keys associated with said one or more sources of code based on data persistently stored, wherein said data associates particular sources of code and particular keys with a set of one or more permissions. 19. A computer system comprising: - a processor;
- a memory coupled to said processor;
- one or more protection domains stored as objects in said memory, wherein each protection domain is associated with zero or more permissions;
- a domain mapping object stored in said memory, said domain mapping object establishing an association between said one or more protection domains and one or more classes of one or more objects; and
- said processor being configured to determine whether an action requested by a particular object is permitted based on said association between said one or more protection domains and said one or more classes.
20. The computer system of claim 19, wherein: - at least one protection domain of said one or more protection domains is associated with a code identifier;
- at least one class of said one or more classes is associated with said code identifier; and
- said computer system further comprises said processor configured to establish an association between said one or more protection domains and said one or more classes of one or more objects by associating said one or more protection domains and said one or more classes based on said code identifier.
21. The computer system of claim 20, wherein said code identifier indicates a source of code used to define each class of said one or more classes. 22. The computer system of claim 20, wherein said code identifier indicates a key associated with each class of said one or more classes. 23. The computer system of claim 20, wherein said code identifier indicates a source of code used to define each class of said one or more classes and indicates a key associated with each class of said one or more classes. 24. The computer system of claim 20, further comprising said processor configured to associate said one or more protection domains and said one or more classes based on said code identifier by associating said one or more protection domains and said one or more classes based on data persistently stored in said computer system, wherein said data associates code identifiers with a set of one or more permissions. |