The present disclosure relates generally to distributed networks, and more specifically to a pluggable cloud security system.
Computing applications may be hosted in a cloud to provide access to a range of functionality and information. User devices can access the functionality and/or information provided by the cloud-hosted application. Application programming interfaces (APIs) provide a software interface between user applications executed on the user devices and the cloud-hosted applications. There exists a need for improved technology for operating the infrastructure to provide cloud-hosted application.
Certain embodiments of this disclosure are integrated into the practical application of a pluggable cloud security system that provides unique solutions to technical problems of previous technology, for example, by controlling which components of cloud-hosted applications are exposed to different user applications. For example, the disclosed system provides several technical advantages which may include 1) improved use of processing, memory, and networking resources because invalid and/or incomplete communications may be prevented from reaching resource-limited cloud infrastructure; 2) improved reliability of access to cloud-hosted applications through the automatic scaling of resources allocated to the pluggable cloud security system; 3) improved data security provided by the pluggable cloud security system acting as a proxy for any attempted attacks without requiring changes to the underlying code of cloud-hosted applications; and 4) improved identification of potential capacity overload at the cloud infrastructure hosting applications. As such, this disclosure may improve the function of computer systems used to host applications. For example, the system described in this disclosure may decrease processor and memory consumption by the infrastructure used to host applications, while providing improved security to the hosted applications and any associated information or data. As another example, the pluggable cloud security system may facilitate the more reliable, efficient, and secure use of legacy cloud-hosted applications without making any changes to the code of these applications.
Certain embodiments of this disclosure may include some, all, or none of these advantages. These advantages and other features will be more clearly understood from the following detailed description taken in conjunction with the accompanying drawings and claims.
In an embodiment, a system includes a plurality of nodes. Each node has a memory and a processor. At least one memory is configured to store rules indicating criteria for allowing communication between user applications and a hosted application executed by a cloud infrastructure. At least one processor is configured to receive data to be communicated to the cloud application, determine a source of the received data as a first user application, determine a channel used to transmit the received data, and determine, using the rules, whether the source and the channel satisfy first criteria included in the rules for allowing communication between the first user application and the hosted application. If it is determined that the source satisfies the first criteria for allowing communication between the first user application and the hosted application, transmission of the data is allowed to the cloud infrastructure hosting the hosted application. If it is determined that the source does not satisfy the first criteria for allowing communication between the first user application and the hosted application, transmission of the data is prevented to the cloud infrastructure hosting the hosted application, such that processing and memory resources of the cloud infrastructure are conserved.
For a more complete understanding of this disclosure, reference is now made to the following brief description, taken in connection with the accompanying drawings and detailed description, wherein like reference numerals represent like parts.
This disclosure recognizes problems of previous cloud computing technology. For example, in many computing infrastructures, at least some portion of cloud-hosted applications are relatively old legacy software that cannot be rewritten or reconfigured to take advantage of modern technology (e.g., because of established rules or regulations related to the use of this software). Previously, tools were lacking for scaling the use of such legacy hosted applications in a reliable and secure manner. The pluggable cloud security system of this disclosure solves these and other problems of previous technology, as described below with respect to
The user applications 104 may be software programs executing on computing devices (e.g., channels 102). The user applications 104 may interact with the hosted applications 156 executed on the resource infrastructure 146, as described further below. For example, a user application 104 may display a user interface for providing and/or requesting information to/from the hosted applications 156. For the purposes of example, three user applications 104a-c are illustrated in the example of
The pluggable cloud security system 112 includes one or more clusters 138, 142 of computing nodes 140a-c, 144a-c. Each computing node 140a-c, 144a-c includes hardware components as illustrated in the example of
The pluggable cloud security system 112 receives data 106 from a user application 104. Received data 106 may include a request 108 for information and/or to implement some action in a hosted application 156. Data 106 may also include authorization information 110. The authorization information 110 may include information, such as a password, registration key, or the like, that can be used to verify that the user application 104 is authorized to access or use a given hosted application 156. Data 106 is provided to the rule verification component 114.
The rule verification component 114 uses rules 122 to determine a pass/fail determination 124 indicating whether the data 106 should be transmitted to the resource infrastructure 146 or whether this transmission should be prevented. The rules 122 may be multilayered, such that a first layer of rules 122 verifies that the source 116 is validated to send data 106 to the resource infrastructure 146 and another layer verifies that the data 106 itself (e.g., the request 108 and/or any required authorization information 110) is appropriately structured to be provided to the resource infrastructure 146. If one of the rules 122 for one of these layers is not met, transmission of the data 106 to the resource infrastructure 146 is prevented. The pass/fail determination 124 improves the use of computing resources at the resource infrastructure 146, for example, by making utilization of the resource clusters 148, 152 more efficient and secure as described in greater detail with respect to various examples of this disclosure. The rules 122 may indicate types of information that should be included in the data 106 in order for the data to be transmitted to the resource infrastructure 146. For example, a rule 122 for transmitting data 106 that is associated with a given hosted application 156 may require that the request 108 included in the data 106 is compatible with the hosted application 156 (e.g., that the request has an appropriate content and format for use by the hosted application 156). For instance, a rule 122 may indicate that a request 108 must include certain request parameters to receive a passing pass-fail determination 124. In some cases, a rule 122 may indicate that a request 108 must include certain required terms or other information to receive a passing pass-fail determination 124. In some cases, a rule 122 may indicate that a request 108 must include a certain header or certain information in a header in order to receive a passing pass-fail determination 124, having certain header in the request 108. As another example, a rule 122 for transmitting data 106 that is associated with a given hosted application 156 may require that the authorization information 110 included in the data 106 is appropriate for the hosted application 156 (e.g., that the authorization information 110 has an appropriate content and/or format for being authenticated by the hosted application 156). In this way, the pluggable cloud security system 112 helps prevent data 106 that cannot be properly processed by the hosted application 156 from ever reaching the resource infrastructure 146. This prevents the waste of computing resources in handling such data 106.
In some cases, the rules 122 may be specific to channels 102 and/or user applications 104. For example, a first channel 102a (e.g., a desktop device channel) may have access to a first subset (up to all) components or functions of a hosted application 156, while a second channel 102b (e.g., a mobile device channel) and a third channel 102c (e.g., a telephone device channel) may have access to different subsets of components or functions of the hosted application 156. Similarly, different user applications 104a-c may have access to different hosted applications 156 and/or functions of the hosted applications 156. For instance, a first user application 104a may be able to access information from a hosted application 156, while another user application 104b may be able to both access and modify information of the hosted application 156.
In some embodiments, rules 122 may be specific to combinations of channels 102 and user applications 104. For example, the first user application 104a may have different rules 122 depending on the channel 102 used to execute the first user application 104a. To assess whether such rules 122 are satisfied, the pluggable cloud security system 112 may determine a source 116 of the received data 106. The source 116 may correspond to the channel 118 and/or user 120 from which the data 106 was received. The channel 118 indicates the channel 102 through which the data 106 was provided. The user 120 corresponds to the user application 104 from which the data 106 was provided. The pluggable cloud security system 112 determines, using the rules 122, whether the source 116 (e.g., the channel 118 and/or user 120) satisfy criteria for allowing communication of the data 106 (e.g., between the user 120 and/or channel 118 and the hosted application 156).
If it is determined that the source 116 satisfies the criteria indicated by the rules 122, the pluggable cloud security system 112 allows transmission of the data 106 to the resource infrastructure 146 hosting the hosted application 156. However, if it is determined that the source 116 does not satisfy the criteria indicated by the rules 122, the pluggable cloud security system 112 prevents transmission of the data 106 to the resource infrastructure 146 hosting the hosted application 156, such that computing (e.g., processing and memory) resources of the resource infrastructure 146 are conserved.
The pluggable cloud security system 112 may enforce rules 122 for which the different user applications 104 or associated APIs are subscribed (e.g., as configured by a user or administrator of the cloud environment 100). In some embodiments, the rules 122 are determined by accessing a rules repository 162 that stores predefined rules 164 shared by the user applications 104. For example, the shared rules 164 may be those established by an administrator of the cloud environment 100. When the shared rules 164 are changed or updated, these changes may be automatically propagated to the rules 122 used by the pluggable cloud security system 112. For example, the pluggable cloud security system 112 may automatically determine the rules 122 based at least in part on the predefined rules 164 of the rule repository 162 and store these rules in a memory (e.g., memory 304 of
The autoscaling component 126 further improves operation of the pluggable cloud security system 112 and the resource infrastructure 146 used for hosting the hosted applications 156. For example, the autoscaling component 126 may dynamically scale the number of nodes 140a-c, 144a-c available to a given cluster 138, 142 and/or the number of clusters 138, 142 based on a number of registered user applications 104 and/or the amount of data 106 being communicated via the pluggable cloud security system 112. The amount of data 106 being processed by the pluggable cloud security system 112 is determined as load 128. For example, the load 128 may be the number of API calls being sent to transmit the data 106. The load 128 may be an amount of computing resources consumed by the nodes 140a-c, 144a-c. If the load 128 exceeds a predefined threshold 130 (e.g., a threshold resource consumption, a threshold call count, or the like), a resource allocation/adjustment 132 may be made to the clusters 138, 142. For example, additional computing resources may be allocated to the clusters 138, 142 and/or nodes 140a-c, 144a-c.
The autoscaling component 126 may further facilitate the intelligent allocation of resources to the resource infrastructure 146 in order to further protect against overloading the resource infrastructure 146. For example, the autoscaling component 126 may determine a load trend 134 corresponding to changes in the usage of computing resources by the resource infrastructure 146 over time. For example, the load trend 134 may indicate an amount of memory (e.g., memory 314 of
In some embodiments, the pluggable cloud security system 112 can dynamically add and/or modify the rules 122 to adjust the hosted applications 156 available to the user applications 104 for security and/or latency needs. For example, if the load 128 at the pluggable cloud security system 112 exceeds a threshold 130 for a given user application 104, this may be indicative of some inappropriate use or malfunction of the user application 104. The rules 122 may be changed at least temporarily to block data from such a user application 104. Similarly, if an excessive amount of memory or other computing resource is consumed by a given user application 104, the rules 122 may be adjusted to at least temporarily block or limit data transmission from that user application 104.
The resource infrastructure 146 includes one or more resource clusters 148, 152 used to implement hosted applications 156. The resource infrastructure 146 may be referred to as a cloud infrastructure. Each of the resource clusters 148, 152 includes computing nodes 150a-c, 154a-c, as illustrated in the example of
The pluggable cloud security system 112 may help prevent nodes 150a-c, 154a-c from going out of memory or wasting processing resources by reducing the amount of invalid and/or security-compromising data 106 reaching the nodes 150a-c, 154a-c, thereby improving the overall efficiency of the resource infrastructure 146 without requiring any changes to the code of the hosted applications 156, which may not be feasible. For example, as described above, the pluggable cloud security system 112 may dynamically reject data 106 (e.g., sent as an API call from a user application 104) from reaching nodes 150a-c, 154a-c if the data 106 is not from an authorized user application 104 and allowed channel 102 (e.g., using rules 122, as described above). This may prevent hosted applications 156, including relatively inefficient legacy hosted applications 156, executed by the resource infrastructure 146 from performing unnecessary processing tasks and wasting memory or other resources.
At operation 204, the pluggable cloud security system 112 receives data 106 to be communicated to a hosted application 156. The data 106 may be included in an API call from a user application 104 to the hosted application 156. At operation 206, the pluggable cloud security system 112 determines the source 116 of the data 106, as described for example, with respect to the operations of the rule verification component 114 above. At operation 208, the pluggable cloud security system 112 determines whether the source 116 and other properties of the data 106 satisfy the rules from operation 202 (see, e.g., description of the implementation of rules 122 with respect to
At operation 214, the pluggable cloud security system 112 monitors the load 128 at the pluggable cloud security system 112. For example, the pluggable cloud security system 112 may determine an amount of memory used by the nodes 140a-c, 144a-c and/or a number of API calls received per period of time. At operation 216, the pluggable cloud security system 112 determines whether the load 128 exceeds a predefined threshold 130. If the threshold 130 is exceeded, the pluggable cloud security system 112 proceeds to operation 218 and allocates additional resources (e.g., nodes 140a-c, 144a-c and/or clusters 138, 142) to the pluggable cloud security system 112, such that the pluggable cloud security system 112 is not overloaded.
At operation 220, the pluggable cloud security system 112 determines a load trend 134 of the resource infrastructure 146 used to execute the hosted application 156 (see description of a load trend 134 above with respect to
The memory 304 is operable to store any data, instructions, logic, rules, or code operable to execute the functions of the pluggable cloud security system 112. The memory 304 may store instructions 308 for implementing any of the operations described above with respect to
The network interface 306 is configured to enable wired and/or wireless communications. The network interface 306 is configured to communicate data between the pluggable cloud security system 112 and other network devices, systems, or domain(s), such as the user applications 104 via channels 102 and the resource infrastructure 146. The network interface 306 is an electronic circuit that is configured to enable communications between devices. For example, the network interface 306 may include one or more serial ports (e.g., USB ports or the like) and/or parallel ports (e.g., any type of multi-pin port) for facilitating this communication. As a further example, the network interface 306 may include a WIFI interface, a local area network (LAN) interface, a wide area network (WAN) interface, a modem, a switch, or a router. The processor 302 is configured to send and receive data using the network interface 306. The network interface 306 may be configured to use any suitable type of communication protocol.
The memory 314 is operable to store any data, instructions, logic, rules, or code operable to execute the functions of the resource infrastructure 146. The memory 314 may store application instructions 318, which include instructions for implementing operations of the hosted applications 156, such as generating data 158 with a response 160 to the data 106 and/or request 108 received by the resource infrastructure 146. The memory 314 includes one or more disks, tape drives, or solid-state drives, and may be used as an over-flow data storage device, to store programs when such programs are selected for execution, and to store instructions and data that are read during program execution. The memory 314 may be volatile or non-volatile and may comprise read-only memory (ROM), random-access memory (RAM), ternary content-addressable memory (TCAM), dynamic random-access memory (DRAM), and static random-access memory (SRAM).
The network interface 316 is configured to enable wired and/or wireless communications. The network interface 316 is configured to communicate data between the resource infrastructure 146 and other network devices, systems, or domain(s), such as the pluggable cloud security system 112. The network interface 316 is an electronic circuit that is configured to enable communications between devices. For example, the network interface 316 may include one or more serial ports (e.g., USB ports or the like) and/or parallel ports (e.g., any type of multi-pin port) for facilitating this communication. As a further example, the network interface 316 may include a WIFI interface, a local area network (LAN) interface, a wide area network (WAN) interface, a modem, a switch, or a router. The processor 312 is configured to send and receive data using the network interface 316. The network interface 316 may be configured to use any suitable type of communication protocol.
While several embodiments have been provided in the present disclosure, it should be understood that the disclosed systems and methods might be embodied in many other specific forms without departing from the spirit or scope of the present disclosure. The present examples are to be considered as illustrative and not restrictive, and the intention is not to be limited to the details given herein. For example, the various elements or components may be combined or integrated with another system or certain features may be omitted, or not implemented.
In addition, techniques, systems, subsystems, and methods described and illustrated in the various embodiments as discrete or separate may be combined or integrated with other systems, modules, techniques, or methods without departing from the scope of the present disclosure. Other items shown or discussed as coupled or directly coupled or communicating with each other may be indirectly coupled or communicating through some interface, device, or intermediate component whether electrically, mechanically, or otherwise. Other examples of changes, substitutions, and alterations are ascertainable by one skilled in the art and could be made without departing from the spirit and scope disclosed herein.
To aid the Patent Office, and any readers of any patent issued on this application in interpreting the claims appended hereto, applicants note that they do not intend any of the appended claims to invoke 35 U.S.C. § 112(f) as it exists on the date of filing hereof unless the words “means for” or “step for” are explicitly used in the particular claim.