Modern computing networks provide access to a wide variety of computing resources such as data archives, search engines, data processing, data management, communications, electronic marketplaces, as well as media and entertainment services. As the number and size of such computing resources, and their user communities, have grown and become more sophisticated, a need has arisen to establish increasingly sophisticated usage policies. For example, such policies may include policies that address security, privacy, access, regulatory and cost concerns. However, conventional approaches to policy enforcement have drawbacks.
For example, conventional approaches to policy enforcement can be ad hoc, limited to a particular type of computing resource and/or limited to a particular set of policy controls. In heterogeneous computing environments incorporating even a modest number of computing resource types, an ad hoc approach can be a significant administrative burden. In addition, some conventional approaches scale poorly as the number of computing resources grows large. Small administrative and/or performance inefficiencies can become problematic at larger scales. Some conventional approaches lack a centralized policy management service which can hamper consistent policy management in distributed computing environments. Some conventional approaches are limited to centralized policy management, which can be insufficiently flexible in response to changing requirements.
Policy set complexity can also be a problem for some conventional approaches to policy enforcement. For example, policy administrators may have difficulty implementing a desired policy in practice, even when it is possible in theory. Policies may be inconsistently enforced by different computing resource types. The specification of a particular policy may have unanticipated and/or unintended consequences. Furthermore, it is becoming increasingly common to provision such computing resources with virtual computing resource providers. In such cases, computing resource administrators may not have control over, or direct access to, computing hardware or other infrastructure that implements the provisioned computing resources. In some conventional approaches to policy enforcement, such environments can hinder acquisition of sufficient diagnostic information to efficiently resolve policy enforcement problems.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
Same numbers are used throughout the disclosure and figures to reference like components and features, but such repetition of number is for purposes of simplicity of explanation and understanding, and should not be viewed as a limitation on the various embodiments.
In the following description, various embodiments will be described. For purposes of explanation, specific configurations and details are set forth in order to provide a thorough understanding of the embodiments. However, it will also be apparent to one skilled in the art that the embodiments may be practiced without the specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the embodiment being described.
Policies may be specified with a convenient policy specification language and/or user interface. However, such user-specified policies may be inefficient for the purposes of policy enforcement, particularly as the set of user-specified policies grows large. In at least one embodiment, user-specified policies may be transformed and/or processed into a normal policy form (“normal form”). The normal form may include a defined set of policy elements, each with a defined set of possible values. For example, the set of policy elements may include an “actions” element corresponding to a set of actions governed by the policy, a “principals” element corresponding to a set of principals or actors with respect to the set of actions, a “resources” element corresponding to a set of resources or subjects of the action, and/or a “conditions” element corresponding to a set of conditions to be satisfied before the policy is enforced.
The set of normal form policies may be efficiently optimized, for example, optimized for efficient indexing and/or optimized with respect to set size. Normal form policies may be split and/or joined with respect to policy elements, and duplicates efficiently removed. Normal form policies may be efficiently indexed with respect to policy element values and/or particular subsets of policy element values. For example, when the set of normal form policies are to be enforced with respect to a variety of computing resources, the set may be indexed by computing resource, computing resource type, computing resource server, and suitable combinations thereof. Subsets of the set of normal form policies may be distributed to multiple policy enforcement components based on the indexing and/or based on a relevance of particular policy subsets to particular policy enforcement components.
A virtual resource provider capable of provisioning a variety of virtual computing resources may include a centralized policy management service that maintains the set of normalized policies and distributes appropriate subsets to multiple policy enforcement components distributed throughout the virtual resource provider. Alternatively, or in addition, normal form policies may be maintained local to particular policy enforcement components and/or associated virtual computing resource implementation services. As a further alternative, policies may be provided along with action requests. In each case, a policy may be compatible with the normal form, and be associated with and/or accompanied by cryptographic credentials that authenticate and/or authorize the policy and/or an associated user. For example, the user may be authorized to set policies with respect to a particular set of computing resources. Such policies themselves are an example of a computing resource that may be subject to policy control.
Requests with respect to resources may be submitted to one or more policy enforcement components. For example, a request may be submitted to one or more policy enforcement components locally maintaining one or more policies that are relevant to the request. A distributed policy enforcement system with multiple policy enforcement components may have a “sandbox” mode and/or verification mode for processing requests. An authorized user may activate the verification mode with an indicator incorporated into an service interface, with an explicit verification mode service interface, and/or with a cryptographic verification mode token, the acquisition of which is subject to policy control. During the verification mode, requests may be evaluated with respect to policies as usual while requested actions are inhibited.
Such evaluations may depend on a set of decision data including user identity, a user's group memberships, protocol level details such as network source address of the request and protocol utilized to transmit the request, geographic regions associated with the request such as source geographic location of the request, regulatory classifications associated with the request, date and time. Authorized users may substitute pieces of decision data with specified values, for example, to enable an administrator to verify that a particular set of policies will govern the actions of a particular user or group of users as intended, and/or to diagnose problems. In verification mode, evaluation results, relevant policies, and decision data utilized during request evaluation may be collected, filtered and reported at a variety of levels of detail. The reported set of relevant policies may include normal form policies utilized to evaluate a request and/or a corresponding set of user-specified policies. Originating user-specified policies may be tracked during the policy normalization process to enable reporting of user-specified policies in verification mode. The reported set of decision data may include decision data not otherwise accessible to the report recipient.
Various approaches may be implemented in various environments for various applications. For example,
The network 104 may include any appropriate network, including an intranet, the Internet, a cellular network, a local area network, a wide area network, a wireless data network, or any other such network or combination thereof. Components utilized for such a system may depend at least in part upon the type of network and/or environment selected. Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the network may be enabled by wired or wireless connections, and combinations thereof. In this example, the network 104 includes the Internet, as the environment includes a web server 106 for receiving requests and serving content in response thereto, although for other networks an alternative device serving a similar purpose could be utilized as would be apparent to one of ordinary skill in the art.
The environment 100 includes at least one application server 108 and a data store 110. It should be understood that there may be several application servers, layers, or other elements, processes, or components, which may be chained or otherwise configured, which may interact to perform tasks such as obtaining data from an appropriate data store. As used herein the term “data store” refers to any device or combination of devices capable of storing, accessing, and/or retrieving data, which may include any combination and number of data servers, databases, data storage devices, and data storage media, in any standard, distributed, or clustered environment.
The application server 108 may include any appropriate hardware and software for integrating with the data store as needed to execute aspects of one or more applications for the client device 102, and may even handle a majority of the data access and business logic for an application. The application server 108 provides access control services in cooperation with the data store 110, and is able to generate content such as text, graphics, audio, and/or video to be transferred to the user, which may be served to the user by the web server 106 in the form of HTML, XML, or another appropriate structured language in this example.
The handling of all requests and responses, as well as the delivery of content between the client device 102 and the application server 108, may be handled by the web server 106. It should be understood that the web and application servers 106 and 108 are not required and are merely example components, as structured code discussed herein may be executed on any appropriate device or host machine as discussed elsewhere herein. Further, the environment 100 may be architected in such a way that a test automation framework may be provided as a service to which a user or application may subscribe. A test automation framework may be provided as an implementation of any of the various testing patterns discussed herein, although various other implementations may be utilized as well, as discussed or suggested herein.
The environment 100 may also include a development and/or testing side, which includes a user device 118 allowing a user such as a developer, data administrator, or tester to access the system. The user device 118 may be any appropriate device or machine, such as is described above with respect to the client device 102. The environment 100 may also include a development server 120, which functions similar to the application server 108 but typically runs code during development and testing before the code is deployed and executed on the production side and becomes accessible to outside users, for example. In some embodiments, an application server may function as a development server, and separate production and testing storage may not be utilized.
The data store 110 may include several separate data tables, databases, or other data storage mechanisms and media for storing data relating to a particular aspect. For example, the data store 110 illustrated includes mechanisms for storing production data 112 and user information 116, which may be utilized to serve content for the production side. The data store 110 also is shown to include a mechanism for storing testing data 114, which may be utilized with the user information for the testing side. It should be understood that there may be many other aspects that are stored in the data store 110, such as for page image information and access right information, which may be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store 110.
The data store 110 is operable, through logic associated therewith, to receive instructions from the application server 108 or development server 120, and obtain, update, or otherwise process data in response thereto. In one example, a user might submit a search request for a certain type of item. In this case, the data store 110 might access the user information 116 to verify the identity of the user, and may access the catalog detail information to obtain information about items of that type. The information then may be returned to the user, such as in a results listing on a web page that the user is able to view via a browser on the client device 102. Information for a particular item of interest may be viewed in a dedicated page or window of the browser.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server, and typically will include a computer-readable medium storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality of the servers are known or commercially available, and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
The environment 100 in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in
In at least one embodiment, one or more aspects of the environment 100 may incorporate and/or be incorporated into a virtual computing resources architecture.
The virtual resource provider 202 may be implemented, at least in part, with server computers such as the web server 106 and the application server 108 described above with reference to
The user interfaces 304 of the control plane 302 may include any suitable type of user interface. For example, the user interface 304 may include graphical user interfaces (GUIs), web-based interfaces, programmatic interfaces such as application programming interfaces (APIs) and/or sets of remote procedure calls (RPCs) corresponding to interface elements, messaging interfaces in which the interface elements correspond to messages of a communication protocol, and/or suitable combinations thereof. The user interfaces 304 may include multiple resource interfaces 306-308 enabling user interaction with the virtual resources 218-220 (
The user interfaces 304 may further include a provisioning interface 310 enabling authorized users to provision, configure, re-configure and/or de-provision (collectively, “provision”) the virtual resources 218-220 (
The control plane 302 may include a policy management component 314 configured at least to provide centralized policy management for the virtual resource provider 202 (
The control plane 302 may further include a verification mode component 320 configured at least to facilitate verification mode reporting. The verification mode component 320 may collect request evaluation results, normal form policies and/or decision data, map normal form policies to user-specified policies, and generate reports at specified levels of detail. For example, verification mode report detail levels may include a low detail level corresponding to an evaluation result and basic contextual information, a medium detail level that adds a set of policies considered to determine the evaluation result, a high detail level that further adds a set of decision data considered to determine the evaluation result, and a very high detail level that further adds virtual resource provider 202 (
The verification mode component 320 may be further configured to process requests for verification mode tokens (e.g., cryptographic tokens), and to authenticate such tokens. For example, a verification mode token may be submitted with a request in order to indicate that the request is to be processed in verification mode. Alternatively, or in addition, verification mode tokens may authorize substitution of decision data (or at least a portion of the decision data) utilized when evaluating a request with respect to a set of policies. For example, the verification mode token may authorize substitution of decision data related to user identity, thus enabling an administrator to verify that a particular policy set has an intended effect with respect to a particular user.
The control plane 302 may include a workflow management component 322 configured at least to establish and maintain workflows such as resource workflows, provisioning workflows and/or policy management workflows established responsive to user interaction with the resource interfaces 306-308, the provisioning interface 310, and/or the policy management interface 312, respectively. Workflows may include one or more sequences of tasks to be executed to perform a job, such as virtual resource configuration, provisioning or policy management. A workflow, as the term is used herein, is not the tasks themselves, but a task control structure that may control flow of information to and from tasks, as well as the order of execution of the tasks it controls. For example, a workflow may be considered a state machine that can manage and return the state of a process at any time during execution. Workflows may be created from workflow templates. For example, a policy management workflow may be created from a policy management workflow template configured with parameters by the policy management component 314.
The workflow management component 322 may modify, further specify and/or further configure established workflows. For example, the workflow management component 322 may select particular implementation resources of the virtual resource provider 202 to execute and/or be assigned to particular tasks. Such selection may be based at least in part on the computing resource needs of the particular task as assessed by the workflow management component 322. As another example, the workflow management component 322 may add additional and/or duplicate tasks to an established workflow and/or reconfigure information flow between tasks in the established workflow. Such modification of established workflows may be based at least in part on an execution efficiency analysis by the workflow management component 322. For example, some tasks may be efficiently performed in parallel, while other tasks depend on the successful completion of previous tasks.
The normal form of a policy may include a defined set of policy elements.
The policy identifier 404 may be any suitable identifier uniquely identifying the policy 402. For example, the policy identifier 404 may correspond to an alphanumeric and/or Unicode (collectively, “alphanumeric”) string or integer number. The policy identifier 404 may be utilized to reference the policy 402. Examples of policy effects include permit and deny. The effect(s) 406 element of the policy 402 may specify such policy effects. For example, a particular policy may permit one or more principals 408 to take one or more actions 410 with respect to one or more resources 412, while another policy may deny a set of actions 410 to a set of principals 408.
The principal(s) 408 element of the policy 402 may specify one or more entities known to the virtual resource provider 202 (
The action(s) 410 element of the policy 402 may specify one or more actions capable of being performed by the virtual resource provider 202 (
The resource(s) 412 element of the policy 402 may specify one or more resources of the virtual resource provider 202 (
The condition(s) 414 element of the policy 402 may specify a set of conditions to be satisfied before the policy 402 is enforced. For example, the condition(s) 414 may specify the conditions under which the principal(s) 408 are permitted to perform the action(s) 410 with respect to the resource(s) 412. Such conditions may be specified with any suitable condition specification language including suitable programming languages, and may include compound conditions, for example, specified with Boolean operators. Condition parameters may include any suitable data available to the virtual resource provider 202 (
By default, the policy 402 effect(s) 406 may be enforced when the specified principal(s) 408 request the specified action(s) 410 with respect to the specified resource(s) 412 and the specified set of condition(s) 414 are satisfied. However, the element modifiers 416-422 may indicate that the corresponding policy elements 408-414 specify exceptions. That is, that the policy 402 effect(s) 406 be enforced unless the specified principal(s) 408 are the actors, unless the specified action(s) 410 are requested, unless the specified resource(s) 412 are the subject of action and/or unless the specified set of conditions is satisfied. In addition, policy element 408-414 specifications may include “wildcard” values. For example, a wildcard value may match all and/or any valid values of the policy element 408-414. Alternatively, or in addition, wildcard values may be matched contextually. For example, a wildcard value may match all and/or any values of the policy element 408-414 that are valid with respect to a particular user, customer, group, and/or other context of a particular request.
As described above with reference to
The virtual resource provider 202 may be implemented as a collection of networked services.
Each virtual resource service 504, 506 may maintain a set of provisioned resources 520-522, 524-526 and incorporate a resource interface 528, 530. For example, each virtual resource service 504-506 may maintain one type of virtual resource 218-220 as described above with reference to
The policy management service 508 may act as a centralized policy management service for the virtual resource provider 502, managing, transforming, optimizing and distributing one or more sets of policies 534 to other services 504-506, 510-514 of the virtual resource provider 502. In addition, in at least one embodiment, services 504-506, 510-514 of the virtual resource provider 502 other than the policy management service 508 may maintain policies. For example, the virtual resource services 504-506 may each maintain a set of policies 536-538, 540-542 that are relevant to the respective set of provisioned resources 520-522, 524-526. Such policies 536-538, 540-542 may be established, viewed, edited and deleted with policy management interface 312 (
The authentication service 510 may provide authentication services for the virtual resource provider 502. For example, the authentication service 510 may authenticate an integrity and/or an authenticity of policies 534-542, 546. In addition, the authentication service 510 may authenticate an identity of clients 204-206 (
The decision data providers 512 may provide data required by policy enforcement components 316-318 (
The verification mode service 514 may provide verification mode functionality (e.g., as described above with reference to the verification mode component 320 of
The policy management service 602 of
Policies in the user-specified policy set 606 may be specified with alphanumeric strings. A first example of such a policy is:
permit administrators*
corresponding to permission for members of the group with identifier “administrators” to perform all actions with respect to all resources associated with a particular virtual resource provider 502 (
deny jsmith*unless current_time in business_hours
corresponding to denying permission for a user with identifier “j smith” to perform any action outside of business hours. A third example is:
corresponding to permission for the user with identifier “jsmith” to create, read, write and delete data objects at a particular virtual resource having resource identifier “data_object_service:zone_1::/public/images”. A fourth example is:
corresponding to permission for a user with identifier “msmith” to configure all virtual computer systems (provided by a virtual computing service “vcs”) and block data volumes (provided by a block data service “bds”) associated with a customer having customer identifier “example_corp”. Each user-specified policy may be associated with a unique identifier.
The policy normalization component 610 may generate sets of normalized policies corresponding to user-specified policies, and store the normalized policies in the normalized policy set 608. For example, each policy in the normalized policy set 608 may have a form corresponding to the normal form policy 402 of
Wildcards may be first “expanded” into a set of values, for example, based on a context of the user-specified policy, before being decompounded. The decompounding need not be complete with respect to policy element 408-414 (
The policy normalization component 610 may reduce a size of the normalized policy set 608, for example, by reducing redundancy in the normalized policy set 608. The policy normalization component 610 may detect that a newly added normal form policy is contained within the scope of one or more of the normalized policy set 608, and delete the newly added normal form policy from the normalized policy set 608. Normal form policies, such as the normal form policy 402 of
The policy normalization component 610 may further reduce the size of the normalized policy set 608 by compounding and/or recompounding normal form policies in the normalized policy set 608 with respect to policy elements 408-414 (
Different regions of the policy space(s) may be enforced by different policy enforcement components 316-318 (
The distributed nature of policy enforcement in the virtual resource provider 502 (
Policies with respect to actions that may be requested with the token interface 706 and/or the reporting interface may be enforced by a policy enforcement component 716 corresponding to one of the policy enforcement components 316-318 of
Requests at the reporting interface 712 may specify a type of report and/or level of reporting detail. For example, the workflow management component 322 (
Each virtual resource service 504-506 (
The interface server(s) 808 may (collectively) maintain a resource interface 828 and a policy enforcement component 830. The resource interface 828 may correspond to one of the resource interfaces 306-308 of
Clients 204-206 (
Some provisioned resources 812-818 (
In the resource interface 902 example, utilization of the verification mode versions 914-922 of the interface elements 904-912 indicates that the corresponding request is to be processed in the verification mode (is a “verification mode request”). For example, the resource interface 828 (
Each interface element 904-922 may correspond to a request (e.g., the request 544 of
The policy enforcement component 1002 may include a policy collector 1004 configured at least to collect relevant policies 534-542, 546 (
The policy collector 1004 may update the policy cache 1008 responsive to policy update notifications, for example, received from the policy management service 602 (
The decision data collector(s) 1012 may include one or more data collectors configured to interact with the decision data providers 512 (
The description now turns to example procedures that may be performed by, for example, the virtual resource provider 502 (
At step 1108, a request may be received with respect to one or more virtual resources. For example, a user may make the request with the resource interface 828 (
At step 1112, the request may be evaluated with respect to the relevant policy subset determined at step 1110. For example, the decision engine 1006 (
At step 1116, the request may be fulfilled. For example, the resource interface 828 (
At step 1208, the managed policy set may be optimized with respect to the normal form. For example, the policy normalization component 610 (
At step 1212, the one or more subsets of the managed policy set may be distributed to one or more policy enforcement components (PECs). For example, the policy distribution component 612 may notify policy enforcement components 316-318 (
At step 1214, a received request may be associated with one or more policy enforcement components 316-318 (
At step 1308, a next (e.g., a first) normal form policy may be selected from the generated set of normal form policies. At step 1310, it may be determined whether the selected normal form policy is contained in a managed set. For example, the policy normalization component 610 (
At step 1314, it may be determined whether there are more policies to be checked for redundancy in the generated normal form policy set. If so, the procedure may return to step 1308. Otherwise, the procedure may progress to step 1318. At step 1318, the managed policy set may be updated. For example, the policy normalization component 610 may update the normalized policy set 608 with those of the generated normal form policies not discarded as redundant. At step 1320, a managed policy set index may be updated. For example, the policy distribution component 612 may update the policy index 614 to account for the policies added to the normalized policy set 608 at step 1318.
At step 1408, it may be determined whether the verification mode indication is authentic and/or authorized. For example, the resource interface 828 (
At step 1410, a relevant policy subset may be determined. For example, the policy enforcement component 1002 (
Circle 1418 is a diagrammatic connector corresponding to a like diagrammatic connector 1502 of
At step 1508, the request received at step 1402 may be evaluated with respect to the relevant policy subset determined at step 1410 and the decision data collected at step 1416 and/or the substitute decision data, if any. For example, the decision engine 1006 (
At step 1512, the relevant policy subset determined at step 1410 may be mapped to a set of user-specified policies to be reported. For example, each of the relevant policy subset may be in normal form 402 (
As described above with reference to
At step 1606, a request may be sent to create a workflow based at least in part on the one or more actions determined at step 1604. For example, provisioning interface 310 (
At step 1610, execution of the component task(s) may be guided in accordance with the workflow. For example, the workflow management component 322 (
The various embodiments described herein may be implemented in a wide variety of operating environments, which in some cases may include one or more user computers, computing devices, or processing devices which may be utilized to operate any of a number of applications. User or client devices may include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless, and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also may include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also may include other electronic devices, such as dummy terminals, thin-clients, gaming systems, and other devices capable of communicating via a network.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk. Such a network may include, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof. The network may, furthermore, incorporate any suitable network topology. Examples of suitable network topologies include, but are not limited to, simple point-to-point, star topology, self-organizing peer-to-peer topologies, and combinations thereof.
In embodiments utilizing a web server, the web server may run any of a variety of server or mid-tier applications, including HTTP servers, FTP servers, CGI servers, data servers, Java servers, and business application servers. The server(s) also may be capable of executing programs or scripts in response requests from user devices, such as by executing one or more web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java C, C# or C++, or any scripting language, such as Perl, Python, or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, and IBM®.
The environment may include a variety of data stores and other memory and storage media as discussed above. These may reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers, or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device may include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (CPU), at least one input device (e.g., a mouse, keyboard, controller, touch screen, or keypad), and at least one output device (e.g., a display device, printer, or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices, and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also may include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.), and working memory as described above. The computer-readable storage media reader may be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules including program modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be utilized and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, may include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be utilized to store the desired information and which may be accessed by the a system device. Program modules, program components and/or programmatic objects may include computer-readable and/or computer-executable instructions of and/or corresponding to any suitable computer programming language. In at least one embodiment, each computer-readable medium may be tangible. In at least one embodiment, each computer-readable medium may be non-transitory in time. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
The use of the terms “a” and “an” and “the” and similar referents in the context of describing embodiments (especially in the context of the following claims) are to be construed to cover both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms “comprising,” “having,” “including,” and “containing” are to be construed as open-ended terms (i.e., meaning “including, but not limited to,”) unless otherwise noted. The term “connected” is to be construed as partly or wholly contained within, attached to, or joined together, even if there is something intervening. Recitation of ranges of values herein are merely intended to serve as a shorthand method of referring individually to each separate value falling within the range, unless otherwise indicated herein, and each separate value is incorporated into the specification as if it were individually recited herein. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., “such as”) provided herein, is intended merely to better illuminate embodiments and does not pose a limitation on the scope unless otherwise claimed. No language in the specification should be construed as indicating any non-claimed element as essential to the practice of at least one embodiment.
Preferred embodiments are described herein, including the best mode known to the inventors. Variations of those preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors expect skilled artisans to employ such variations as appropriate, and the inventors intend for embodiments to be constructed otherwise than as specifically described herein. Accordingly, suitable embodiments include all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Moreover, any combination of the above-described elements in all possible variations thereof is contemplated as being incorporated into some suitable embodiment unless otherwise indicated herein or otherwise clearly contradicted by context.
All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.
This application claims priority to and is a continuation of U.S. patent application Ser. No. 14/992,964, filed Jan. 11, 2016, entitled “DISTRIBUTED POLICY ENFORCEMENT WITH OPTIMIZING POLICY TRANSFORMATIONS” which is a continuation of U.S. patent application Ser. No. 12/961,104, filed Dec. 6, 2010, now U.S. Pat. No. 9,237,155, entitled “DISTRIBUTED POLICY ENFORCEMENT WITH OPTIMIZING TRANSFORMATIONS,” the content of which are incorporated by reference herein in their entirety
Number | Name | Date | Kind |
---|---|---|---|
5179591 | Hardy et al. | Jan 1993 | A |
5200999 | Matyas et al. | Apr 1993 | A |
5497421 | Kaufman et al. | Mar 1996 | A |
6044466 | Anand et al. | Mar 2000 | A |
6084969 | Wright et al. | Jul 2000 | A |
6097817 | Bilgic et al. | Aug 2000 | A |
6158010 | Moriconi | Dec 2000 | A |
6185316 | Buffam | Feb 2001 | B1 |
6453416 | Epstein | Sep 2002 | B1 |
6826686 | Peyravian et al. | Nov 2004 | B1 |
6851054 | Wheeler et al. | Feb 2005 | B2 |
6957393 | Fano et al. | Oct 2005 | B2 |
6959394 | Brickell et al. | Oct 2005 | B1 |
6985583 | Brainard et al. | Jan 2006 | B1 |
7010689 | Matyas et al. | Mar 2006 | B1 |
7073195 | Brickell et al. | Jul 2006 | B2 |
7139917 | Jablon | Nov 2006 | B2 |
7228417 | Roskind | Jun 2007 | B2 |
7320076 | Caronni | Jan 2008 | B2 |
7512965 | Amdur et al. | Mar 2009 | B1 |
7685430 | Masurkar | Mar 2010 | B1 |
7721322 | Sastry et al. | May 2010 | B2 |
7757271 | Amdur et al. | Jul 2010 | B2 |
7765584 | Roskind | Jul 2010 | B2 |
7836306 | Pyle et al. | Nov 2010 | B2 |
7890767 | Smith et al. | Feb 2011 | B2 |
7913084 | Medvinsky et al. | Mar 2011 | B2 |
7917764 | Futa | Mar 2011 | B2 |
8006289 | Hinton et al. | Aug 2011 | B2 |
8024562 | Gentry et al. | Sep 2011 | B2 |
8041954 | Plesman | Oct 2011 | B2 |
8059820 | Malaviarachchi et al. | Nov 2011 | B2 |
8086508 | Dheer et al. | Dec 2011 | B2 |
8151116 | van der Horst et al. | Apr 2012 | B2 |
8201215 | Dillaway et al. | Jun 2012 | B2 |
8275356 | Hickie | Sep 2012 | B2 |
8332922 | Dickinson et al. | Dec 2012 | B2 |
8370638 | Duane et al. | Feb 2013 | B2 |
8386800 | Kocher et al. | Feb 2013 | B2 |
8387117 | Eom et al. | Feb 2013 | B2 |
8418222 | Gbadegesin et al. | Apr 2013 | B2 |
8423759 | Moreau | Apr 2013 | B2 |
8453198 | Band et al. | May 2013 | B2 |
8464058 | Chen et al. | Jun 2013 | B1 |
8464354 | Teow et al. | Jun 2013 | B2 |
8533772 | Garg et al. | Sep 2013 | B2 |
8543916 | Anderson et al. | Sep 2013 | B2 |
8561152 | Novak et al. | Oct 2013 | B2 |
8621561 | Cross et al. | Dec 2013 | B2 |
8688813 | Maes | Apr 2014 | B2 |
8695075 | Anderson et al. | Apr 2014 | B2 |
8739308 | Roth | May 2014 | B1 |
8745205 | Anderson et al. | Jun 2014 | B2 |
8776190 | Cavage et al. | Jul 2014 | B1 |
8776204 | Faynberg et al. | Jul 2014 | B2 |
8868923 | Hamlet et al. | Oct 2014 | B1 |
8892865 | Roth | Nov 2014 | B1 |
20010008013 | Johnson et al. | Jul 2001 | A1 |
20010018739 | Anderson et al. | Aug 2001 | A1 |
20020016840 | Herzog et al. | Feb 2002 | A1 |
20020067832 | Jablon | Jun 2002 | A1 |
20020112181 | Smith | Aug 2002 | A1 |
20020161723 | Asokan et al. | Oct 2002 | A1 |
20020161998 | Cromer et al. | Oct 2002 | A1 |
20020162019 | Berry et al. | Oct 2002 | A1 |
20020194483 | Wenocur et al. | Dec 2002 | A1 |
20020198848 | Michener | Dec 2002 | A1 |
20030016826 | Asano et al. | Jan 2003 | A1 |
20030041110 | Wenocur et al. | Feb 2003 | A1 |
20030135740 | Talmor et al. | Jul 2003 | A1 |
20030145197 | Lee et al. | Jul 2003 | A1 |
20030149781 | Yared et al. | Aug 2003 | A1 |
20030188117 | Yoshino et al. | Oct 2003 | A1 |
20040015702 | Mercredi et al. | Jan 2004 | A1 |
20040088260 | Foster et al. | May 2004 | A1 |
20040103096 | Larsen | May 2004 | A1 |
20040128505 | Larsen | Jul 2004 | A1 |
20040128510 | Larsen | Jul 2004 | A1 |
20040131185 | Kakumer | Jul 2004 | A1 |
20040143733 | Ophir et al. | Jul 2004 | A1 |
20040158734 | Larsen | Aug 2004 | A1 |
20040162741 | Flaxer | Aug 2004 | A1 |
20040172535 | Jakobsson et al. | Sep 2004 | A1 |
20040215650 | Shaji | Oct 2004 | A1 |
20040243811 | Frisch et al. | Dec 2004 | A1 |
20050021978 | Bhat | Jan 2005 | A1 |
20050036611 | Seaton et al. | Feb 2005 | A1 |
20050043999 | Ji et al. | Feb 2005 | A1 |
20050060580 | Chebolu et al. | Mar 2005 | A1 |
20050080914 | Lerner et al. | Apr 2005 | A1 |
20050132192 | Jeffries et al. | Jun 2005 | A1 |
20050132215 | Wang et al. | Jun 2005 | A1 |
20050166263 | Nanopoulos et al. | Jul 2005 | A1 |
20050235148 | Scheidt et al. | Oct 2005 | A1 |
20050273862 | Benaloh et al. | Dec 2005 | A1 |
20050278547 | Hyndman et al. | Dec 2005 | A1 |
20060070116 | Park | Mar 2006 | A1 |
20060075462 | Golan et al. | Apr 2006 | A1 |
20060094406 | Cortegiano | May 2006 | A1 |
20060094410 | Cortegiano | May 2006 | A1 |
20060100928 | Waleczak, Jr. et al. | May 2006 | A1 |
20060129817 | Borneman et al. | Jun 2006 | A1 |
20060130100 | Pentland | Jun 2006 | A1 |
20060149677 | Shahine et al. | Jul 2006 | A1 |
20060174125 | Brookner | Aug 2006 | A1 |
20060190331 | Tollinger et al. | Aug 2006 | A1 |
20060206440 | Anderson | Sep 2006 | A1 |
20060206925 | Dillaway et al. | Sep 2006 | A1 |
20060218625 | Pearson et al. | Sep 2006 | A1 |
20060230284 | Fiske | Oct 2006 | A1 |
20060256961 | Brainard et al. | Nov 2006 | A1 |
20060271785 | Holtmanns et al. | Nov 2006 | A1 |
20060282878 | Stanley et al. | Dec 2006 | A1 |
20070005955 | Pyle et al. | Jan 2007 | A1 |
20070033396 | Zhang et al. | Feb 2007 | A1 |
20070037552 | Lee et al. | Feb 2007 | A1 |
20070061571 | Hammes et al. | Mar 2007 | A1 |
20070061885 | Hammes et al. | Mar 2007 | A1 |
20070136361 | Lee et al. | Jun 2007 | A1 |
20070157309 | Bin et al. | Jul 2007 | A1 |
20070174614 | Duane et al. | Jul 2007 | A1 |
20070186102 | Ng | Aug 2007 | A1 |
20070195779 | Judge et al. | Aug 2007 | A1 |
20070234410 | Geller | Oct 2007 | A1 |
20070250706 | Oba | Oct 2007 | A1 |
20070277231 | Medvinsky et al. | Nov 2007 | A1 |
20080010665 | Hinton et al. | Jan 2008 | A1 |
20080040773 | AlBadarin et al. | Feb 2008 | A1 |
20080066150 | Lim | Mar 2008 | A1 |
20080080718 | Meijer et al. | Apr 2008 | A1 |
20080083036 | Ozzie et al. | Apr 2008 | A1 |
20080163337 | Tuliani et al. | Jul 2008 | A1 |
20080168530 | Kuehr-McLaren et al. | Jul 2008 | A1 |
20080182592 | Cha et al. | Jul 2008 | A1 |
20080222694 | Nakae | Sep 2008 | A1 |
20080301444 | Kim et al. | Dec 2008 | A1 |
20080301630 | Arnold et al. | Dec 2008 | A1 |
20080313719 | Kaliski, Jr. et al. | Dec 2008 | A1 |
20090013402 | Plesman | Jan 2009 | A1 |
20090019134 | Bellifemine et al. | Jan 2009 | A1 |
20090049518 | Roman | Feb 2009 | A1 |
20090063381 | Chan | Mar 2009 | A1 |
20090100498 | Grossi | Apr 2009 | A1 |
20090119672 | Bussard et al. | May 2009 | A1 |
20090172793 | Newstadt et al. | Jul 2009 | A1 |
20090210712 | Fort | Aug 2009 | A1 |
20090217385 | Teow et al. | Aug 2009 | A1 |
20090222747 | May et al. | Sep 2009 | A1 |
20090254572 | Redlich et al. | Oct 2009 | A1 |
20090254978 | Rouskov et al. | Oct 2009 | A1 |
20090307742 | Forster | Dec 2009 | A1 |
20090320093 | Glazier et al. | Dec 2009 | A1 |
20100001833 | Alexander | Jan 2010 | A1 |
20100017603 | Jones | Jan 2010 | A1 |
20100037304 | Canning | Feb 2010 | A1 |
20100058060 | Schneider | Mar 2010 | A1 |
20100058072 | Teow et al. | Mar 2010 | A1 |
20100071056 | Cheng | Mar 2010 | A1 |
20100083001 | Shah et al. | Apr 2010 | A1 |
20100100941 | Eom et al. | Apr 2010 | A1 |
20100111296 | Brown et al. | May 2010 | A1 |
20100125894 | Yasrebi et al. | May 2010 | A1 |
20100131756 | Schneider | May 2010 | A1 |
20100142704 | Camenisch et al. | Jun 2010 | A1 |
20100154040 | Chiu | Jun 2010 | A1 |
20100205649 | Becker et al. | Aug 2010 | A1 |
20100239095 | Carter et al. | Sep 2010 | A1 |
20100251347 | Roskind | Sep 2010 | A1 |
20100269156 | Hohlfeld et al. | Oct 2010 | A1 |
20100290476 | Brindle et al. | Nov 2010 | A1 |
20100332845 | Asaka | Dec 2010 | A1 |
20110004753 | Gomi et al. | Jan 2011 | A1 |
20110010538 | Falk et al. | Jan 2011 | A1 |
20110035593 | Pyle et al. | Feb 2011 | A1 |
20110055562 | Adelman et al. | Mar 2011 | A1 |
20110055585 | Lee | Mar 2011 | A1 |
20110078107 | Almeida et al. | Mar 2011 | A1 |
20110083015 | Meier | Apr 2011 | A1 |
20110099362 | Haga et al. | Apr 2011 | A1 |
20110125894 | Anderson et al. | May 2011 | A1 |
20110131415 | Schneider | Jun 2011 | A1 |
20110138192 | Kocher et al. | Jun 2011 | A1 |
20110167479 | Maes | Jul 2011 | A1 |
20110179469 | Blinn et al. | Jul 2011 | A1 |
20110231317 | Arsac | Sep 2011 | A1 |
20110231940 | Perumal et al. | Sep 2011 | A1 |
20110239283 | Chern | Sep 2011 | A1 |
20110252229 | Belenkiy et al. | Oct 2011 | A1 |
20110265172 | Sharma et al. | Oct 2011 | A1 |
20110296497 | Becker | Dec 2011 | A1 |
20110311055 | Parann-Nissany | Dec 2011 | A1 |
20110320606 | Madduri et al. | Dec 2011 | A1 |
20120017095 | Blenkhorn et al. | Jan 2012 | A1 |
20120020474 | Kudoh et al. | Jan 2012 | A1 |
20120023334 | Brickell et al. | Jan 2012 | A1 |
20120036551 | Le Saint et al. | Feb 2012 | A1 |
20120054625 | Pugh et al. | Mar 2012 | A1 |
20120060035 | Kalmady et al. | Mar 2012 | A1 |
20120106735 | Fukuda | May 2012 | A1 |
20120110636 | Van Biljon et al. | May 2012 | A1 |
20120144034 | McCarty | Jun 2012 | A1 |
20120144459 | Nguyen et al. | Jun 2012 | A1 |
20120159577 | Belinkiy et al. | Jun 2012 | A1 |
20120233216 | Lim | Sep 2012 | A1 |
20120243687 | Li et al. | Sep 2012 | A1 |
20120245978 | Jain et al. | Sep 2012 | A1 |
20120265690 | Bishop et al. | Oct 2012 | A1 |
20120317414 | Glover | Dec 2012 | A1 |
20130031255 | Maloy et al. | Jan 2013 | A1 |
20130086662 | Roth | Apr 2013 | A1 |
20130086663 | Roth et al. | Apr 2013 | A1 |
20130111217 | Kopasz et al. | May 2013 | A1 |
20130132232 | Pestoni et al. | May 2013 | A1 |
20130145447 | Maron | Jun 2013 | A1 |
20130166918 | Shahbazi et al. | Jun 2013 | A1 |
20130191884 | Leicher et al. | Jul 2013 | A1 |
20130198519 | Marien | Aug 2013 | A1 |
20130254536 | Glover | Sep 2013 | A1 |
20130282461 | Ovick et al. | Oct 2013 | A1 |
20130318630 | Lam | Nov 2013 | A1 |
20140013409 | Halageri | Jan 2014 | A1 |
20140020051 | Lu et al. | Jan 2014 | A1 |
20140082715 | Grajek et al. | Mar 2014 | A1 |
20140122866 | Haeger et al. | May 2014 | A1 |
20140181925 | Smith | Jun 2014 | A1 |
20140208408 | Bilgen et al. | Jul 2014 | A1 |
20140281477 | Nayshtut et al. | Sep 2014 | A1 |
20140281487 | Klausen et al. | Sep 2014 | A1 |
20150082039 | Stalzer et al. | Mar 2015 | A1 |
20150089614 | Mathew et al. | Mar 2015 | A1 |
Number | Date | Country |
---|---|---|
WO2006077822 | Jul 2006 | WO |
WO2008024705 | Feb 2008 | WO |
WO2010128358 | Nov 2010 | WO |
WO2014063361 | May 2014 | WO |
Entry |
---|
Amazon, “Amazon Prime Video—security considerations,” Amazon.com General Help Forum, http://www.amazon.com/gp/help/customer/forums?ie=UTF8&cdForum=Fx2NFGOONPZEXIP&cdPage=1&cdSort=newest&cdThread=Tx18VZVGGU0Y32, latest reply Jun. 17, 2013, 3 pages. |
Berners-Lee et al., “Uniform Resource Identifier (URI): Generic Syntax,” Network Working Group Request for Comments: 3986, The Internet Society 2005, retrieved on Nov. 30, 2011, from http://www.ietf.org/rfc/rfc3986.txt. |
Ghorbei-Talbi et al., “Managing Delegation in Access Control Models,” International Conference on Advanced Computing and Communications, pp. 744-751, Dec. 18-21, 2007. |
International Search Report and Written Opinion dated Dec. 30, 2014, in International Patent Application No. PCT/US2014/057043, filed Sep. 23, 2014. |
International Search Report and Written Opinion dated Dec. 30, 2014, in International Patent Application No. PCT/US2014/057051, filed Sep. 23, 2014. |
International Search Report and Written Opinion dated Oct. 22, 2014, International Patent Application No. PCT/US2014/042569, filed Jun. 16, 2014. |
Krawczyk et al., “HMAC: Keyed-Hashing for Message Authentication,” Internet Engineering Task Force (IETF) Request for Comments: 2104, Feb. 1997, retrieved Jan. 22, 2015, from https://tols.ietf.org/html/rfc2104, pp. 1-11. |
Liscano et al., “A Context-based Delegation Access Control Model for Pervasive Computing,” 21st International Conference on Advanced Information Networking and Applications Workshops 2:44-51, May 21-23, 2007. |
Massachusetts Institute of Technology, “Kerberos V5 Installation Guide [online],” May 2012, retrieved on Jun. 27, 2012, from http://web.mit.edu/kerberos/krb5-1.10/krb5-1.10.2/doc/krb5-install.htm, 65 pages. |
Massachusetts Institute of Technology, “Kerberos V5 System Administrator's Guide [online],” May 2012, retrieved on Jun. 27, 2012, from http://web.mit.edu/kerberos/krb5-1.10/krb5-1.10.2/doc/krb5-admin.html, 57 pages. |
Massachusetts Institute of Technology, “Kerberos V5 UNIX User's Guide,” May 2012, retrieved on Jun. 28, 2012, from http://web.mit.edu/kerberos/krb5-1.10/krb5-1.10.2/doc/krb5-user.html, 38 pages. |
Patent Cooperation Treaty, “Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration,” issued to International Application No. PCT/US2012/058083 dated Dec. 27, 2012. |
Roth et al., “Hierarchical Data Access Techniques,” U.S. Appl. No. 13/431,882, filed Mar. 27, 2012. |
Simpson, “PPP Challenge Handshake Authentication Protocol (CHAP),” Network Working Group, Aug. 1996, retrieved from internet Jun. 27, 2012, http://etherpad.tools.ietf.org/html/rfc1994, 13 pages. |
TCG Published, “TPM Main Part 1 Design Principles,” Specification Version 1.2, Revision 116, Mar. 1, 2011, 184 pages. |
TCG Published, “TPM Main Part 2 TPM Structures,” Specification Version 1.2, Level 2 Revision 116, Mar. 1, 2011, 202 pages. |
TCG Published, “TPM Main Part 3 Commands,” Specification Version 1.2, Level 2 Revision 116, Mar. 1, 2011, 339 pages. |
U.S. Appl. No. 13/431,760, filed Mar. 27, 2012. |
U.S. Appl. No. 13/431,898, filed Mar. 27, 2012. |
U.S. Appl. No. 14/634,513, filed Feb. 27, 2015. |
Wang et al., “Extending the Security Assertion Markup Language to Support Delegation for Web Services and Grid Services,” IEEE International Conference on Web Services 1:67-74, Jul. 11-15, 2005. |
Wikipedia, “Physical unclonable function,” retrieved Aug. 22, 2013, from http://en.wikipedia.org/wiki/Physical_unclonable_function, 8 pages. |
Gomi; “Access Control Model and Design for Delegation Using Authorization Tokens,” Third International Conference on Privacy, Security, Risk and Trust and Third International Conference on Social Computing, IEEE, Oct. 9-11, 2011, pp. 1239-1242. |
Number | Date | Country | |
---|---|---|---|
20200328985 A1 | Oct 2020 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14992964 | Jan 2016 | US |
Child | 16911298 | US | |
Parent | 12961104 | Dec 2010 | US |
Child | 14992964 | US |