Embodiments described herein generally relate to network security. In particular, embodiments described generally relate to a dynamic, load-based, auto-scaling network security microservices architecture.
The breadth and complexity of network security threats targeting modern data centers is far and wide, and ever growing. The list includes: Worms, Spoofing, Sniffing, Hijacking, Trojan Horses, Denial of Service attacks, and Phishing, to name but a few network security threats.
Network security solutions that rely on deploying network security appliances throughout the datacenter suffer from a number of shortcomings. It may not be economically or administratively feasible to provide the number of such appliances that would be needed to monitor high traffic volumes. Scaling the number of appliances out or in may also be complex and time-consuming. It may not be feasible to provide sufficient network port density to allow the appliances to access various parts of the datacenter network. It may also be difficult to keep the appliances up to date with the latest threat signatures. Deploying such appliances may be difficult, especially, for example, to protect a cloud computing environment.
The various advantages of the embodiments disclosed herein will become apparent to one skilled in the art by reading the following specification and appended claims, and by referencing the following drawings, in which:
In the following description, numerous specific details are set forth. However, it is understood that embodiments of the disclosure may be practiced without these specific details. In other instances, circuits, structures and techniques have not been shown in detail to not obscure the understanding of this description.
References in the specification to “one embodiment,” “an embodiment,” “an example embodiment,” etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment need not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
Detailed herein are embodiments of datacenter network security detection and protection that allow for configuration, scaling out or in according to traffic load, easy deployment, and/or automatic updating with new security policies.
The connectivity of security services can be thought of as a security hierarchy in view of the sequential analysis performed and the general requirement to perform lower-level analysis prior to higher-level analysis. This concept is similar to the requirement that network switches and other equipment perform processing at one level (e.g., Ethernet) of the OSI stack before proceeding to a higher level (e.g., IP). As an example, TCP/IP processing will reassemble streams transported by applications. NOX processing relies upon the output of reassembled streams and does not generally operate on single packets. Likewise, encrypted or compressed streams must be decrypted or decompressed respectively prior to NOX processing. Analyses that can be performed on the same source data are neither required to occur concurrently nor in any specific order.
A general property of this security hierarchy is that each layer of the hierarchy accepts serviced data from a lower hierarchy level, processes the accepted data, and submits the processed data to a higher level of the hierarchy. In some embodiments, at each level of the hierarchy, a rule may determine that particular network traffic conforms to or violates a security policy and terminate processing by returning an “accept” or “reject” response to the lower levels of hierarchy. Such rules may be configured and may also be grouped into policies. Under some circumstances (such as detecting that encryption is not used), a layer of the hierarchy may be skipped and data provided to a higher level in the hierarchy. As an example, a rule may be configured to disallow encrypted traffic between two networks. If the result of processing the reassembled TCP/IP packets indicates the presence of encrypted payloads, a “reject” message would be transmitted to the TCP/IP layer causing the traffic to be discontinued.
Scaling security services by adding additional appliances may cause problems for datacenter administration. For example, replicating an entire appliance, rather than just the service or hierarchy level requiring additional performance, wastes datacenter resources.
Unfortunately, the scale-out illustrated in
Inserting and removing physical appliances is generally an involved process making this form of scaling ill-suited to rapidly changing demands or changing network traffic profiles. Maintaining consistency of all appliance configurations imposes additional burdens on the datacenter administrator. Determining how to configure the load balancing for the plurality of appliances may not be possible as the demands of different traffic streams on the hierarchy of security services may not be readily discernable. For example, it is not possible to predict which encrypted traffic streams require more DLP services without first decrypting the streams whereas the load balancing decision is made before decryption take places.
Scaling the performance of different security services is ordinarily unbalanced, i.e. the performance requirements of different levels of the security hierarchy are most often different and an increase in the requirement of one level is rarely accompanied by an equivalent performance increase requirement.
Network Security System
The data processed by the security system is transferred from a microservice to another (higher hierarchy) microservice using a data plane. In some embodiments, during such a transfer, the lower microservice makes a decision (based on configuration, current statistics and other information) as to which higher-hierarchy microservice to utilize. Such a decision may constitute a load-balancing decision to assure that the higher-hierarchy microservices are efficiently utilized. In other embodiments, the decision of which microservice to utilize is made by a more central entity.
As illustrated, network security system utilizes a hardware processor 102 (such as a central processing unit (CPU) or one or more cores thereof, a graphics processing unit (GPU) or one or more cores thereof, or an accelerated processing unit (APU) or one or more cores thereof) to execute microservices store in memory 104 (e.g., volatile memory such as Random Access Memory (RAM) and/or non-volatile memory such as disk). A networking interface (e.g., fabric or interconnect that is wired or wireless) 128 provides a means for communicating with a data center. Network security system may inspect traffic, detect threats, and otherwise protects a data center, as further described below, using microservices.
Embodiments of a network security system providing the above capabilities are now discussed in more detail. Network security system adds security to, or enhances the security of, a datacenter. In an embodiment, network security system is delivered in the form of a seed software application (e.g., downloaded). The seed software application instantiates microservices of the network security system on a host in the datacenter. As used herein a microservice container refers to where the microservice runs, most prominently a virtual machine. Once deployed, network security system utilizes available processing power (as detailed above) 102, memory 104, and network connection 128. In many scenarios, security may be added/configured using existing hardware and/or without having to purchase specific rack devices for particular functionality. The seed software application may be installed on any one of a wide variety of hosts—be they slow or fast, low-cost or high-cost, commodity or customized, geographically dispersed, part of a redundancy scheme, or part of a system with regular back-ups.
Once initiated, as also further described below, network security system, in some embodiments, will utilize the physical network interface 128 to explore the datacenter to discover what network segments exist, the security requirements of various network segments, and what hosts and hardware resources are available, and additional configuration information as needed. In an embodiment, the datacenter itself includes several machines with hypervisors, or physical hardware, and the network security system 100 offers microservices to communicate with and protect one or more of those internal virtual machines or physical hardware. After performing datacenter discovery, network security system will, in some embodiments, then offer or suggest available security tools to be selected either through a user interface, or by connections with existing enterprise management software. In one embodiment, once configured, network security system is deployed “in-line,” receiving substantially all of the packets headed for the datacenter, allowing network security system to intercept and block suspicious traffic before it arrives at the datacenter. With an understanding of the datacenter, network security system 100 deploys microservices to inspect traffic throughout the datacenter, not just at the ingress. In some embodiments, network security system is deployed in a “copy only” configuration, in which it monitors traffic, detects threats, and generates alerts, but does not intercept traffic before it arrives at the datacenter.
Referring again to
Network security system receives traffic via interface 128 to/from s datacenter. In one embodiment, network security system is placed in-line to inspect traffic, and potentially intercept a threat before it arrives at, or leaves, the datacenter. In alternate embodiments, network security system monitors the traffic heading into, or out of, the datacenter, in which case the network security system detects threats and generates alerts, but does not block the data. Hardware processor 102 then executes various data security microservices on the data. For example, as will be described further below with respect to
In an embodiment, microservices 108-122 are loaded from the Internet, via interface 128. For instance, in an embodiment, the microservices are downloaded from a web site or online store site. In some embodiments, microservices 108-122 are loaded into memory 104. In various embodiments, the microservices are loaded on and received from a non-transitory computer readable medium, such as digital media, including another disc drive, a CD, a CDROM, a DVD, a USB flash drives, a Flash memory, a Secure Digital (SD) memory card, a memory card, without limitation. Microservices received from a digital medium in one instance are stored into memory 104. The embodiments are not limited in this context. In further embodiments, a digital medium is a data source that constitutes a combination of hardware elements such as a processor and memory.
In most embodiments, network security system runs on a datacenter computer. In alternate embodiments, however, network security system is installed and runs on any one of a wide variety of alternate computing platforms, ranging from low-cost to high-cost, and from low-power to high power. In some embodiments, network security system is installed on and runs on a low-cost, commodity server computer, or, in some embodiments, on a low-cost rack-mounted server. As illustrated, hardware processor 102 is a single core processor. In alternate embodiments, hardware processor 102 is a multi-core processor. In alternate embodiments, hardware processor 102 is a massively parallel processor.
In some embodiments, virtual chassis 106 and microservices 108-122 may be hosted on any of a wide variety of hardware platforms used in the datacenter to be protected. Table 1, below, lists and describes a number of exemplary datacenter environments, any one of which hosts virtual chassis 106 and microservices 108-122:
In some examples, network security system scales out using available resources to accommodate higher traffic or load. In an exemplary embodiment CPU 102 and memory 104 is scaled out or in dynamically as needed: additional CPUs and memory are added if scaling out, and some CPUs and/or memory are powered down if scaling in. This scaling out is performed to allocate the additional CPUs and memory to those portions of the security hierarchy for which they are needed while not allocating additional CPUs and memory to those portions of the security hierarchy that can accommodate the higher traffic utilizing their existing allocation.
Microservices-Based Architecture
A microservices-based architecture allows for implementing components and network security tools (e.g., IP handling, TCP handling, SSL decryption, deep packet inspection) as separate microservices. By decoupling individual components, each of them is capable of scaling out, or in, to meet its performance requirements. Also, in an embodiment, these components are located independently of each other, even at separate geographic locations.
According to an embodiment, the microservices in virtual chassis 1301 communicate by exchanging HTTP requests using similar HTTP methods—GET, POST, PUT, DELETE, etc. In some embodiments, microservices in virtual chassis 1301 communicate using backplane microservice 1306: messages are published to backplane 1306 by a source microservice, and consumed from backplane 1306 by a destination microservice. In some embodiments, backplane 1306 supports communications among microservices in virtual chassis 1301, and communications between microservices of the network security system and enterprise software 1350, uses REST architecture. Communications with RESTful software, which is software that is compliant with REST, in some embodiments exchange structured data according to structures, like HTTP, URI, JSON, and XML, to name a few. RESTful architectures allow for flexibility in development, debugging and operation through the use of the Universal Resource Indicator (URI) as a multivariable field with hierarchy indicating variable values.
As illustrated, the network security system comprises virtual chassis 1301, management plane 1302, backplane 1306, and datapath plane 1304, each of which is a microservice implemented as a virtual machine or container and deployed on computing hardware. According to an embodiment, the host machine is equipped with a hypervisor, which is a piece of computer software, firmware or hardware that initiates and destroys virtual machines. In some embodiments, the host machine provides a micro-kernel along with micro-kernel instructions.
Management plane 1302 comprises microservices 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, and 1324, each implemented as a virtual machine or container deployed on a computer system.
As illustrated in
Infrastructure discovery microservice 1312 in one embodiment interfaces with and explores a datacenter 1342 that is to be protected. As referenced in some embodiments, infrastructure refers to resources provided by an entity, such as a customer, in the form of compute, storage and networking resources. In some embodiments, an infrastructure link connects factory 1310 and the infrastructure for bidirectional communication. Infrastructure discovery microservice 1312 in such embodiment explores datacenter 1342 via interface 1326 to determine what network segments exist, the security requirements of various network segments, what hosts and hardware resources are available, and/or additional configuration information as needed.
Scaler 1314 in one embodiment is a microservice that receives load statistics from at least one of the microservices, each of which monitors its own load statistics and reports them to scaler 1314. Statistics monitored by individual microservices include, for example a number of packets handled, a number of requests handled, a queue depth of packets and/or requests to handle, and its processor and memory utilization. Scaler 1314 analyzes the microservices' loading information and decides whether to ask the chassis controller 1316 to scale out or scale in certain microservices. In one embodiment, scaler 1314 compares load statistics received from a microservice to a scale-out-threshold to determine whether to suggest that the chassis controller 1316 spin up an additional microservice. In some embodiments, scaler 1314 compares load statistics received from a microservice to a spin-in-threshold to determine whether to suggest that the chassis controller 1316 shut down an instance of the microservice.
Chassis controller 1316 in an embodiment instantiates and deploys all of the microservices of network security system 1300. In some embodiments, for example during a reboot, power-on, or after a power failure, chassis controller 1316 is among the first microservices that is spun up, and instantiates and deploys the remaining microservices. In some embodiments, when the network security system 1300 is being rebooted or otherwise recovering from a catastrophic failure, even if chassis controller 1316 is not the first microservice to spin up, whichever microservice is first to spin up checks whether chassis controller 1316 is alive, and if not, triggers it to be spun up. Checking whether chassis controller 1316 is alive is accomplished in one embodiment by pinging a predetermined address. In alternate embodiments, checking whether chassis controller 1316 is alive comprises checking a status register that maintains status for the chassis controller 1316, and, potentially other microservices. In alternate embodiments, chassis controller 1316 broadcasts its status to microservices in virtual chassis 1300, letting them know it is alive.
Configuration microservice 1308 in one embodiment receives configuration information from a user through a user interface. In alternate embodiments, configuration microservice 1308 communicates with and receives configuration information from enterprise software 1350 via interface 1348. Config microservice 1308 in an embodiment communicates with enterprise software 1350 using the REST architecture, described above. In some embodiments, configuration microservice 1308 uses the datacenter configuration (e.g., learned from infrastructure discovery microservice 1312), and suggests security policies and tools for the user to select.
Compiler microservice 1324 in one embodiment receives security policy updates via interface 1346 from policy updates cloud 1330, which in an embodiment comprises a group of network security professionals constantly identifying potential security threats and devising policies for responding to them. The newly devised policies are received by compiler microservice 1324, converted, if necessary, to a language understood by various microservices, and conveyed to the microservices.
Various additional management microservices 1318, 1320, and 1322 are available to be deployed in a network security system. As illustrated, management plane 1304 comprises nine microservices, but the number of microservices is not so limited; the number could be higher or lower, without limitation.
Datapath plane 1304 comprises microservices implementing a segment microservice 1332 (sometimes referred to simply as “front end” or “FE”) and data security microservices 1334, 1336, and 1338. As illustrated, datapath plane 1304 communicates via bidirectional interface 1344, with external security tools 1340. Various embodiments of data security microservices are available to be deployed, and some are described further below. As illustrated, datapath plane 1304 comprises four microservices, but the number of microservices is not so limited. In some embodiments, datapath plane 1304 contains more than four microservices, and in another embodiment, datapath plane 1304 contains fewer than four microservices.
In some embodiments, segment microservice 1332 exchanges data with datacenter 1342. Segment microservice 1332 operates bidirectionally via interface 1328 to forward packets received from datacenter 1342 to appropriate datapath microservices, and to forward return packets received from datapath microservices to datacenter 1342. In an embodiment, the connections providing traffic received by segment microservice 1332 comply with the TCP/IP protocol, which characterizes the connection with a 5-tuple, as is understood by those of skill. Such a 5-tuple generally consists of a source IP address and TCP port, a destination IP address and TCP port and an interface. The interface 1328 may be specified by name, Ethernet MAC address or other means. In an embodiment, segment microservice 1332 adds a sixth tuple to the packets before forwarding them to the datapath microservices. In some embodiments, the sixth tuple carries routing information about which datapath microservices should receive the packet. The sixth tuple in an embodiment also carries an Identifier to uniquely identify a particular connection. If a datapath microservice detects a threat or malware, it uses the identifier and 5-tuple information to ask the segment microservice to discontinue that Ethernet connection.
Backplane 1306 comprises a communications microservice that enables communications among datapath microservices 1332 to 1338 of datapath plane 1304, communications between management microservices of management plane 1302 and datapath plane 1304, and indirect communications between management microservices 1308 to 1324. In one embodiment, management microservices 1308 to 1324 do not communicate directly with each other, so as to avoid a zombie connection when one or the other of the microservices should fail. Instead, in one embodiment, management microservices rely on backplane 1306 as a middle-man to convey messages between them.
In some embodiments, microservices 1301 to 1338 are individual virtual machines or containers, each running on commodity server hardware. By breaking the design into its constituent microservices, the network security system 1300 has the ability to scale out any of these functions, as required. This scale-out capability in some embodiments is able to employ additional available hardware.
As illustrated, the microservices 1301 to 1338 that make up a network security system 1300 are collectively grouped into a single entity, identified as virtual chassis 1302. In one embodiment, microservices 1304 to 1332 are located in a single environment (data center, private cloud or public cloud). In some embodiments, virtual chassis 1302 and microservices 1304 to 1332 are housed in a single server, computer, or rack-mount system. In some embodiments, virtual chassis 1302 and microservices 1304 to 1330 are housed in multiple hardware environments. In yet further embodiments, virtual chassis 1302 and microservices 1304 to 1332 are housed in geographically distinct environments.
In operation, network security system 1300 provides network security to data center 1342. In a first embodiment, network security system 1300 is deployed in a Data Center East/West Deployment, in which it is deployed in a data center (with virtualized compute) to inspect and enforce policy on traffic where both the source and destination of the flow are located within the data center. In a second embodiment, s network security system is deployed in a Data Center North/South Deployment, in which it is deployed in a datacenter to inspect and enforce policy on traffic where either the source or destination of the flow (but not both) are located outside the data center. In a third embodiment, s network security system is deployed in a Public Cloud Deployment, in which it is deployed in a public cloud to inspect and enforce policy on traffic that is either entering or leaving a specific tenant's partition in that cloud. In yet a fourth alternate embodiment, a network security system is deployed according to a combination of one or more of these alternatives.
Further, during operation, in one embodiment, the scale-out and scale-in functionality of any of microservices 1302 to 1338 is handled independently of the other microservices, according to resource consumption policies. In particular, each of the microservices in one embodiment monitors the amount of traffic it is handling, be it in the form of a number of data packets it is handling, a number of requests it is serving, a depth of its internal queues, or other means. In one embodiment, each of the microservices forwards its load statistics to Scaler 1314, which will decide whether to instantiate new microservices or shut down old ones.
In one embodiment, chassis controller 1316 manages the microservices 1302 to 1338. In particular, in one embodiment, chassis controller 1316 receives suggestions from scalar 1314, and determines whether to scale out or scale in various microservices. In one embodiment, managing microservices 1302 to 1338 is simplified by the chassis controller 1316 being managed as a single entity, just as a physical chassis would be. In one embodiment, chassis controller 1316 is programmed with a general resource control policy to be applied to one or more microservices 1302 to 1338. So, in one embodiment, even if the appliance grows very large, or if it spans multiple environments, or even if it spans multiple geographic locations, there is a single chassis controller 1316 to provide a management interface for a network administrator to access.
In one embodiment, microservices 1302 to 1338 provide built-in redundancy because each individual instance of a microservice is backed-by additional instances of that same microservice. If a single instance were to fail, the other microservices will continue operating while a replacement is spun up. It is also possible to provision more instances of a given microservice to provide n+1 redundancy.
In one embodiment, adding a new instance of a security control microservice, a new security policy for an existing microservice, or a new type of security microservice is done without requiring new hardware to be added, or existing hardware to be altered. In particular, in such embodiment, a new instance of a security control microservice is created by instantiating another instance of an existing microservices on the computer hardware hosting the microservices of virtual chassis 1316. A new type of microservice is thus deployed by chassis controller 1316, without impacting the performance of the network security system 1300.
The network security system uses a microservice-based architecture that deconstructs the network security appliance, breaking it down into a series of building blocks, each implemented as a microservice.
Management plane 1402 includes microservices 1408, 1410, 1412, 1414, 1416, 1418, 1420, 1422, and 1424, each implemented as a virtual machine or container deployed on a computer system).
As illustrated in
Configuration microservice 1408, chassis controller 1416, scaler 1414, compiler 1424, and infrastructure discovery microservice 1412 in several embodiments operate similarly to their similarly-named, similarly-numbered, corresponding microservices illustrated in and discussed with respect to
As illustrated, segment microservice 1432 of datapath plane 1404 is coupled via interface 1428, to a datacenter. As shown, datapath plane 1404 includes microservices 1434, 1436, 1438, 1440, and 1442, which inspects different aspects of traffic and focuses on different threats, and which communicate with backplane 1406 via interfaces 1444. The particular threats detected by the datapath services are known to those of skill in the art, so an exhaustive list is not provided here. Table 2, below, details examples of security threats with which datapath microservices in a network security system is concerned. To protect against these and other potential threats, security policies are loaded into each of the
Databases 1418 (
SQL database 1502 in an embodiment implements a Relational Database Management System (RDBMS).
NoSQL database 1504 is selected according to its particular performance or ease of use characteristics. In an embodiment, NoSQL database 1504 provides a key-value store, whereby records are indexed by a key that microservices use to retrieve record data. In some embodiments, NoSQL database 1504 allows atomic operations such as incrementing counters. According to an embodiment NoSQL database 1504 includes records that also contains metadata to track the generation count (data modification), a number that returns to the microservice during read operations, and can be used to ensure that the data being written was not modified since the last read. In some embodiments, NoSQL database 1504 includes a load balancing functionality to spread database requests upon multiple database instances.
Searchable database 1506 in an embodiment conducts character recognition on extracted network files, allowing them to be searched in the searchable database. In some embodiments, searchable database 1506 makes network data available to be viewed and analyzed in substantially real-time. In an embodiment, searchable database 1506 is scalable and can automatically instantiate additional database nodes to accommodate increased traffic loads. In some embodiments, searchable database 1506 scales horizontally to make use of additional computing resources as they become available. In an embodiment, searchable database 1506 reacts to a failure of one or more of its hardware nodes by reorganizing and rebalancing data among one or more remaining, available nodes.
Key-value store 1508 maintains key-value pairs providing quick access to identifiers for authenticating microservices and detecting imposters.
In an embodiment, any one or more of databases 1502-1508 include redundancy to support fault tolerance. In some embodiments, any one or more of databases 1502-1508 allows dynamic scaling out or in to satisfy performance requirements. In an embodiment, any one or more of databases 1502-1508 is omitted or not used. In some embodiments, instead of using one or more of databases 1502-1508, a memory, such as a register file, flash memory, static or dynamic RAM, is used to store such data. Databases 1502-1508, as with the other microservices, consist of microservices and are implemented and deployed according to a microservices architecture.
Referring again to
According to an embodiment, the network security system provides segment microservices each customized to interact with existing virtual and physical systems. Here, specially-designed segment microservice 1610A interacts with VMWare ESX 1614A and NetX agent 1612A, specially designed segment microservice 1610B is designed to interact with SDN 1612B and KVM 1614B, specially-designed segment microservice 1610C is designed to interact with WFP 1612C and Hyper-V 1614C, specially-designed segment microservice 1610D is designed to interact with NAT 1612D and Amazon EC-2 1614D, specially designed segment microservice 1610E is designed to interact with ACI 1612E and Cisco ACI 1614E, and specially designed segment microservice 1610F is designed to interact with a network agent 1612F running on Bare Metal 1614F. In operation, if the network security system is deployed in-line, each of the specially-designed segment microservices 1610A-1610F is configured to intercept packets, route them through datapath microservices, and then forward them to the corresponding datacenter environment. If deployed in a “copy only” configuration, the network security system monitors traffic and generates alerts if any threats are detected or suspected.
As illustrated, management plane 1602 communicates controls with at least one of the microservices in virtual chassis 11608, virtual chassis 21609, and at least one of the datacenter environments 1610A-F, 1612A-F, and 1614A-F. Therefore, management plane 1602 of the network security system, if enabled to do so during configuration, sends control messages to any datacenter environment, even ones that were in place before deployment of management plane 1602. In operation, traffic intercepted by segment microservices 1610A-F in some embodiments is forwarded to data security microservices in virtual chassis 1 or 2, 1608 or 1609. If virtual chassis 11608 or virtual chassis 21609 detects a threat, it informs the relevant datacenter environment. In such a scenario, in some embodiments, management plane 1602 sends a “halt” message to the relevant datacenter environment. In alternate embodiments, in such a scenario, management plane 1602 instructs one or more of hypervisors 1614A-1614F to reboot or restart its associated microservice.
Datapath plane 1904, as illustrated, includes segment microservice 1932, TCP/IP microservice 1934, SSL microservice 1936, DPI microservice 1938, NOX microservice 1940, and DLP microservice 1942. As these microservices were described above with respect to
In an embodiment, third party intelligence tool 1944 provides a communication link and defines an API which datapath plain 1904 uses to communicate with it. In some embodiments, third party threat intelligence tool 1944 compares the forwarded data to patterns of behavior known to it that match a threat known to third party threat intelligence tool 1944. In an embodiment, third party threat intelligence tool 1944 is associated with a global network of network security tools and services, with whom it regularly exchanges knowledge of third party threats. In the illustrated embodiment, third party threat intelligence tool 1944 instantiates four virtual machines to operate four operating systems, and those virtual machines are managed by a hypervisor.
In turn, if third party threat intelligence tool 1944 detects and resolves a threat, it informs dynamic threat intelligence 1948 of a new security policy to cover that new threat. In one embodiment, dynamic threat intelligence 1948 consists of a manned or automated security office that receives updates and publishes them to security microservices. In an embodiment, dynamic threat intelligence 1948 then forwards the updated security policies to SL compiler 1950, which in an embodiment converts the policy feeds into a common language, compiles them into binaries, and causes them to be distributed to the microservices, as described with respect to
In some embodiments, sandbox 1946 is contacted when DPI microservice 1938, NOX microservice 1940, or DLP microservice 1942 encounters a file type, a signature, a TCP/IP 5-tuple characteristics, a binary, or a code sequence that is suspicious, but unknown to any security policy. In such a scenario, suspicious but unknown data and packets are forwarded to sandbox 1946, where untested code, or untrusted programs from unverified third parties, suppliers, untrusted users and untrusted URLs are tested. Anything learned from sandbox 1946 is fed to dynamic threat intelligence 1948, and then to SL compiler 1950, which in an embodiment converts the policy feeds into a common language, compiles them into binaries, and causes them to be distributed to the microservices, as described with respect to
After completing the process to install, configure, and run the network security system microservices, a compiler microservice 1418 (
In the foregoing specification, specific exemplary embodiments have been disclosed. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.
Although some embodiments disclosed herein involve data handling and distribution in the context of hardware execution units and logic circuits, other embodiments can be accomplished by way of a data or instructions stored on a non-transitory machine-readable, tangible medium, which, when performed by a machine, cause the machine to perform functions consistent with at least one embodiment. In one embodiment, functions associated with embodiments of the present disclosure are embodied in machine-executable instructions. The instructions can be used to cause a general-purpose or special-purpose processor that is programmed with the instructions to perform the steps of the at least one embodiment. Embodiments of the present invention may be provided as a computer program product or software which may include a machine or computer-readable medium having stored thereon instructions which may be used to program a computer (or other electronic devices) to perform one or more operations according to the at least one embodiment. Alternatively, steps of embodiments might be performed by specific hardware components that contain fixed-function logic for performing the steps, or by any combination of programmed computer components and fixed-function hardware components.
Instructions used to program circuitry to perform the at least one embodiment can be stored within a memory in the system, such as DRAM, cache, flash memory, or other storage. Furthermore, the instructions can be distributed via a network or by way of other computer readable media. Thus a computer-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), but is not limited to, floppy diskettes, optical disks, Compact Disc, Read-Only Memory (CD-ROMs), and magneto-optical disks, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetic or optical cards, flash memory, or a tangible, machine-readable storage used in the transmission of information over the Internet via electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.). Accordingly, the non-transitory computer-readable medium includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
In some embodiments, systems, apparatuses, computer-implemented methods are described that include performing one or more of creating a new microservice of a first hierarchy, configuring data plane connectivity between the new microservice and a microservice of a second, higher-level hierarchy, configuring data plane connectivity between the new microservice and a microservice of a third, lower-level hierarchy, and configuring the microservices of the third, lower-level hierarchy to include the new microservice in load balancing decisions to the first hierarchy. In some embodiments, a new microservice is created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the new and existing microservices communicate over a backplane. In some embodiments, the new microservice is configured to use the data plane. In some embodiments, there exists, prior to a creation of the new microservice, a microservice of a same hierarchy level as the new microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include one or more of a hardware processor to execute instructions and a memory to store instructions, which when executed by the hardware processor cause a method to be performed, the method including selecting a first microservice of a first hierarchy, configuring the microservices of a second lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, disabling data plane connectivity between the first microservice and microservices of the second hierarchy, and terminating the first microservice. In some embodiments, the first microservice is terminated by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first and existing microservices communicate over a backplane. In some embodiments, there exists, during the termination of the first microservice, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include performing one or more of selecting a first microservice of a first hierarchy, configuring the microservices of a second lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, moving the first microservice to another server, configuring data plane connectivity to the first microservice to reflect a change in server, and configuring the microservices of the second hierarchy to include the first microservice in load balancing decisions to the first hierarchy. In some embodiments, the first microservice was created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first microservice and the microservices of a second lower-level hierarchy communicate over a backplane. In some embodiments, the first microservice is configured to use the data plane. In some embodiments, there exists, prior to the moving of the first microservice to another server, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include performing one or more of creating a new microservice of a first hierarchy, configuring data plane connectivity between the new microservice and a microservice of a second, higher-level hierarchy, configuring data plane connectivity between the new microservice and a microservice of a third, lower-level hierarchy, and configuring the microservices of the third level of hierarchy to include the new microservice in load balancing decisions to the first hierarchy. In some embodiments, the new microservice is created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the new and existing microservices communicate over a backplane. In some embodiments, the new microservice is configured to use the data plane. In some embodiments, there exists, prior to a creation of the new microservice, a microservice of the same hierarchy level as the new microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on the backplane. In some embodiments, the backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include performing one or more of selecting a first microservice of a first hierarchy, configuring the microservices of a second, lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, disabling data plane connectivity between the first microservice and microservices of the second hierarchy, and terminating the first microservice. In some embodiments, the first microservice is terminated by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first and existing microservices communicate over a backplane. In some embodiments, there exists, during the termination of the first microservice, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include performing one or more of selecting a first microservice of a first hierarchy, configuring the microservices of a second lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, moving the first microservice to another server, configuring data plane connectivity to the first microservice to reflect the change in server, and configuring a microservices of the second hierarchy to include the first microservice in load balancing decisions to the first hierarchy. In some embodiments, the first microservice was created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first microservice and the microservices of a second lower-level hierarchy communicate over a backplane. In some embodiments, the first microservice is configured to use the data plane. In some embodiments, there exists, prior to the moving of the first microservice to another server, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise managed networks.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include executing computer executable instructions contained on a non-transitory computer-readable medium to cause the processor to perform one or more of creating a new microservice of a first hierarchy, configuring data plane connectivity between the new microservice and a microservice of a second, higher-level hierarchy, configuring data plane connectivity between the new microservice and a microservice of a third, lower-level hierarchy, and configuring the microservices of the third level of hierarchy to include the new microservice in load balancing decisions to the first hierarchy. In some embodiments, the new microservice is created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the new and existing microservices communicate over a backplane. In some embodiments, the new microservice is configured to use the data plane. In some embodiments, there exists, prior to a creation of the new microservice, a microservice of the same hierarchy level as the new microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on a backplane. In some embodiments, a backplane and data plane comprise networks managed by the processor.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include executing computer executable instructions contained on a non-transitory computer-readable medium to cause the processor to perform one or more of selecting a first microservice of a first hierarchy, configuring the microservices of a second lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, disabling data plane connectivity between the first microservice and microservices of the second hierarchy, and terminating the first microservice. In some embodiments, the first microservice is terminated by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first and existing microservices communicate over the backplane. In some embodiments, there exists, during the termination of the first microservice, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on the backplane. In some embodiments, the backplane and data plane comprise networks managed by the processor.
In some embodiments, systems, apparatuses, computer-implemented methods are described that include executing computer executable instructions contained on a non-transitory computer-readable medium to cause the processor to perform one or more of selecting a first microservice of a first hierarchy, configuring the microservices of a second lower-level hierarchy to remove the first microservice from load balancing decisions to the first hierarchy, moving the first microservice to another server, configuring data plane connectivity to the first microservice to reflect a change in server, and configuring the microservices of the second hierarchy to include the first microservice in load balancing decisions to the first hierarchy. In some embodiments, the first microservice was created by an existing microservice. In some embodiments, the existing microservice is a configuration microservice. In some embodiments, the first microservice and the microservices of a second lower-level hierarchy communicate over the backplane. In some embodiments, the first microservice is configured to use 7e data plane. In some embodiments, there exists, prior to the moving of the first microservice to another server, a microservice of the same hierarchy level as the first microservice. In some embodiments, the load balancing decision utilizes information from microservices of a higher-level hierarchy than the first hierarchy. In some embodiments, data plane connectivity is configured through communication on the backplane. In some embodiments, the backplane and data plane comprise networks managed by the processor.
This application is a continuation of and claims priority to U.S. patent application Ser. No. 15/194,561, filed on Jun. 27, 2016, which application is a continuation of and claims priority to U.S. patent application Ser. No. 15/182,573, filed on Jun. 14, 2016, now U.S. Pat. No. 9,716,617, which are hereby incorporated by reference in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
9467476 | Shieh et al. | Oct 2016 | B1 |
20100299437 | Moore | Nov 2010 | A1 |
20160094384 | Jain et al. | Mar 2016 | A1 |
20160112475 | Lawson | Apr 2016 | A1 |
20160112521 | Lawson | Apr 2016 | A1 |
20160127199 | Ding | May 2016 | A1 |
20180152534 | Kristiansson | May 2018 | A1 |
Entry |
---|
Advisory Action from U.S. Appl. No. 15/182,573, dated Mar. 21, 2017, 3 pages. |
Final Office Action from U.S. Appl. No. 15/182,573 dated Jan. 9, 2017, 8 pages. |
Final Office Action from U.S. Appl. No. 15/194,561, dated Feb. 12, 2018, 5 pages. |
International Search Report and Written Opinion for Application No. PCT/US2016/058512, dated Mar. 8, 2017, 11 pages. |
Lewis J., et al., “Microservices,” Mar. 16, 2014, XP055347623, downloaded from the internet https://web.archive.org/web/20140316080617/http://martinfowler.com/articles/microservices.html on Feb. 20, 2017, 8 pages. |
Non-Final Office Action from U.S. Appl. No. 15/182,573 dated Aug. 25, 2016, 9 pages. |
Non-Final Office Action from U.S. Appl. No. 15/194,561, dated Sep. 8, 2017, 14 pages. |
Notice of Allowance from U.S. Appl. No. 15/182,573, dated Jun. 8, 2017, 15 pages. |
Notice of Allowance from U.S. Appl. No. 15/194,561, dated Aug. 1, 2018, 11 pages. |
Toffetti G., et al., “An Architecture for Self-managing Microservices,” International Workshop on Automated Incident Management in Cloud (AIMC'15), In conjunction with EuroSys'15, The European Conference on Computer Systems, Apr. 21, 2015, pp. 19-23. |
Number | Date | Country | |
---|---|---|---|
20190140903 A1 | May 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15194561 | Jun 2016 | US |
Child | 16174884 | US | |
Parent | 15182573 | Jun 2016 | US |
Child | 15194561 | US |