The following relates to systems and methods for monitoring data in a client environment.
Organizations face increased pressure to manage operational costs while maintaining uninterrupted service. Rapidly changing and increasingly severe security threats can overwhelm information technology (IT) resources, posing increased risk to corporate reputations through the loss or theft of sensitive internal data and customer information.
For many organizations, unseen perils can also undermine strategic growth. For example, fraud-based financial threats, compliance violations, security breaches, malicious attacks, and data theft of ever-increasing complexity pose a daunting challenge for corporate enterprises. Therefore, a need exists for a comprehensive risk management solution which can leverage limited resources cost-effectively while balancing operational risk management, IT security, and threat response considerations.
In one aspect, there is provided a method of messaging comprising: receiving a first message from an external source, the first message comprising a header component included by the external source and a payload; generating a second message from the first message by modifying the first message to add at least one additional header component for routing the second message internally within a messaging framework; and routing the second message to at least one component in the messaging framework using the routing header.
In another aspect, there is provided a method of monitoring event data comprising: receiving event data from a data source; generating an event object from the event data; analyzing the event object using at least one correlator to determine a threat to an entity associated with the data source; generating a notification when the at least one correlator detects the threat; and sending the notification to a monitoring service to generate a ticket for resolving the threat.
In yet another aspect, there is provided a method of monitoring data in a client environment, the method comprising: obtaining data from the client environment indicative of activity within the client environment at a first component within the client environment; and the first component sending the data to a second component over a secure connection with the second component, the second component being located remote from the first component in a monitoring backend infrastructure.
In yet another aspect, the second component is located an intermediary separate from a central monitoring service, the above method further comprising the second component processing the data to generate a notification and sending the notification to a third component for initiating a remediation of a threat associated with the notification.
In yet another aspect, there is provided a computer readable storage medium comprising computer executable instructions for performing the methods above.
In yet another aspect, there is provided a system configured to perform the methods above.
Embodiments will now be described by way of example only with reference to the appended drawings wherein:
It will be appreciated that for simplicity and clarity of illustration, where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements. In addition, numerous specific details are set forth in order to provide a thorough understanding of the examples described herein. However, it will be understood by those of ordinary skill in the art that the examples described herein may be practiced without these specific details. In other instances, well-known methods, procedures and components have not been described in detail so as not to obscure the examples described herein. Also, the description is not to be considered as limiting the scope of the examples described herein.
It will also be appreciated that the examples and corresponding diagrams used herein are for illustrative purposes only. Different configurations and terminology can be used without departing from the principles expressed herein. For instance, components and modules can be added, deleted, modified, or arranged with differing connections without departing from these principles.
Systems and methods are provided which enable client environments, such as corporate and government enterprises, to adopt an integrated, strategic approach to governance, risk and compliance.
The systems described herein provide a “cloud-based” information security service that provides such enterprises with round-the-clock visibility into security issues and risks across the enterprise. An advanced security information and event management system, also referred to as an information assurance portal (IAP), is described herein, which enables client customers to select various services such as threat and vulnerability management, asset classification and tracking, and business threat and risk assessments through a software-as-a-service portal. It can be appreciate that an assessment performed by the IAP can occur against any type of asset in the customer's system, i.e. more than just technical assets. For example, the customer can define a policy as an asset in their asset system. From here the customer may choose to assess this asset which will result in a contextual action. In the case of a policy, it may prompt the user to upload the policy where it will be reviewed by an analyst in the backend. With a server, it could launch an automated vulnerability scan. The services enabled by the IAP described herein include, without limitation:
Threat Management-24×7 monitoring and correlation of activity and traffic on all connected security devices deployed throughout an organization to identify and escalate potential threats and malicious activity. Such threat management enables corrective action to be taken and support to be provided by expert security analysts.
Vulnerability Management—On-demand scanning and assessment of the technical and environmental vulnerabilities in an organization's computing infrastructure to identify, quantify, and prioritize the information security strengths and weaknesses of the computing environment, and provide a plan-of-action to mitigate the risk of serious consequences.
Client Asset Classification and Tracking—Tightly couples organizational information assets and threat and vulnerability data to effectively measure and present a complete picture of business risk.
Business Threat and Risk Assessment—In-depth analyses and interpretations of the risk present in an organization's business and technical environment. This risk assessment enables an organization to identify weaknesses that may contribute to failure of confidentiality, integrity, availability, or accountability; and recommend actions to mitigate risk to an acceptable level.
The information provided by the IAP can be configured to focus on incidents impacting business operations, thus supporting effective risk based decision making at all levels of the organization, based on accurate real-time information about the organization's current security posture and exposure to the external environment. For executives this means a top-down view of the organization's information security risk exposure and how it affects their business objectives and critical information assets. For information security managers it provides an operational view of the status of security incidents; the organization's current security posture; and enables more effective decisions for planning security operations and executing day-to-day activities. For information security analysts and IT practitioners it provides an advanced toolset (including state-of-the-art correlation algorithms, security information event management, and workflow applications) for identifying and correlating threat events, prioritizing and responding to incidents, managing vulnerabilities, and supporting daily security operations
The IAP described herein provides several strategic advantages. The IAP can be used to improve threat protection by enabling 24×7 visibility and facilitating effective incident response to external and internal threats and unauthorized intrusions. The IAP may also facilitate compliance by providing enhanced information security controls, online real-time information, and comprehensive reporting to ensure compliance with various industry regulations. The IAP can also enable improved operational efficiency by providing more effective management and monitoring of a security environment with real-time views of the efficiencies/inefficiencies of information security systems, allowing key stakeholders to identify where and how performance can be improved. Various other advantages include, without limitation, proactive management to improve processes for identifying and remediating technical vulnerabilities before they impact your business, cost savings to reduces costs (e.g. for staffing, training, maintenance, and infrastructure) associated with securing information assets, and enhanced security posture, which ensures proactive risk management and improves an organization's overall security posture by gaining a deeper knowledge of potential problems and allowing senior leadership to make decisions faster and more effectively.
Turning now to
An information assurance portal (IAP) 12 is also shown in
Threat management (MTM): The identification and management of threats which are materializing with the client environment 10.
Vulnerability management (VM): The identification and management of vulnerabilities within the client environment 10.
Operational risk modeling (ORM): Based on inputs from the threat and vulnerability management, the identification of risk scenarios beyond the risk appetite of the client environment 10.
Business risk modeling (BRM): Based on the performance of the other services, an overall business risk model which can be used to communicate enterprise risk, and provide information to assist with security roadmap and budgeting decisions.
The IAP 12 may be configured in various ways, as illustrated in
One example of components that may execute the functionality of the IAP 12 is shown in
An example architecture for the collector appliance 54 will now be described. The collection appliance architecture in this example resides in the client environment 10 and accepts log data from data sources 50 in that environment 10. The collector appliance 54 may be configured to support, for example, reception of SYSLOG data over UDP and TCP, SYSLOG data over TCP/SSL on port 814, and also SNMP traps. A collector gateway (not shown) may be provided at an intermediary 30 and shared amongst a number of collector appliance users. The collector gateway is used to collect data coming in from various collector appliances 54, decompressing and validating the integrity of the data, and sending the data to the client's leaf node 52. The collector appliances 54 deployed in client environments 10 may connect to the collector gateway over, for example, TCP port 450. The protocol used may be a custom protocol developed for the collector architecture. To install the collector appliance 54 in the example described herein, the customer boots a supplied OS image and follows various installation instructions. In order for the collector appliance 54 to establish a connection with the gateway, the appliance 54 is given connectivity to TCP port 450 on the collector gateway, wherein the IAP 12 has configured the collector gateway to permit a connection with the collector appliance 54. This involves assignment of a “source name”, and a “source key” to the collector appliance 54.
The customer supplies the same source name and source key during installation of the collector appliance 54, which is akin to providing a username and password that the collector software uses to “log in” to the gateway. From the console, the collector appliance 54 provides several commands that can be used, including without limitation:
Reconfigure: launch the configuration menu interface, allowing the customer to reconfigure the appliance 54 without reinstalling it (e.g., change IP address).
Lwcflush: This command deletes all dynamic data on the appliance 54, and resets it to appear as it would have after installation. This can be used to troubleshoot problems if the collector is not functioning correctly.
Halt: Shutdown the appliance 54.
Referring now to
Example configurations for the assurance services 34, illustrating operation of the core IAP services 34, are shown in
As will be explained in greater detail below, the hub 40 is a central component of the messaging framework used by the IAP 12 and communicates with internal reporting 210 via an internal session manager 208 and the leaf nodes 52 connected into the IAP 12. The messaging architecture ensures that any compromise of one leaf node 52 will not compromise other leaf nodes 52 connected into the system, and through the external session manager 206, the internal routing mechanisms used by the IAP 12 are obfuscated from the front end systems, e.g., web-based interfaces.
Further detail of an example of a configuration for the leaf node 52 is shown in
The instdbd 230 reads the event objects from a domain socket and periodically batch inserts the objects into a database 232, in this example, an SQL database 232, for subsequent queries by a leaf agent 236 via a responder 238. The summary service 228 reads event objects from a socket and applies real-time trending to the event objects to produce summaries that can be viewed by a user via the reporting engine 210 or via other view, e.g. a portal dashboard or other web interface.
The event objects are output by the eventd 224. Event objects are structured as a hierarchal object system, based on an “event” superclass. Log data is converted into an event object, which is then passed around the leaf node architecture in a binary format, which advantageously removes requirements to continuously reparse log lines. At this stage, event objects will be “enriched” with additional information that can be used by TRCE 226 later. This can include for example asset information, geo-IP location information, or identity information (the name of the user using the technology asset that generated the event).
The TRCE 226 may be a server based application in which a configurable group of predefined correlation rules (correlators) can be applied to a stream of incoming event objects with an aim to identify notable traffic, for example, security incidents that should be investigated further. The TRCE 226 feeds back the finding from application of the correlators to the recvd 220 in order to enable the recvd 220 to generate notifications that are detected by a recvd listener 234 that communicates with the leaf agent 236 to pass notifications to the hub 40 and responder 238. As discussed above, the correlators may be stored as a library of pluggable modules, wherein a module is a set of instructions to apply to an event stream to detect such notable traffic. The modules may be directed to internal issues, external network based security issues, operating system and application based security issues, data loss and PCI related issues, among other issues related to enterprise security.
The TRCE 226 provides interfaces to normalize and correlate events in order to create alerts fed back to the recvd 220 to enable notifications to be generated. Parser plugins are responsible for normalizing event strings into object, and input filter plugins control which events reach to the correlators. Correlator plugins can look for particular events or sequences of events and create alerts. Output filter plugins can be used to filter out alerts created by the correlators, and the alerts can be sent to the local systems syslog. TRCE 226 may operate primarily through the use of plugins. If the input mode is raw, parsers are responsible for transforming lines into normalized objects. Whenever an event is received, it is fed through each loaded input filter plug-in. If the event matches any of the filters, it is discarded. If an event passes all input filters it moves into the correlation phase. The first thing the correlator plugins do is to create a key from an event. Keys determine which events should be grouped together. New instances of each correlator are created for each unique key. Any set of events with the same key will be sent to the same correlation instance. Each correlation instance has a timeout associated with it. When that timeout is reached, the instance may be discarded, losing any state that it has kept. Alerts may be created on any received event or on the reception of a timeout signal. In addition to alerts, correlators can create one-time filters (OTFs). OTFs are used to filter alerts that have already been created and published. Alerts created by correlators are sent to each output filter plugin before being published. If one filter matches the alert, then the alert will not be published. Each plugin has the ability to define it's own configuration, however, in practice may follow the same key/value format.
The following provides an example use of keys, including key1=val1, and key2=val2.
If a correlator uses a default configuration, the configuration file can be replaced with an INI formatted file to allow for overriding configurations for instances with a particular key. A default section may be used for keys where an override does not exist. Sections in which names match the key strings will use the configuration in that section. In this example every instance that isn't keyed by 192.168.0.1 uses the values key1=val1 and key2=val2. The instance keyed by 192.168.0.1 will use key1=val3 and fall back to the default key2=val2 since it does not define it. Example:
[default]
key1=val1
key2=val2
[192.168.0.1]
key1=val3
The use of event objects also facilitates a convenient query language for querying the IAP 12. The query language implementation enables querying threat monitoring data, but is extensible to enable querying of any data in the system. In one example, the general format the language takes appears as “functions”, where the function has parameters to filter information. For example, to query all threat data in the system the function: “threat( )” can be used, which will match all event data classified as threat data. Additional functions exist, for example to only query network flow data “flow( )” can be used, or for only IDS events “idp( )” can be used, and correlated events can be queried using “cor( )”.
The parameters can be specified in the language to filter further, for example to query only correlated events that involve source ip 1.2.3.4, the following query can be used: “cor(srca=“1.2.3.4”)”. Instead, additional destinations of 2.3.4.5 and source of 1.2.3.4 can be queried by using the following: “cor(srca=“1.2.3.4”, dsta=“2.3.4.5”)”.
The pipe (|) can be used as an OR to allow multiple queries, for example, show correlated events from 1.2.3.4 and all flow events: “cor(srca=“1.2.3.4”)|flow( )”. The intent is for the query language to be expanded to include vulnerability and asset information to produce risk scores. For example, the following can be used to query for vulnerabilities related to CVE-2012-001: “vuln(cve=“2012-001”)”. This can be expanded further to include the threat query, so the following would show any threat events that were detected that were directed against an existing vulnerability related to 2012-001: “threat(vuln(cve=“2012-001”))”. This differs from the query “threat(cve=“2012-001”)”. The first variant will list known threat events that occurred directed towards an asset that has a known vulnerability related to CVE 2012-001, and the second list all threats that had the potential to exploit 2012-001, regardless of known vulnerabilities in the environment 10.
A risk function can also be added, which performs risk calculations based on the data sets returned by the functions. For example, to calculate risk associated with all vulnerabilities and threats detected in the environment 10, the following query can be made: “risk(threat( ) vuln( )”. To calculate risk associated with a specific asset, the following query can be made: “risk(threat( ), vuln(asset=“database-server”))”, and to calculate risk but only use correlated threat data, the following query may be used: “risk(cor( ) vuln( ))”. Through the query language, very complex queries can be executed by the user to understand risk to information assets using a variety of abstracted data sources, and help analyze data to understand impact.
In this example it is assumed that at least one criterion is met matching the notification to the list at 332 and the leaf agent 236 receives the matched notification at 334. The leaf agent 236 writes the notification to disk at 336 and sends the notification to the hub 40. The notification is kept until an acknowledgement is received from the hub 40. The hub 40 receives the notification at 338 and routes the notification to the ticketing component 42 at 340. A ticket is created for an analyst at 342. The analyst may then login to a portal at 344 to begin an investigation at 346 until the investigation closes at 348. A filter may be performed at 350. Filters may be used to filter data entering the TRCE 226. A filter can be applied to specific log data, e.g., so that the log does not trigger future alerts if it is determined to be a false positive.
When an investigation is begun at 346, the ticket is reviewed and the threat monitored. In this example it is assumed that the ticket status is moved to an escalation at 352 to highlight the potential vulnerability. For example, the analyst may review alerts, and if they are determined to be valid they are escalated to the client (client is notified of an incident taking place on their network). At this point, the analyst may follow up with the support client at 354, or an email or other communication may be sent automatically. The analyst and/or system may then wait for client feedback or a response confirming that the threat has been addresses, the system shut down, or other remediation is in progress.
Turning now to
The message prelude 404, located at the beginning of a message 400, is used to describe the overall structure of the message 400. The prelude 404 is binary data of fixed length that can be quickly interpreted to determine the format and location of the other sections of the message 400. Prelude numeric header values may be stored in network byte order. In one example, the prelude 404 includes the following fields shown in Table 2.
The routing header 406 includes information that describes the route a message 400 should take within the IAP messaging system. The routing header 406 includes binary information of fixed length, with numeric values stored in network byte order. Table 3 below illustrates an example structure for the routing header.
The identity header 408 includes information related to the identity of the entity (e.g., user) that generated a message 400. Note that this is not the identity of the component that generated the message 400. The identity header 400 in this example includes binary information of fixed length, stored in network byte order. However, it can be appreciated that the identity header 408 may also be implemented using a variable size in order to allow a list of leaf nodes 40 the user can access to be expanded. Table 4 below illustrates an example of a structure for an identity header 408.
The extended header 410 is intended to allow future expansion for special message types in a convenient manner.
The payload 412 of the message 400 encapsulates the actual message information being exchanged between components within the IAP 12. Table 5 below illustrates an example structure for the payload 412 of the message 400.
Several generic message categories may also exist. Table 6 below describes various categories that may be utilized. For each category, a set of valid commands exist, the command itself being included within the serialized data field.
The following message types may be used in the IAP 12, provided in Table 7 below.
The data field included in the payload 412 of a message 400 is a data structure that can be interpreted by connected components. In some embodiments, this will be a protocol buffers serialized data structure. Components that receive a message 400 de-serialize the data stored in the payload 412, and can then subsequently access the information in the message 400 as required. In the other direction, when a component is generating a message 400, it can package the data in the payload 412 as required (e.g., using serialization of a protocol buffers object). In other embodiments, the data field may contain information structured in formats other then a protocol buffers serialized object. A receiving node in the system should understand how to interpret the data field based on the category and command associated with the message 400.
Various commands may be utilized within the IAP framework, and for each category, a set of valid commands exists. An illustrative, non-exhaustive list of commands, organized by category, is outlined below in Table 8.
An error category exists that is used to describe error conditions that have occurred within the IAP core. The type associated with an error message should be set to ERROR. Where an error condition occurs as the result of a message 400 (e.g., a QUERY_THREAT request), components can reply with an error message setting the request ID in the error message to the request ID of the original request. The command is then set appropriately to the type of error. Some error messages can be configured to pass additional details as payload data.
For each component connected to the hub 40, the hub 40 maintains a status for the component, marking it as either online or offline. Components marked as offline are not monitored, and do not receive messages 400. When a component connects, it will send a STATE ONLINE command notifying the hub 40 it is ready to receive commands 400. Inversely, when a component is exiting, it will send a STATE OFFLINE message 400 to notify the hub 40 it is transitioning to an offline state, and to stop sending messages 40 and heart beat events to that component. Where a component does not respond to heart beat messages generated by the hub 40 in a given period of time, the component will be automatically marked as offline by the hub 40. The component then generates a STATE ONLINE message 400 again to begin receiving events.
If a message 400 has a value set in the payload ACK field, the message 400 is considered reliable. When a component receives a message 400 of this type, it replies to receipt of the message 400 to acknowledge it has received and processed the message. IAP components can queue messages 400 to disk that are reliable messages prior to submitting them to the topology. The components may then periodically replay these messages 400 (e.g., if no ACK has been received within a given time frame). Once an ACK is received, the components can then remove the message 400 from the disk queue. The receiving component replies to a reliable message 400 with an ACK message type, with the ACK and request ID payload fields set to the values in the original message 400.
An example of a messaging topology utilized by the IAP 12 is shown in
In
When an IAP component connects to the hub 40, it submits a private identity value. The private identity value is known only to the hub 40 and the connecting component, and can be considered a shared secret. The hub 40 should be aware of the private identity of a given component prior to the component becoming part of the topology. Therefore, a registration process should be executed on the hub 40 to register a component's private identity. The private identity is utilized internally within the messaging topology in determining which entity, connected to a routing socket 420, 422, 430, should receive a message 400. Such a registration process may involve a configuration on the hub 40, where a component's private identity is mapped to a public routing address. This public routing address corresponds to the source/destination realm/ID field of the routing header 406 in a message 400.
When the messaging kernel 428 receives a message, it inspects the destination ID field of the routing header 406. The messaging kernel 428 references an internal configuration to see if the destination ID field exists and, if so, what private identity is associated with that destination ID. If the message 400 should be forwarded, the messaging kernel 428 sends the message 400 using the desired socket 420, 422, 432, and uses the private identifier as the address when forwarding the message 400, so that the message 400 reaches the correct component. The messaging kernel 428 may also be configured to support a special address, where the realm and destination ID fields are filled with zero (0). This address is intended to represent the hub 40, and components can use this address if they wish to send a message 400 to the hub 40.
The following example describes how the routing mechanism of the topology of
In this example, the hub 40 would be configured with the private identity values, and corresponding public routing ID's of the session handler 432 and authentication services 200. This configuration would also include the socket identifier that component will connect to. The messaging kernel 428 would have the following configuration stored internally (shown in Table 9 below), among other entries for other components also connected to the hub 40:
When the session handler 432 component connects to the session routing socket 430 on the hub 40, it submits the private identity (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) set in the component's configuration. This also occurs for the authentication node.
At this stage, the components are registered on the bus, and may begin exchanging messages 400 with other components. As described earlier, a component connected to the bus only knows it's private ID value and is not aware of the private ID values of other connected components. As such, the messaging kernel 428 converts public ID values to private ID's to facilitate routing and maintain the compartmentalization of the topology.
As illustrated in
Next, the messaging kernel 428 extracts the destination ID and realm (SECCURIS/Auth) from the message 400. The messaging kernel 428 then consults its internal public ID/private ID map to determine what private identifier the message 400 should be routed to. If it cannot locate a matching destination ID and realm in the map table, the message 400 is not forwarded. When the messaging kernel 428 locates the correct private ID value (in this case BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB), it performs any required access control checks. If the access control checks pass, the message 400 is forwarded to the destination component. In the example shown in
The messaging kernel 428 may also be configured to support the concept of route groups, where a route group is a group of components that can be addressed with a single address. For example, multiple authentication services 200 components may exist. The hub 40 maintains a route groups configuration, that can include an entry mapping SECCURIS/Auth to the multiple authentication services components. If a component requests delivery of a message to SECCURIS/Auth, the hub 40 will determine which component in the group gets the message 400 (e.g., round-robin). When the destination component that receives the message 400 replies to it, it will set the source address fields to its address such that the receiving component knows which component actually responded to the message 400 from the route group.
Each component that connects to the messaging system can be configured with a private identity. The hub 40 should also know the component's private identity, and have a map between the component's private identity and the public routing ID, as described above. Maintaining the confidentiality of the private routing ID, such that outside a given component, the hub 40 is the only other device that knows the ID, ensures that the private IDs are unlikely to be compromised. If a component private ID is compromised, a malicious attacker in a position to connect to the bus would be able to submit the ID of the compromised component to begin receiving messages 400 for that component.
Transport encryption and endpoint authentication may be implemented as shown in
From the perspective of the hub 40 and component Y 462, they are communicating with each other directly. However the stunnel modules 466a, 466b encapsulate the communications within an SSL tunnel to be sent over the network, e.g., the internet 18.
In many examples, components do not need the ability to send and receive all types of messages 400. For example, reporting services will only need to send and receive reporting related commands and do not need to have the ability to send authentication commands. The hub 40 may be configured to have a message access control capability, which may be thought of as a messaging firewall. A firewall policy exists on the hub 40, and messages 400 that flow into the hub 40 are passed through a policy check. If the source component should be permitted to send a particular type of message 400 to the destination component, the message 400 is passed; otherwise the message 400 is blocked and a HUB_FW_DROP error message is generated and sent to source component. Messages 400 can be filtered using the following criteria:
Source realm/ID
Destination realm/ID
Message Type (e.g., RESPONSE, REQUEST, etc)
Message Category (e.g., MGMT, AUTH)
Events
Classification Taxonomy
Leaf Agent
Command Modules
In the context of the leaf node 52, a request coming in from the IAP 12 should correspond in most cases to the execution of a module stored on the leaf node 52. The payload command will contain a particular command identifier, which corresponds to a module located on the file system that is run by the leaf node 52. The leaf node 52 then executes the query asynchronously, passes the results back to the leaf agent 236, which is required to package the result set up into a response message 400 and push the message 400 into the messaging system.
The leaf agent 236 receives a message 400 of type QUERY_THREAT, translating to execution of command ID 31 with a set of parameters. The leaf agent 236 is responsible for validating the privilege set associated with the identity. If it validates, a command module 486 located on the file system is executed.
The arguments passed in the query message 400 will be passed to the command module 486 through a socket pair connecting the command module 486 and the leaf agent 236, as shown in
As illustrated in
The above describes a scenario where the leaf agent 236 receives a request, and spawns a command to fulfill the request. There are also scenarios where the leaf agent 236 will execute a command when it starts up, and this command will persist while the leaf agent 236 runs. The persistent commands will be specified in a configuration file, which will include the following:
Description of persistent command (e.g., Notifier1)
Command to execute (e.g., notifier.py)
Class of persistent command (e.g., NOTIFICATION)
NOTIFY messages are the only messages 400 supported between the leaf agent 236 and a persistent command. The message class is used to inform the leaf agent 236 what the role of the persistent command is. When data is received from a persistent command, based on the class an appropriate payload header will be constructed, and the message 400 will be forwarded to the correct address (e.g., the leaf agent 236 will be aware data received from a persistent command of type NOTIFICATION will be forwarded to SECCURIS/Notification).
Turning now to
The identity header 512 associated with a valid session in the IAP component 462 has a set of privileges associated with it. These privileges, along with the user's realm can be used to validate if a particular request should be permitted. Privilege checks in the backend occur in two phases. Each phase, and the manner in which the privilege checks are conducted are described as follows, referring to
Topology ingress checks are performed by the session handler component 432. When a client device such as the web service 212 sends the session handler 432 a message 400, the session handler 432 performs the following validation checks prior to submitting the message to the bus, shown in Table 10:
Component validation checks are performed by the component 462 receiving the message 400. This could be a client leaf node agent 236, or other service components (e.g., reporting) interpreting a message 400 sent by the session handler 432 (e.g., a message 400 associated with a user session). Identity related component validation checks would not apply to messages being sent between components in the IAP core. Example phases are shown below in Table 11:
Components 462 may execute the basic validation checks described above. However, certain commands will have additional access control checks that are to be executed by the receiving component 462 prior to fulfilling the request. These are herein referred to as Leaf Store Query Extended Validation, and applicable Commands are shown below in Table 12:
The following additional checks (shown in Table 13) may be executed on a component 462 interpreting the commands listed in the applicable commands table. These checks would occur after standard component validation checks.
The session handler 432 component is responsible for implementing the interface the web service 212 talks to in order to communicate with the IAP core services 34. It can be considered a bridge, interpreting the messages 400 sent from the web services 212, adding necessary features to the message 400 (such as a routing header 406) and submitting them to IAP services or leaf nodes 52 on the backend.
As discussed above, client, web or external messages 402 (see also
Clients communicating on the client interface with the session manager 206 use the same payload 412 in a message 400 (as shown in
An example of a client header 414 for an external message 414 is shown below in Table 15.
The payload component 412 of the external message 402 should be the same as that of the internal message 400, regardless of whether it is on a client interface, or being sent between hub components. See the description of the payload header in the hub messaging section for additional details.
Clients access IAP services by first establishing a session. Once a session has been established, commands can be executed in the context of the existing session. Web services 212 may generate a SESSION_INIT request 524a that will result in a session being established if the parameters of the request 524a are correct (e.g., credentials valid).
It will be appreciated that any module or component exemplified herein that executes instructions may include or otherwise have access to computer readable media such as storage media, computer storage media, or data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Examples of computer storage media include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by an application, module, or both. Any such computer storage media may be part of the leaf node 52, collector appliance 54, hub 40, ticketing component 42, etc.; or any component of or related thereto or accessible or connectable thereto. Any application or module herein described may be implemented using computer readable/executable instructions that may be stored or otherwise held by such computer readable media.
The steps or operations in the flow charts and diagrams described herein are just for example. There may be many variations to these steps or operations without departing from the principles discussed above. For instance, the steps may be performed in a differing order, or steps may be added, deleted, or modified.
Although the above principles have been described with reference to certain specific examples, various modifications thereof will be apparent to those skilled in the art as outlined in the appended claims.
This application claims priority from U.S. Provisional Patent Application No. 61/745,061 filed on Dec. 21, 2012, the contents of which are incorporated herein by reference.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CA2013/050971 | 12/16/2013 | WO | 00 |
Number | Date | Country | |
---|---|---|---|
61745061 | Dec 2012 | US |