OPTIMIZED POLICY DATA STRUCTURE FOR DISTRIBUTED AUTHORIZATION SYSTEMS
20230161772 · 2023-05-25
Inventors
Cpc classification
International classification
G06F16/00
PHYSICS
Abstract
Methods and systems are disclosed for processing policies. A query policy tree with expressions and combination rules is received. A second policy tree stored in a policy repository is searched to select a sub-policy in a neutral format, reflecting a structure with a combination rule and a leaf with a condition expression. A depth of the structure is reduced through removal of redundant combination rules and combinable leaf expressions. The sub-policy tree is selected from the second stored policy tree by comparing the query policy tree. The selected sub-policy tree is copied to a third policy tree. Leaves of the third policy tree are evaluated against the leaves of the query policy. The nodes of the third policy are joined against the node of the query policy. The third policy is reduced to the neutral format by combining evaluated leaves and removing redundant combination rules. Finally, a response is provided.
Claims
1. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by a processor, perform a method for processing software authorization policies in order to translate the software authorization policies from a first format to a second format via a neutral format, the method comprising: receiving a user request for an authorization access comprising a first query policy tree, said first query policy tree comprising at least one condition expression and at least one combination rule; responsive to receiving the first query policy tree, searching a second policy tree stored in a policy repository to select a sub-policy tree, wherein policies of the first query policy tree and the second policy tree are organized in the neutral format, wherein the neutral format is a reduced tree data structure comprising at least one node having at least one combination rule and at least one leaf having at least one condition expression, wherein a depth of the reduced tree data structure is reduced through a removal of any redundant combination rules and combination of evaluated leaf condition expressions; selecting the sub-policy tree from the stored second policy tree based upon comparing against the first query policy tree; copying the selected sub-policy tree to a third policy tree; evaluating at least one leaf of the third policy tree against the at least one leaf of the first query policy tree; joining the at least one node having at least one combination rule of the third policy tree against the at least one node having at least one combination rule of the first query policy tree; reducing the third policy tree to the neutral format by combining the at least one evaluated leaf and removing redundant combination rules; and responding to the user request with the third policy tree, wherein said response indicates the authorization access associated with the user request.
2. The one or more non-transitory computer-readable media of claim 1, wherein the reduced tree data structure comprises a first node having a first plurality of leaves and a second node having a second plurality of leaves.
3. The one or more non-transitory computer-readable media of claim 2, wherein the first node comprises a first combination rule and the first plurality of leaves comprise a first plurality of condition expressions for satisfying the first combination rule.
4. The one or more non-transitory computer-readable media of claim 3, wherein the first combination rule requires all condition expressions of the first plurality of condition expressions must be met.
5. The one or more non-transitory computer-readable media of claim 4, wherein the second node comprises a second combination rule and the second plurality of leaves comprise a second plurality of condition expressions for satisfying the second combination rule.
6. The one or more non-transitory computer-readable media of claim 5, wherein the second combination rule requires that only one condition expression of the second plurality of condition expressions must be met.
7. The one or more non-transitory computer-readable media of claim 6, wherein the reduced tree data structure comprises a third node having a third plurality of leaves.
8. A method for processing software authorization policies in order to translate the software authorization policies from a first format to a second format via a neutral format, the method comprising: receiving a user request for an authorization access comprising a first query policy tree, said first query policy tree comprising at least one condition expression and at least one combination rule; responsive to receiving the first query policy tree, searching a second policy tree stored in a policy repository to select a sub-policy tree, wherein policies of the first query policy tree and the second policy tree are organized in the neutral format, wherein the neutral format is a reduced tree data structure comprising at least one node having at least one combination rule and at least one leaf having at least one condition expression, wherein a depth of the reduced tree data structure is reduced through a removal of any redundant combination rules and combination of evaluated leaf condition expressions; selecting the sub-policy tree from the stored second policy tree based upon comparing against the first query policy tree; copying the selected sub-policy tree to a third policy tree; evaluating at least one leaf of the third policy tree against the at least one leaf of the first query policy tree; joining the at least one node having at least one combination rule of the third policy tree against the at least one node having at least one combination rule of the first query policy tree; reducing the third policy tree to the neutral format by combining the at least one evaluated leaf and removing redundant combination rules; and responding to the user request with the third policy tree, wherein said response indicates the authorization access associated with the user request.
9. (canceled)
10. (canceled)
11. The method of claim 8, further comprising: before evaluating the third policy tree, receiving a request to translate the selected sub-policy tree from the neutral format to a second format.
12. The method of claim 11, further comprising: responsive to the request to translate, translating the third policy tree from the neutral format to the second format.
13. The method of claim 12, further comprising: responsive to the translating, performing the evaluating while the third policy tree is in the second format.
14. The method of claim 13, further comprising: translating the third policy tree from the second format back to the neutral format.
15. A system comprising at least one processor and at least one non-transitory memory storing computer executable instruction that when executed by the at least one processor cause the system to carry out actions for processing a software authorization policy in order to translate the software authorization policy from a first format to a second format via a neutral format comprising: receiving a user request for an authorization access comprising a first query policy tree, the first query policy tree comprising at least one condition expression and at least one combination rule; responsive to receiving the first query policy tree, searching a second policy tree stored in a policy repository to select a sub-policy tree, wherein policies of the first query policy tree and the second policy tree are organized in the neutral format, wherein the neutral format is a reduced tree data structure comprising at least one node having at least one combination rule and at least one leaf having at least one condition expression, wherein a depth of the reduced tree data structure is reduced through a removal of any redundant combination rules and combination of evaluated leaf condition expressions; selecting the sub-policy tree from the stored second policy tree based upon comparing against the first query policy tree; copying the selected sub-policy tree to a third policy tree; evaluating at least one leaf of the third policy tree against the at least one leaf of the first query policy tree; joining the at least one node having at least one combination rule of the third policy tree against the at least one node having at least one combination rule of the first query policy tree; reducing the third policy tree to the neutral format by combining the at least one evaluated leaf and removing redundant combination rules; and responding to the user request with the third policy tree, wherein said response indicates the authorization access associated with the user request.
16. The system of claim 15, further comprising the policy repository storing a plurality of policies.
17. (canceled)
18. (canceled)
19. The system of claim 16, the system further comprising: an interface communicatively coupled to the policy repository.
20. The system of claim 19, wherein the reduced tree data structure may be interacted with via the interface.
21. The method of claim 8, wherein the reduced tree data structure comprises a first node having a first plurality of leaves and a second node having a second plurality of leaves.
22. The method of claim 21, wherein the first node comprises a first combination rule and the first plurality of leaves comprise a first plurality of condition expressions for satisfying the first combination rule, and the second node comprises a second combination rule and the second plurality of leaves comprise a second plurality of condition expressions for satisfying the second combination rule.
23. The system of claim 15, wherein the reduced tree data structure comprises a first node having a first plurality of leaves and a second node having a second plurality of leaves.
24. The system of claim 23, wherein the first node comprises a first combination rule and the first plurality of leaves comprise a first plurality of condition expressions for satisfying the first combination rule, and the second node comprises a second combination rule and the second plurality of leaves comprise a second plurality of condition expressions for satisfying the second combination rule.
Description
BRIEF DESCRIPTION OF THE DRAWING FIGURES
[0007] Embodiments of the present teachings are described in detail below with reference to the attached drawing figures, wherein:
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015] The drawing figures do not limit the present teachings to the specific embodiments disclosed and described herein. The drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present teachings.
DETAILED DESCRIPTION
[0016] The subject matter of the present teachings is described in detail below to meet statutory requirements; however, the description itself is not intended to limit the scope of claims. Rather, the claimed subject matter might be embodied in other ways to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies. Minor variations from the description below will be understood by one skilled in the art and are intended to be captured within the scope of the present teachings. Terms should not be interpreted as implying any particular ordering of various steps described unless the order of individual steps is explicitly described.
[0017] The following detailed description references the accompanying drawings that illustrate specific embodiments in which the present teachings can be practiced. The embodiments are intended to describe aspects of the present teachings in sufficient detail to enable those skilled in the art to practice the present teachings. Other embodiments can be utilized, and changes can be made without departing from the scope of the claims. The following detailed description is, therefore, not to be taken in a limiting sense. The scope of the present claimed protection is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
[0018] In this description, references to “one embodiment,” “an embodiment,” or “embodiments” mean that the feature or features being referred to are included in at least one embodiment of the technology. Separate references to “one embodiment,” “an embodiment,” or “embodiments” in this description do not necessarily refer to the same embodiment and are also not mutually exclusive unless so stated and/or except as will be readily apparent to those skilled in the art from the description. For example, a feature, structure, act, etc. described in one embodiment may also be included in other embodiments but is not necessarily included. Thus, the technology can include a variety of combinations and/or integrations of the embodiments described herein.
[0019] Broadly, embodiments of the present teachings provide for methods, systems, and computer-executable instructions that, when executed by a processor perform a method of receiving a policy from a first cloud resource written in a language and format that is native to the first cloud resource and translate the policy into a neutral format. For example, in the neutral format the policy may be expressed in a tree data structure. Furthermore, in addition to being formatted in a neutral format, the tree data structure may further be a reduced tree structure, having the minimum depth of branches and leaves so as to format the reduced tree structure to a minimum effective depth. Through such a neutral, reduced tree data structure, policies may be more easily expressed and evaluated in multiple cloud resources.
[0020] Turning now to the figures,
[0021] In some embodiments, authorization services 102 may be communicatively coupled to a client device 106 through a communication via network 108. Client device 106, by way of non-limiting example, may be a desktop computer, laptop computer, smart phone, or a tablet, or any other computing device that is capable of connecting to network 108. Network 108 may be a cloud-based network, or any other wireless networking configured for connecting hardware to cloud resources. For example, network 108 may be a local area network (LAN), wide-area network (WAN), virtual private network (VPN) or the Internet. Broadly speaking, any type of network for providing communication between the various components of system 100 is contemplated. However, it will be appreciated that other techniques for enabling communication among various types of client devices and authorization services 102 are also contemplated.
[0022] As further illustrated in
[0023] Furthermore, each of cloud resources 110, 112, and 114 may be connected to a cloud resource server, including for example cloud resource servers 116, 118, and 120 respectively. Cloud resource servers 116, 118, and 120 may be a physical or virtual infrastructure for storing and processing the cloud resources and for making cloud resources available to end-users. Additionally, cloud resource servers 116, 118, and 120 may store the underlying data structure of each of cloud resources 110, 112, and 114, including for example, the policies associated with each of cloud resources 110, 112, and 114. For example, the policies associated with each of cloud resources 110, 112, and 114 may provide for the requirements of accessing the could resource, for authenticating a use case, or other uses known uses of policies. In some embodiments, policies for each of cloud resources 110, 112, and 114 may written and formatted in a manner that is tailored for running the policies natively on the cloud resource server associated with the specific cloud resource. For example, the policies of cloud resource 110 may not be able to be distributed and used in cloud resource 112 unless the authorization systems and/or policies are translated into the language or format of cloud resource 112. Furthermore, this process of translation must be repeated if the policy of cloud resource 110 is to be distributed and used in other cloud resources, such as cloud resource 114. As described in greater detail below, authorization services 102 may be transformed into a neutral format and language model into which authorization policies may be converted, providing for more streamlined and consistent translations across multiple platforms or resources.
[0024] Turning now to
[0025] In some embodiments, authorization services 204 may comprise a policy enforcement point component (PEP) 208 and a policy decision point component (PDP) 210. PEP 208 and PDP 210 may be in communicative connection with one another, and furthermore, may be a part of the same API of authorization services 204. In some embodiments, the request to access resource 206 may include one or more expressions (or attribute values) associated with the request and/or subject 202. The attribute values may correspond to certain attributes of subject 202, such as login region, and/or identifying information about the subject, may comprise the action sought from the request, and/or the data sought from resource 206. Continuing with the example described above, attribute values may correspond to a user named “Adam” providing the identifying information about the subject; the action may be that subject 202 is seeking to read certain data or information from resource 206; the region may be us-east-1”; and the data sought to be read is salary information. PEP 208 may be configured to receive the request and the included attribute values from subject 202 and upon receipt of the request, may express the attribute values into expressions and add an implied “AllOf” combination rule and organize them into a policy tree in the neutral format before submit the policy tree as a query request to PDP 210. In some embodiments, PDP 210 may be configured as the determination component, and may make the determination if the request and attribute values satisfy the conditions of one or more policies. For example, PDP 210 may search through the policies, which are stored and organized in the policy tree neutral format in policy repository 212, against the query policy tree by comparing attribute values in both policy trees; select the leaf expressions containing attribute values, ranges and scopes common in both policy trees; and select, from the root of the stored policy tree, the branch containing all the selected leaves; further search through the PIP 216, which organize additional attribute values, scopes, ranges or conditions and combination rules in the policy tree neutral format, for attribute values to narrow the values, scopes, ranges or conditions of the leaf expressions of the selected policy tree further; reduce the selected and narrowed policy tree to neutral format; respond to the query request from 208 with the selected and narrowed policy tree in neutral format. If the response received from 210 is an empty policy tree, 208 denies the request from 202. If the response received from 210 encompasses the attribute values in the request, 208 grant the request from 202.
[0026] In some embodiments, and to make the determination, PDP 210 may be in further communicative connection with a policy repository 212. Policy repository 212 may be a server or other database for storing one or more authorization policies that may be called out to by PDP 210. For example, policy repository 212 may be a private server configured for storing policies associated with one or more cloud resources comprising resource 206. In some embodiments, and as described in greater detail below, the policies stored in policy repository may comprise at least one combination rule and at least one expression. The expression of the policies may define the scope, range, value or condition of a particular attribute.
[0027] Furthermore, policy repository 212 may also be in communication and connection with policy administration point (PAP) 214. PAP 214 may be configured as a user interface for administrators, software engineers, or other users for creating, managing, testing, debugging, or otherwise manipulating and interacting with the policies stored in the policy repository. For example, PAP 214 may run on any of the devices as described herein, which is communicatively coupled to policy repository 212. Through PAP 214 a user, such as an administrator or senior software engineer, may access and interact with one or more policies stored in policy repository 212. For example, through PAP 214 an application developer, administrator, senior software engineer, or software may create or modify one or more policies stored in policy repository, by adding or removing combination rules, conditions, or any combination thereof.
[0028] In some embodiments, the policies stored in policy repository 212 and accessible through PAP 214 may be manipulated and translated into a neutral format, including for example a format neutral policy tree. For example, with access to the one or more polices stored in policy repository 212, a software agent may then devise or create a neutral format policy tree that one or more of the policies stored in policy repository 212 may be translated, converted, or otherwise transformed into. Such neutral format model may provide for more consistent and error-free translations when expressing a policy in multiple platforms. Furthermore, such neutral format model may also aid when PDP 210 is searching for policies stored in policy repository 212. For example, policy repository 212 may comprise a plurality of polices associated with a plurality of online resources and platforms. Non-limiting examples of such resources and platforms include, but are not limited to AWS, Microsoft Azure, SAP Cloud Analytics, S/4Hana, GCP, among any other currently known or yet to be developed cloud resources or platforms. Through computer-executable instructions, the stored policies in policy repository 212, a format neutral policy tree may be created and stored in policy repository 212. In some embodiments, the format neutral policy tree may comprise a generic policy data structure, providing a structure that policies can convert to and back from. For example, and as described in greater detail below, the format neutral policy tree model 222 may be designed or formatted as a reduced tree data structure for efficient storage. Specifically, in some embodiments, format neutral policy tree model 222 may strip down or compress the format of the policies to branches or sub-trees comprising AND/OR i.e. AllOf/AnyOf combinations of satisfying the requirements of the policy.
[0029] In addition to calling out to policy repository 212, PDP 210 may further call out to and communicate with policy information point (PIP) 216, which may provide additional values for processing and evaluating the access request. The calling message may be organized in the format of neutral format policy tree. For example, PIP 216 may serve as an intermediate component for retrieving additional attributes, or other data required for policy evaluation to provide the information needed by PDP 210 to decide whether to grant or deny the access request. As illustrated, to gather information to process the access request, PIP 216 may be communicatively coupled to at least one attribute repository 218 and at least one environment conditions 220. Attribute repository 218 may be configured for storing identifying information directed to the user or entity responsible for submitting the access request to access subject 202. The information may be expressed in the format of expressions, and relation among the expressions may be expressed as combination rules so that the information may be stored in the format of neutral format policy tree for easy search. For example, continuing with the example as described above, attribute repository 218 may comprise a listing of customer subscriptions for an enterprise. Such listing may comprise certain roles, permissions, or credentials associated with the enterprise and users associated with the enterprise. For example, resource 206 may be a payroll service storing sensitive information related to employee salaries in which only pre-approved users may be able to access. Continuing with the example from above, attribute repository 218 may store the credentials of all approved users that may access certain restricted portions of the payroll software. Because of the sensitive nature of the information available on the payroll sensitive, only certain users such as HR managers may be granted access to the payroll data.
[0030] Additionally, environment conditions 220 may be configured for defining the context of the access request, which may be used as an additional identifier for security purposes. The context information may be stored in the format of neutral format policy tree for easy search. For example, environment conditions 220 may be used to define certain information about the subject 202 making the access request, including the type of client device, the time at which the access request is made, the geo-location of the client device making the request, among other information that is indicative of the access request. Such environment information from environment conditions 220 may be used by PDP 210 to aid in determining the authenticity of the access request. For example, if it is determined that the access request is received from an atypical location, (e.g., an employee of a company that works primarily in the United States has a geolocation of China may be determined to likely be suspect activity).
[0031] Upon selection of the one or more policies from policy repository, attribute information from attribute repository 218, and environmental information from environment conditions 220, the information from the different sources may then be transferred to PDP 210. Upon receipt of the information, which is best in the format of neutral format policy trees, PDP 210 may translate it to the neutral format policy trees if it is. With the information in the neutral format of policy trees, PDP 210 may evaluate efficiently the access request with the retrieved policy, attribute information, and/or environmental information to determine whether to either grant of deny the access request. After evaluating all information, the determination in the form of either any empty policy tree or a policy tree defining the permitted scope of the access may then be sent to PEP 208 for execution. For example, if the determination made at PDP 210 concludes that the access request complies with the parameters set forth in the relevant policy, PEP 208 may grant access to resource 206 or alternatively, deny access to resource 206. However, continuing with the example from above, the relevant policy may limit access to salary information to approved users that have an HR manager role. Accordingly, if the attribute values associated with subject 202 do not contain values corresponding to an HR manager role, then the conditions of the policy are not satisfied and the subject will not be granted access to resource 206, i.e., salary information.
[0032] Turning now to
[0033] In some embodiments, tree data structure 302 may be reduced down through the removal of redundant combination rules or unsatisfied condition expressions. Specifically, any redundant or unnecessary rules and/or expressions may be stripped and removed from tree data structure 302, leaving only the essential combination rules and expressions required to maintain effectiveness of the policy. In other words, tree data structure 302 may be stripped or otherwise pared down to a minimum effective depth. For example, a policy may be formatted as having numerous nodes, leaves, and branches resulting in a tree data structure with numerous levels and sub-trees. Such a complex format results in unnecessary evaluation. For example, nodes of the tree data structure may contain combination rules that require evaluation of conditions that are unnecessary to reach a determination of whether the policy is satisfied or not. Through reduction, the tree data structure may be reduced in accordance with the methods described herein and strip or pare down the redundant rules. For example, in some embodiments, tree data structure 302 may comprise additional nodes, which may provide for sub-trees. For example, returning to
[0034] Through reducing tree data structure to only the essential combination rules and condition expressions, policy trees may be searched, compared, translated, joined or evaluated in a more efficient manner. Furthermore, in some embodiments, tree data structure 302 may be reduced down to remove all redundant combinations, such that tree data structure 302 may not be further reduced any further. Accordingly, reduced tree data structure 302 may be at the minimum depth to provide efficient storage and evaluation, while still retaining the purpose and functionality of a non-reduced policy.
[0035] Further, the format neutral policy tree model may provide many advantages and uses when evaluating or using policies modeled and stored in such a model. In some embodiments, the format neutral policy tree model may provide a neutral format for translating policies from one format to another. This may be particularly advantages for expressing a policy from one platform on another platform. For example, a user may wish to use data located in a payroll software in an accounting software. Prior to using the data in the accounting software, a relevant policy may need to be translated from a first format associated with the payroll software to a second format of the accounting software. In a first step, the policy may be translated from the first format to the neutral format of the format neutral policy tree model. Upon translating to the tree data structure of the format neutral policy tree model, the policy may then be converted to a second format associated with the accounting software. By first translating policies to a neutral format, translations of policies from one platform to another may be made consistently and with greater confidence that policies may be expressed in different platform and use case.
[0036] In some embodiments, tree data structure 302 may also provide for more efficient storage of policies in policy storage repositories. For example, prior to reducing a policy, a policy may comprise a plurality of depths of levels of combination rules and conditions that add to the digital footprint of the policy. By reducing the depth, branches, and/or conditions of a policy, the digital footprint will likewise be reduced, requiring less storage space in a policy repository. The reduction of policy digital footprints may be particularly advantageous when multiple policies are stored in a policy repository, as the reduced format may increase the number of policies stored within a single policy repository. Further, in addition to decreasing the digital footprint of policies for storing in a policy repository, the reduced nature of the format neutral policy tree model may aid during the searching of policies within the policy repository. For example, by reducing the depth of the tree data structure, searching may be performed more efficiently and with less parameters that must be searched.
[0037] In some embodiments the branches and leaves of tree data structures may be expressed through object data models for use in object-oriented programs. For example,
[0038] Through such an object-oriented expression of the tree data structure, traversal to the branches or leaves of the tree data structure is efficient. In some embodiments, traversing toward the root of the tree data structure may require searching the UseRule array 405 against a known rule object or a known expression object. A rule object is the root of a policy tree if it is not contained in the UseRule[ ] array of any Rule object. For example, when searching through all policies, it may be more efficient if an implicit but not stored root node object is added that has a “anyOf” combination rule and a UseRule array containing all root Rule objects.
[0039] Turning to
[0040] Turning now to
[0041] Upon a successful log-in, a user's information may be identified or otherwise known establishing what permissions the user has and what features or aspects of the application the user may access. The information associated with the user may be constructed or formulated as a tree data structure, in the neutral format as described above for efficient further processing or evaluation. For example, in some embodiments the user's information may be formulated as query policy 620. In some embodiments, query policy 620 may comprise at least one node and at least one leaf of user information. For example, query policy 620 may comprise node 612 and leaves 614 and 616. Node 612 may comprise the combination rule for the user information, including for example an “allOf” combination rule. In further embodiments, the combination rule for user information may not be explicitly sent from the PEP 602 to PDP 604 and instead may be an implied rule. Further, leaves 614 and 616 may comprise additional information associated with the requesting user, including the user region in leaf 614 and the user's username in leaf 616. In some embodiments, user information may be constructed or formulated further from other information repositories. For example, as depicted in
[0042] After receiving the request and the user information, PDP 604 may call out to policy repository 606 by sending a query policy 620 formulated the policy tree neutral format to locate policies having conditions that match the user information. For example, query policy 620 may have a node 622 comprising a combination rule of “allOf” and a leaf 624 having a condition expression for a user region. As described in greater detail above, the policies stored in policy repository 606 may be stored in a reduced neutral format, including for example reduced tree data structures. Upon identifying the policies stored in the policy repository that are associated with query policy 620, the located policies may be sent to PDP 604 for creating a determination. For example, response policy 630 may be identified as having matching conditions with query policy 620, with response policy 630 having a node 632 comprising a combination rule of “allOf” and leaves 634, 636, and 638 having condition expressions for “Action”, “Data”, and “UserDept” respectively.
[0043] Further, PDP 604 may call out to PIP 608 to locate one or more information associated with the requesting user, including for example the role or department associated with the requesting user. For example, PDP 604 may send a query 640 in the policy tree neutral format having a node 642 comprising a combination rule of “allOf” and a leaf 544 having a condition expression for “UserName.” PIP 608 may then respond by sending response policy 630 in the policy tree neutral format, comprising a node 652 and leaves 654 and 656. Similar to query policy 620 as described above, node 652 may comprise an implicit “allOf” combination rule. Further, leaves 654 and 656 may comprise information associated with the requesting user's department and username, respectively.
[0044] During evaluation of the policy, PDP 604 can join policies having matching the condition expressions reducing the tree data structures when redundant combination rules are identified and make a determination whether the policy is satisfied. For example, PDP 604 may join requesting user information 610, additional user information 650 with response policy 630. Because of conflicting leaves 654 and 638, during the joining and evaluation, PDP 604 may make a determination that the UserDept. of leaf 654 and the UserDept. of leaf 638 are not equals. For example, as depicted in
[0045]
[0046] Computer-readable media include both volatile and nonvolatile media, removable and nonremovable media, and contemplate media readable by a database. For example, computer-readable media include (but are not limited to) RAM, ROM, EEPROM, flash memory or other non-transitory memory technology, CD-ROM, digital versatile discs (DVD), holographic media or other optical disc storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These technologies can store data temporarily or permanently. However, unless explicitly specified otherwise, the term “computer-readable media” should not be construed to include physical, but transitory, forms of signal transmission such as radio broadcasts, electrical signals through a wire, or light pulses through a fiber-optic cable. Examples of stored information include computer-useable instructions, data structures, program modules, and other data representations.
[0047] Finally, network interface card (NIC) 724 is also attached to system bus 704 and allows computer 702 to communicate over a network such as network 726. NIC 724 can be any form of network interface known in the art, such as Ethernet, ATM, fiber, Bluetooth, or Wi-Fi (i.e., the IEEE 802.11 family of standards). NIC 724 connects computer 702 to local network 726, which may also include one or more other computers, such as computer 728, and network storage, such as data store 730. Generally, a data store such as data store 730 may be any repository from which information can be stored and retrieved as needed. Examples of data stores include relational or object-oriented databases, spreadsheets, file systems, flat files, directory services such as LDAP and Active Directory, or email storage systems. A data store may be accessible via a complex API (such as, for example, Structured Query Language), a simple API providing only read, write, and seek operations, or any level of complexity in between. Some data stores may additionally provide management functions for data sets stored therein such as backup or versioning. Data stores can be local to a single computer such as computer 728, accessible on a local network such as local network 726, or remotely accessible over Internet 732. Local network 726 is in turn connected to Internet 732, which connects many networks such as local network 726, remote network 734 or directly attached computers such as computer 736. In some embodiments, computer 702 can itself be directly connected to Internet 732, such as for example, the Internet of Things (IoT) 740.
[0048] Although the disclosure has been described with reference to the embodiments illustrated in the attached drawing figures, it is noted that equivalents may be employed, and substitutions made herein without departing from the scope of the disclosure as recited in the claims.
[0049] Having thus described various embodiments of the disclosure, what is claimed as new and desired to be protected by Letters Patent includes the following: