ES2922303T3 - Gestión automatizada de ejecución orientada a servicios - Google Patents
Gestión automatizada de ejecución orientada a servicios Download PDFInfo
- Publication number
- ES2922303T3 ES2922303T3 ES18761959T ES18761959T ES2922303T3 ES 2922303 T3 ES2922303 T3 ES 2922303T3 ES 18761959 T ES18761959 T ES 18761959T ES 18761959 T ES18761959 T ES 18761959T ES 2922303 T3 ES2922303 T3 ES 2922303T3
- Authority
- ES
- Spain
- Prior art keywords
- operations
- baseline
- values
- score
- property
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
- H04L63/205—Network architectures or network communication protocols for network security for managing network security; network security policies in general involving negotiation or determination of the one or more network security mechanisms to be used, e.g. by negotiation between the client and the server or between peers or by selection according to the capabilities of the entities involved
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Traffic Control Systems (AREA)
- Exchange Systems With Centralized Control (AREA)
Abstract
En una realización, un método de procesamiento de datos comprende la creación y el almacenamiento de un valor umbral de puntuación asociado con la determinación de si se va a generar una regla de operación de línea de base. Recibir, de los procesos de monitoreo de servicios, conjuntos de datos de operaciones realizados en objetos digitales por procesadores asociados con aplicaciones informáticas. Agregando operaciones e identificación de propiedades de operación de las operaciones agregadas para generar un conjunto de datos de línea de base agregado que representa las propiedades de operación de las operaciones agregadas. Asignación de valores de puntaje a cada una de las propiedades de operación, en la que cada valor de puntaje asignado representa si una propiedad de operación particular es un candidato para generar una regla que define los valores de propiedad de operación esperados para la propiedad de operación particular. Generación automáticamente de un conjunto de reglas de operaciones de línea de base solo para aquellas propiedades de operación que han asignado valores que exceden el valor umbral de puntaje. El conjunto de reglas de operaciones de línea de base programadas para detectar operaciones anómalas que contienen valores de propiedad de operación inesperados. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Gestión automatizada de ejecución orientada a servicios
Campo de la divulgación
La presente divulgación se refiere en general a la monitorización de la gestión de aplicaciones de programa informático y componentes de esas aplicaciones denominadas servicios. La divulgación se refiere más específicamente a técnicas implementadas por ordenador para generar automáticamente reglas de seguridad para monitorizar operaciones realizadas por aplicaciones y componentes de esas aplicaciones.
Antecedentes
Los enfoques descritos en esta sección son enfoques que podrían aplicarse, pero no necesariamente enfoques que se hayan concebido o aplicado previamente. Por tanto, a menos que se indique lo contrario, no debe suponerse que cualquiera de los enfoques descritos en esta sección califica como técnica anterior simplemente en virtud de su inclusión en esta sección.
La protección de las aplicaciones de programa informático que se ejecutan en dispositivos informáticos en red normalmente implica algún aspecto de monitorización de aplicaciones. La monitorización puede implicar recopilar mensajes de aplicaciones y otro tráfico de datos que las aplicaciones emiten hacia una red, dirigidos a instancias iguales de las aplicaciones, dirigidos a servidores o dirigidos a dispositivos informáticos de clientes.
Los enfoques para proteger las aplicaciones de programa informático frente a amenazas de seguridad pueden agruparse en las siguientes categorías: detección de vulnerabilidades, enfoques basados en red y control de acceso en tiempo de ejecución. La detección de vulnerabilidades implica examinar archivos binarios de programa informático para determinar si existen vulnerabilidades conocidas. Específicamente, los enfoques de detección de vulnerabilidades estáticas implican escanear ejecutables de programa o imágenes de contenedores virtuales en busca de firmas de virus. Uno de los principales inconvenientes de este enfoque es que las definiciones de firmas de virus requieren actualización frecuente. Sin definiciones de virus actualizadas, los ejecutables de programa de escaneo pueden pasar por alto nuevas vulnerabilidades, tales como las vulnerabilidades de día cero.
Los enfoques basados en red para identificar amenazas de seguridad implican examinar el tráfico de red para detectar actividad maliciosa. Sin embargo, los enfoques basados en red tienen una visibilidad limitada del comportamiento de la aplicación porque los tipos específicos de actividad de aplicación, tal como la I/O de archivos, no tienen ninguna actividad de red correspondiente para detectarse a nivel de red.
El control de acceso en tiempo de ejecución implica limitar el tipo y el número de acciones que pueden realizar programas informáticos específicos. Los programas informáticos implementados dentro de un entorno virtual, tal como una máquina virtual o un contenedor, pueden monitorizarse usando el control de acceso en tiempo de ejecución. La creación de contenedores ha surgido como alternativa popular a las instancias de máquinas virtuales para desarrollar aplicaciones de programa informático. Con la creación de contenedores, el código de programa informático puede desarrollarse una vez y luego empaquetarse en un contenedor que es portátil a diferentes plataformas que pueden gestionar y ejecutar los contenedores. Por consiguiente, la creación de contenedores permite un desarrollo de software más rápido para el mismo programa para múltiples plataformas diferentes que, de lo contrario, requerirían ramas o bifurcaciones de fuentes independientes, o al menos diferentes entornos de compilación y ejecución. El sistema de creación de contenedores DOCKER de Docker, Inc. de San Francisco, California, ha surgido como una opción popular para la arquitectura de contenedores. Sin embargo, la creación de contenedores también puede plantear restricciones a las comunicaciones entre programas.
El control de acceso en tiempo de ejecución incluye técnicas de control de acceso obligatorio. Las técnicas de control de acceso obligatorio implican que los sistemas operativos restrinjan la capacidad de un iniciador para acceder o realizar una operación en un objeto de destino. Los ejemplos de control de acceso obligatorio incluyen Security-Enhanced Linux (SELinux), que es un módulo de seguridad del núcleo de Linux que proporciona un mecanismo para respaldar las políticas de seguridad de control de acceso. Otro ejemplo de control de acceso implica un enfoque de sandboxing, tal como seccomp, que es un mecanismo de seguridad para separar los programas en ejecución y restringir el número de llamadas al sistema que se permite realizar desde el programa informático. Sin embargo, los enfoques de control de acceso en tiempo de ejecución tienen varios inconvenientes. Uno de tales inconvenientes es que requiere un conjunto de reglas definidas manualmente para cada programa único monitorizado. La definición de reglas específicas de programa implica una interacción manual personalizada y puede requerir una actualización continua cuando los programas contienen cambios o actualizaciones de versión. Otro inconveniente incluye el alto nivel de mantenimiento para garantizar que las reglas definidas manualmente se comporten correctamente y no se vuelvan obsoletas o generen falsos positivos o falsos negativos.
El término “microservicios” describe una forma modular de diseñar aplicaciones, de modo que se dividan en unidades independientes (es decir, “servicios”) que se comunican a través de interfaces de programación de aplicaciones (API) e interfaces bien definidas. Los microservicios conllevan muchos beneficios, tales como la reducción del número de puntos de falla; una estructura que permite que múltiples equipos trabajen
simultáneamente en la misma aplicación y admite la entrega continua; mejor separación de problemas y responsabilidades; y escalabilidad.
En el momento de escribir este artículo está disponible información adicional online sobre microservicios en el artículo “Microservices” en el directorio “wiki” del dominio “en.wikipedia.org” y la presente divulgación supone que el lector tiene conocimientos sobre microservicios al menos en la medida expuesta en el artículo anterior. Muchas empresas han adoptado microservicios en el pasado, pero ahora se está viendo un gran impulso hacia ellos, motivado por el auge de las tecnologías de creación de contenedores como Docker.
Los contenedores ofrecen una forma de empaquetar y aislar aplicaciones individuales y permiten un control de acceso de grano más fino que el que generalmente admiten las técnicas de control de acceso existentes, tales como SELinux y seccomp, que normalmente se implementan para proporcionar protección a nivel del sistema. Por tanto, es deseable un sistema de monitorización y protección más flexible que no requiera definir manualmente conjuntos de reglas.
Los documentos US 2013/326620 A1, US 2016/191465 A1 y US 9471 778 B1 dan a conocer sistemas para la generación de reglas para detectar operaciones anómalas.
Sumario
Las reivindicaciones adjuntas pueden servir como sumario de la invención.
Breve descripción de los dibujos
La figura 1 ilustra una red informática de ejemplo según una realización.
La figura 2 ilustra un ejemplo de un nodo informático e interacciones entre contenedores, aplicaciones y un agente de monitorización dentro del nodo informático.
La figura 3 ilustra un procedimiento de ejemplo para generar automáticamente reglas para detectar operaciones anómalas de múltiples procedimientos de múltiples dispositivos informáticos.
La figura 4 es un diagrama de bloques que ilustra un sistema informático en el que puede implementarse una realización de la invención.
Descripción detallada
En la siguiente descripción, con fines explicativos, se exponen numerosos detalles específicos con el fin de proporcionar una comprensión completa de la presente invención. Sin embargo, resultará evidente que la presente invención puede ponerse en práctica sin estos detalles específicos. En otros casos, las estructuras y dispositivos bien conocidos se muestran en forma de diagrama de bloques con el fin de evitar complicar innecesariamente la presente invención.
En una realización, un método de procesamiento de datos proporciona una mejora en la generación automática de reglas programadas para detectar operaciones anómalas en sistemas informáticos que ejecutan aplicaciones de programa informático en contenedores. El método comprende un sistema informático que crea y almacena, dentro de almacenamiento de datos digitales, un valor umbral de puntuación que está asociado con la determinación de si generar una regla de operación de línea base para detectar operaciones anómalas. El sistema informático recibe, procedentes de uno o más procesos de monitorización de servicios que se ejecutan en uno o más sistemas informáticos, conjuntos de datos de operaciones que se han realizado en objetos digitales mediante uno o más procesos asociados con una o más aplicaciones informáticas que se ejecutan en el uno o más sistemas informáticos. Cada uno de los conjuntos de datos de operaciones incluye un conjunto de datos de operaciones que representan registros de operaciones que se realizaron mediante procesos particulares asociados con una aplicación informática particular que se ejecuta en la una o más aplicaciones informáticas. El sistema informático agrega operaciones a partir de los conjuntos de datos de operaciones agrupando operaciones entre sí usando identificadores comunes asociados con las operaciones e identificando las propiedades de operación a partir de las operaciones agregadas. El sistema informático genera un conjunto de datos de línea base agregado que representa las propiedades de operación identificadas a partir de las operaciones agregadas. El sistema informático asigna valores de puntuación a cada una de las propiedades de operación en el conjunto de datos de línea base agregado, donde cada valor de puntuación asignado representa si una propiedad de operación particular es candidata para generar una regla que defina los valores de propiedad de operación esperados para la propiedad de operación particular. El sistema informático genera automáticamente un conjunto de reglas de operación de línea base sólo para aquellas propiedades de operación en el conjunto de datos de línea base agregado que tienen valores asignados que superan el valor umbral de puntuación. El conjunto generado de reglas de operación de línea base se programan para detectar operaciones anómalas que contienen valores de propiedad de operación inesperados. Otros aspectos y características de diversas realizaciones resultarán evidentes a partir de la divulgación en su conjunto tal como se describe en otras secciones en el presente documento.
1. Visión general estructural
La figura 1 ilustra una red de comunicaciones de datos informáticos de ejemplo que está estructurada y programada para implementar una realización de las técnicas en el presente documento. La figura 1 representa un sistema de monitorización distribuido que comprende un sistema de monitorización 120, una pluralidad de nodos informáticos 105, 110, 115 y una red 190 que acopla en comunicación el sistema de monitorización 120 a la pluralidad de nodos informáticos 105, 110 y 115. En una realización, el sistema de monitorización puede representar uno o más sistemas informáticos independientes acoplados en comunicación y configurados para recibir conjuntos de datos de operaciones procedentes de múltiples nodos informáticos, agregar y puntuar las operaciones dentro de los conjuntos de datos, y generar un conjunto de reglas de operación de línea base que pueden usarse por los múltiples nodos informáticos para detectar anomalías en futuras operaciones realizadas por aplicaciones implementadas en los múltiples nodos informáticos.
En una realización, el sistema de monitorización 120 está programado con o comprende una capa de comunicación 125 y una capa de gestión de datos 145. “Capa,” en este contexto, se refiere a cualquier combinación de circuitos electrónicos de interfaz digital, microcontroladores, firmware tal como controladores y/o programas informáticos u otros elementos de software.
La capa de comunicación 125 puede programarse o configurarse para realizar funciones de interfaz de entrada/salida, incluyendo recibir conjuntos de datos de operaciones procedentes de la pluralidad de nodos informáticos 105, 110, 115 y enviar datos de vuelta a la pluralidad de nodos informáticos 105, 110, 115. En una realización los conjuntos de datos de operaciones contienen registros de operaciones realizadas en objetos por aplicaciones que se ejecutan dentro de contenedores u otros entornos dentro de la pluralidad de nodos informáticos 105, 110, 115. La capa de comunicación 125 puede programarse o configurarse para enviar los conjuntos de datos de operaciones recibidos a un repositorio de almacenamiento 150 y recuperar datos de reglas almacenados de un repositorio de reglas 160.
La capa de gestión de datos 145 puede programarse o configurarse para gestionar operaciones de lectura y operaciones de escritura que involucran al repositorio de almacenamiento 150 y al repositorio de reglas 160 y otros elementos funcionales del sistema, incluyendo consultas y conjuntos de resultados comunicados entre los elementos funcionales del sistema y el repositorio. Los ejemplos de la capa de gestión de datos 145 incluyen JDBC, código de interfaz de servidor SQL y/o código de interfaz HADOOP, entre otros. El repositorio de almacenamiento 150 y el repositorio de reglas 160 pueden comprender cada uno una base de datos. Tal como se usa en el presente documento, el término “base de datos” puede referirse a un cuerpo de datos, a un sistema de gestión de bases de datos relacionales (RDBMS), o a ambos. Tal como se usa en el presente documento, una base de datos puede comprender cualquier colección de datos, incluyendo bases de datos jerárquicas, bases de datos relacionales, bases de datos de archivos planos, bases de datos relacionales de objetos, bases de datos orientadas a objetos y cualquier otra colección estructurada de registros o datos que se almacene en un sistema informático. Los ejemplos de RDBMS incluyen, pero sin limitarse a incluir, las bases de datos ORACLE®, MYSQL, IBM® DB2, MICROSOFT® SQL SERVER, SYBASE® y POSTGRESQL. Sin embargo, puede usarse cualquier base de datos que permita los sistemas y métodos descritos en el presente documento.
En una realización, el sistema de monitorización 120 contiene una lógica configurada especialmente que incluye, pero sin limitarse a, instrucciones de agregación de operaciones 130, instrucciones de puntuación de operaciones agregadas 135 e instrucciones de generación de reglas 140. Cada una de las instrucciones de agregación de operaciones 130, las instrucciones de puntuación de operaciones agregadas 135 y las instrucciones de generación de reglas 140 comprenden instrucciones ejecutables cargadas en un conjunto de una o más páginas de la memoria principal, tal como RAM, en el sistema de monitorización 120 que, cuando se ejecutan, hacen que el sistema de monitorización 120 realice las funciones u operaciones que se describen en el presente documento. Por ejemplo, las instrucciones de agregación de operaciones 130 pueden comprender instrucciones ejecutables cargadas en un conjunto de páginas en RAM que contienen instrucciones que, cuando se ejecutan, hacen que se realicen funciones de agregación en las operaciones informáticas capturadas que se describen en el presente documento. Las instrucciones pueden estar en código ejecutable por máquina en el conjunto de instrucciones de una CPU y pueden haberse compilado basándose en el código fuente escrito en JAVA, C, C++, OBJECTIVE-C o cualquier otro entorno o lenguaje de programación legible por el ser humano, solo o en combinación con secuencias de comandos en JAVASCRIPT, otros lenguajes de secuencias de comandos y otro texto fuente de programación. El término “páginas” pretende referirse en líneas generales a cualquier región dentro de la memoria principal y la terminología específica usada en un sistema puede variar dependiendo de la arquitectura de la memoria o la arquitectura del procesador. En otra realización, cada una de las instrucciones de agregación de operaciones 130, las instrucciones de puntuación de operaciones agregadas 135 y las instrucciones de generación de reglas 140 también pueden representar uno o más archivos o proyectos de código fuente que se almacenan digitalmente en un dispositivo de almacenamiento masivo tal como almacenamiento en disco o rAm no volátil, en el sistema de monitorización 120 o en un sistema de repositorio independiente, que cuando se compilan o interpretan generan instrucciones ejecutables que, cuando se ejecutan, hacen que el sistema de monitorización 120 realice las funciones u operaciones que se describen en el presente documento con referencia a esos módulos. Dicho de otro modo, la figura del dibujo puede representar el modo en que los programadores o desarrolladores de software organizan y disponen el código fuente para su compilación posterior en un ejecutable, o interpretación en código de bytes o equivalente, para su ejecución
por el sistema de monitorización 120.
Las instrucciones de agregación de operaciones 130 proporcionan instrucciones para agregar los conjuntos de datos de operaciones recibidos desde los diferentes nodos informáticos 105, 110, y 115 y generar un conjunto de datos de línea base agregado de propiedades de operación. El conjunto de datos de línea base agregado de las propiedades de operación puede contener valores de propiedad de operaciones similares que se han agrupado entre sí basándose en atributos comunes. Las instrucciones de puntuación de operaciones agregadas 135 proporcionan instrucciones para asignar valores de puntuación a cada uno de los elementos de propiedad dentro del conjunto de datos de línea base agregado. En una realización, los valores de puntuación asignados se usan para determinar si los elementos de propiedad pueden usarse para crear reglas de operación de línea base para detectar operaciones anómalas en la pluralidad de nodos informáticos 105, 110 y 115. Las instrucciones de generación de reglas 140 proporcionan instrucciones para generar automáticamente un conjunto de reglas de operación de línea base a partir de elementos en el conjunto de datos de línea base agregado que tienen valores de puntuación que superan un umbral de valor de puntuación configurado. Las reglas de operación de línea base pueden estar programadas para detectar operaciones anómalas futuras realizadas por aplicaciones que se ejecutan en la pluralidad de nodos informáticos 105, 110, y 115.
La red 190 representa en líneas generales cualquier combinación de una o más redes de comunicación de datos, incluyendo redes de área local, redes de área amplia, interredes o internets, usando cualquiera de los enlaces por cable o inalámbricos, incluyendo enlaces terrestres o por satélite. La(s) red(es) puede(n) implementarse mediante cualquier medio o mecanismo que proporcione el intercambio de datos entre los diversos elementos de la figura 1. Los diversos elementos de la figura 1 también puede tener enlaces de comunicaciones directos (por cable o inalámbricos). El sistema de monitorización 120, la pluralidad de nodos informáticos 105, 110 y 115 y otros elementos del sistema comprenden cada uno una interfaz compatible con la red 190 y se programan o configuran para usar protocolos normalizados para la comunicación a través de las redes, tales como TCP/IP, Bluetooth y protocolos de capa superior tales como HTTP, TLS y similares.
Cada uno de la pluralidad de nodos informáticos 105, 110 y 115 representa sistemas informáticos programados y configurados para ejecutar una o más aplicaciones, entornos informáticos virtuales, servicios de gestión informáticos virtuales y otros procesos informáticos. Los entornos informáticos virtuales pueden incluir varios tipos diferentes de máquinas virtuales implementadas que virtualizan un sistema operativo informático y las aplicaciones programadas para ejecutarse en el sistema operativo virtual. Los servicios de gestión informáticos virtuales pueden incluir implementaciones de servicios de creación de contenedores para gestionar múltiples contenedores que ejecutan diferentes aplicaciones. En una realización, cada uno de la pluralidad de nodos informáticos 105, 110 y 115 contiene agentes 107, 112 y 117 respectivamente. Cada uno de los agentes 107, 112 y 117 representa un agente de monitorización programado y configurado para capturar información de procesos, subprocesos y contenedores que se ejecutan en la pluralidad de nodos informáticos 105, 110 y 115. Los registros de operaciones 109 representan una realización de un conjunto de datos de operaciones capturados por el agente 107. Los registros de operaciones 109 pueden incluir conjuntos de operaciones realizadas en diferentes objetos por una o más aplicaciones, procesos y subprocesos en el nodo informático 105. Los ejemplos de objetos pueden incluir, pero sin limitarse a, archivos, directorios, procesos, canalizaciones, conexiones de red, puertos de red, puntos finales de IP y subred, y llamadas al sistema.
La figura 2 representa un ejemplo detallado de interacciones dentro de un nodo informático entre aplicaciones, contenedores instanciados y un agente.
En una realización, el nodo informático 105 puede programarse o configurarse para implementar uno o más servicios de gestión informáticos virtuales. Los servicios de gestión informáticos virtuales pueden configurarse para gestionar múltiples contenedores y aplicaciones usando un conjunto de recursos informáticos compartidos. En una realización, los recursos informáticos compartidos se gestionan por el núcleo 205. El núcleo 205 puede representar varios tipos diferentes de capas de sistema operativo que gestiona los recursos informáticos entre el nodo informático 105 y las aplicaciones y contenedores instanciados. El módulo de núcleo 210 representa un módulo configurado o programado de instrucciones informáticas programadas para enviar y recibir datos entre el núcleo 205 y las aplicaciones y contenedores instanciados.
Cada una de las aplicaciones 215 y 220 representa aplicaciones que pueden instanciarse directamente por el núcleo 205. Cada uno de los contenedores 225 y 230 representa instancias de contenedores instanciados por el núcleo 205. Cada uno de uno los contenedores 225 y 235 puede instanciar una o más instancias de aplicaciones distintas con los contenedores 225 y 230. Adicionalmente, cada uno de los contenedores 225 y 235 representa tipos diferentes de contenedores gestionados por diferentes sistemas de gestión de contenedores. Por ejemplo, el contenedor 225 puede representar un contenedor gestionado por Docker que incluye una instancia de aplicación 227 que se ejecuta dentro del contenedor 225. El contenedor 235 puede representar un contenedor gestionado por LXC que incluye una instancia de aplicación 237 que se ejecuta dentro del contenedor 235. En una realización, el agente 107 se comunica directamente con el módulo de núcleo 210 para recibir diferentes tipos de actividad del núcleo que se producen entre el núcleo 205, la aplicación 215, la aplicación 220, el contenedor 225, el contenedor 235 y el nodo informático 105.
Cada uno de los agentes 107, 112 y 117 y el sistema de monitorización 120 pueden comunicarse entre sí a través de una API. Por ejemplo, el sistema de monitorización 120 puede emitir llamadas en un formato dispuesto previamente, por ejemplo sobre HTTP (protocolo de transferencia de hipertexto), para obtener información de los agentes 107, 112 y 117 relacionada con los nodos informáticos 105, 110 y 115, incluyendo el número de aplicaciones y contenedores. Alternativamente, la API puede estar basada en “inserción”. Es decir, los agentes 107, 112 y 117 pueden enviar información al sistema de monitorización 120 sin recibir una llamada desde el sistema de monitorización 120.
En una realización, el sistema de detección de operaciones 170 representa un sistema de gestión de monitorización que puede organizar opciones de configuración para monitorizar servicios informáticos. El sistema de detección de operaciones 170 puede configurarse para gestionar y delegar reglas de operación almacenadas para aplicaciones, contenedores y nodos informáticos específicos y transmitir reglas de operación a uno o más agentes con el fin de monitorizar y detectar anomalías de operación basadas en las reglas de operación almacenadas. En una realización, el sistema de detección de operaciones 170 puede incluir el repositorio de reglas 160, donde pueden almacenarse las reglas de operación.
2. Visión general funcional
La figura 3 ilustra un procedimiento de ejemplo para generar automáticamente reglas para detectar operaciones anómalas en sistemas informáticos. La figura 3 es un diagrama de flujo que se da a conocer a nivel de detalle y usando los términos de comunicación que usan habitualmente personas con un nivel de experiencia en la técnica a quienes se refiere esta descripción. La figura 3 puede usarse como un plan o algoritmo que sirve como base para escribir instrucciones de programa para implementar, mediante su ejecución usando un ordenador, el procedimiento representado en el dibujo.
En la etapa 305, se crea y almacena un valor umbral de puntuación. El valor umbral de puntuación es una puntuación de corte de línea base usada para determinar si va a generarse una regla de operación de línea base basándose en los valores de puntuación para elementos de propiedad de operaciones. Por ejemplo, los conjuntos de datos de operaciones recibidos pueden agregarse basándose en atributos de operación, tales como el tipo de operación o cualquier otra agrupación. En este contexto, el tipo de operación se refiere a diferentes tipos de operaciones que pueden realizarse en diferentes objetos, tal como abrir un archivo objeto, conectarse a un puerto de red o guardar un archivo objeto. Los elementos de propiedad de operaciones agregadas pueden puntuarse entonces basándose en la similitud de los valores de elementos de propiedad tales como valores de entrada y/o salida. Basándose en el valor de puntuación calculado del elemento de propiedad, si el valor de puntuación calculado está por encima del valor de umbral de puntuación generado, entonces puede generarse una regla de operación de línea base que describe el resultado esperado del elemento de propiedad para ese tipo de operación.
En una realización, las instrucciones de generación de reglas 140 proporcionan instrucciones para crear un valor umbral de puntuación. El valor umbral de puntuación puede generarse basándose en un valor umbral de puntuación histórico usado para generar reglas de operación de línea base existentes y los valores de puntuación asociados con las operaciones agregadas. Por ejemplo, si las reglas de operación de línea base existentes detectaron previamente de manera satisfactoria anomalías de operación en un conjunto de nodos informáticos, entonces el valor umbral de puntuación para la regla de operación de línea base existente puede usarse para generar un nuevo conjunto de reglas de operación de línea base para un nuevo conjunto de operaciones y nodos informáticos. Por el contrario, si las reglas de operación de línea base existentes no fueron satisfactorias a la hora de detectar anomalías de operación, entonces el valor umbral de puntuación puede establecerse en un valor mayor que el valor umbral de puntuación histórico. En otras realizaciones, el valor umbral de puntuación puede generarse a partir de la entrada suministrada por un usuario en forma de parámetros de configuración de regla y realimentación de usuario para determinar el valor umbral de puntuación óptimo. Aún en otras realizaciones, el valor umbral de puntuación puede basarse en una combinación de parámetros de entrada de usuario y datos de valor umbral de puntuación histórico. En la etapa 310, el sistema de monitorización 120 recibe conjuntos de datos de operaciones de una pluralidad de agentes 107, 112 y 117 desplegados en los nodos informáticos 105, 110 y 115 respectivamente. En una realización, el agente 107 puede utilizar marcadores dentro del código fuente del núcleo, tales como puntos de seguimiento, para instrumentar diferentes lugares dentro del núcleo de sistema operativo con el fin de extraer información de actividad. Por ejemplo, el módulo de núcleo 210 puede configurarse con puntos de seguimiento para capturar información incluyendo, pero sin limitarse a, llamadas al sistema, actividad del sistema de archivos, actividad de disco, actividad de red y conector, conexiones establecidas, puertos abiertos, ejecución de procesos y subprocesos, y comunicaciones entre procesos tales como canalizaciones y exclusiones mutuas. Tal como se representa en la figura 2, el agente 107 puede capturar la información de actividad del módulo de núcleo 210.
En una realización, el agente 107 puede escuchar de manera continua la información de actividad del módulo de núcleo 210 y almacenar la información de actividad en una o más tablas de registro denominadas tablas de programa. Las tablas de programa pueden configurarse para contener registros detallados o agregados de operaciones realizadas por cada proceso, subproceso y contenedor monitorizado por el agente 107. Los registros, dentro de la tabla de programas, pueden contener propiedades que describen: la operación ejecutada; el proceso o programa que ejecutó las operaciones, donde el programa puede representar una agregación de múltiples procesos
que ejecutan el mismo ejecutable; el objeto que fue objeto de la operación; la aplicación dentro de la cual se ejecutó la operación; y el contenedor dentro del cual se ejecutó la operación. En una realización, los registros pueden configurarse para almacenarse en un formato específico. Por ejemplo, los registros dentro de la tabla de programas pueden formatearse como notación de objetos de JavaScript (JSON), lenguaje de marcado extensible (XML), memorias intermedias de protocolo desarrolladas por Google o cualquier otra norma de formateo de datos.
En una realización, el agente 107 puede configurarse para generar múltiples tablas de programas, donde los registros de operaciones para cada aplicación se almacenan en una tabla de programas dedicada para esa aplicación particular. Por ejemplo, puede crearse una tabla de programas para la aplicación Dropbox y otra tabla de programas para la aplicación Microsoft Outlook.
Los registros de operaciones, dentro de la tabla de programas, pueden organizarse en grupos basándose en las propiedades de las operaciones. En una realización, las operaciones pueden organizarse en grupos basándose en el tipo de objetos a los que acceden las operaciones. Por ejemplo, una operación puede acceder a un archivo o directorio en particular. El archivo o directorio en particular puede usarse para organizar grupos de operaciones que acceden a ese tipo de archivo o directorio. Los diferentes tipos de objetos pueden incluir, pero sin limitarse a, archivos, directorios, puertos de servidor, puertos vinculados, puntos finales de IP, puntos finales de subred, programas ejecutados y llamadas al sistema. Cada uno de estos tipos de objetos puede organizarse adicionalmente en una jerarquía de subgrupos. Por ejemplo, las operaciones organizadas por el tipo de objeto “archivos” pueden subdividirse en el tipo específico de archivo al que accede la operación. Los ejemplos de subgrupos de “archivos” incluyen, pero sin limitarse a, archivos de inicio y archivos normales. Los archivos de inicio pueden incluir archivos a los que accede inicialmente la aplicación, tales como archivos a los que se accede segundos después de iniciar la aplicación. Los archivos normales incluyen archivos a los que accede la aplicación durante la actividad normal después de la inicialización. En una realización, los subgrupos de tipos de objetos pueden subdividirse adicionalmente en subgrupos más pequeños basándose en las propiedades de los objetos dentro de cada uno de los subgrupos. Por ejemplo, el subgrupo “archivos de inicio” puede subdividirse adicionalmente en subgrupos basándose en permisos de acceso asociados con los archivos. Uno de tales subgrupos puede incluir todos los archivos de inicio que tienen acceso de solo lectura, otro subgrupo puede incluir todos los archivos de inicio que tienen acceso de lectura/escritura y otro subgrupo, denominado “otro”, puede incluir archivos donde no pudieron determinarse los permisos.
En una realización, la tabla de programas puede organizarse en un formato jerárquico donde los registros de operaciones se agrupan y subagrupan en un formato jerárquico. La tabla 1 del apéndice ilustra un ejemplo de una tabla de programas con formato de salida JSON.
En una realización, el agente 107 envía la tabla 1 en el nodo informático 105, a través de la red 190, al sistema de monitorización 120. La capa de comunicación 125 puede recibir múltiples tablas de programas como conjuntos de datos de operaciones que incluyen la tabla 1. En una realización, la capa de comunicación 125 puede almacenar tablas de programas recibidos en el repositorio de almacenamiento 150.
En una realización, la capa de comunicación 125 también puede recibir metadatos de la pluralidad de nodos informáticos 105, 110 y 115 que incluyen, pero sin limitarse a, nombres de anfitrión, etiquetas de usuario, etiquetas de instancia de proveedor de servicios en la nube, nombres de contenedor, identificadores de contenedor, etiquetas de contenedor, nombres de imagen de contenedor, identificadores de contenedor, etiquetas de orquestador y anotaciones de orquestador. Los metadatos recibidos pueden almacenarse dentro del repositorio de almacenamiento 150 y pueden usarse para agrupar operaciones de múltiples tablas de programas basándose en identificadores y etiquetas comunes de las operaciones. Por ejemplo, los metadatos pueden usarse para identificar propiedades relevantes de operaciones dentro de diferentes tablas de programas basándose en diversas etiquetas de metadatos. Entonces pueden agregarse operaciones que tienen propiedades de metadatos similares para generar un conjunto de datos de línea base agregado de datos que representa operaciones que tienen propiedades de metadatos similares.
En la etapa 315 se agregan las operaciones representadas en las tablas de programas para generar un conjunto de datos de línea base agregado. En una realización, las instrucciones de agregación de operaciones 130 proporcionan instrucciones para generar un conjunto de datos de línea base agregado agrupando operaciones entre sí basándose en propiedades, identificadores y metadatos asociados con las operaciones. En una realización, el conjunto de datos de línea base agregado puede representarse como una estructura de datos que contienen datos de propiedades agregados procedentes de operaciones agrupadas entre sí basándose en sus propiedades similares. En una realización, pueden generarse múltiples conjuntos de datos de línea base agregados, donde cada conjunto de datos representa un grupo de operaciones agrupadas entre sí por una o más propiedades comunes.
En una realización, las instrucciones de agregación de operaciones 130 proporcionan instrucciones para recuperar metadatos almacenados y las tablas de programas almacenadas en el repositorio de almacenamiento 150. Los metadatos almacenados pueden usarse como valores clave para agregar operaciones de las múltiples tablas de programas. Por ejemplo, las operaciones, dentro de las múltiples tablas de programas, pueden analizarse para determinar qué operaciones se ejecutaron dentro de un contenedor. La determinación de si las operaciones se ejecutaron dentro de un contenedor puede basarse en si las operaciones contienen un valor de propiedad de ID de
contenedor. En una realización, los valores de ID de contenedor de las operaciones de múltiples tablas de programas pueden cruzarse con los metadatos almacenados para determinar valores de propiedad adicionales relacionados con los valores de ID de contenedor. Por ejemplo, los nombres de imagen de contenedor y otra información de contenedor pueden asociarse con los valores de ID de contenedor.
Pueden agregarse operaciones basándose en una propiedad común tal como un valor de ID de contenedor con el fin de generar un conjunto de datos de línea base agregado. En una realización, agregar operaciones puede incluir cruzar grupos y subgrupos de operaciones, dentro de una tabla de programas, que coincidan con un valor de ID de contenedor particular. Durante la agregación, cada uno de valores de propiedad de las operaciones se agrega para generar el conjunto de datos de línea base agregado. El conjunto de datos de línea base agregado puede organizarse como una estructura de datos de tipos y subtipos de propiedad con elementos y subelementos que representan propiedades y subpropiedades de las operaciones usadas para constituir el conjunto de datos de línea base agregado. Por ejemplo, los elementos pueden representar propiedades tales como archivos a los que se accede, programas ejecutados, puntos finales de subred, puntos finales de IP, puntos de servidor, directorios a los que se accede y puertos vinculados. Cada uno de los elementos también puede contener subelementos que representan tipos de subpropiedades específicas para cada elemento de propiedad. Por ejemplo, el elemento “archivos a los que se accede” puede incluir subelementos que agrupan archivos basándose en el tipo de permiso, tal como subelementos para archivos de “solo lectura”, archivos de “lectura/escritura” y archivos de “permiso desconocido”. Cada elemento y subelemento puede contener un conjunto de uno o más valores que se completan a partir de las operaciones. El conjunto de valores puede contener valores duplicados de múltiples operaciones. Por ejemplo, el elemento de puerto local para una aplicación particular puede contener un conjunto de valores como {80, 80, 80, 80}, donde los valores extraídos de cada una de las cuatro operaciones son el mismo valor para el elemento de puerto local. Mediante el seguimiento de valores duplicados en el conjunto de valores, el sistema de monitorización 120 puede ser capaz de determinar, basándose en el número de valores similar, un valor esperado para una propiedad particular.
En una realización, el conjunto de datos de línea base agregado puede contener valores rastreados que rastrean el número total de valores dentro de un conjunto de valores y el número de valores distintos en el conjunto de valores para cada uno de los elementos y subelementos. El número total de valores y el número de valores distintos pueden usarse para determinar qué elementos de propiedad tienen valores coherentes. Por ejemplo, puede registrarse un recuento de valores distintos para elementos que representan conexiones a puertos locales y puertos remotos. Los valores de puerto local para las operaciones asociadas con el conjunto de datos de línea base agregado en particular pueden ser los mismos si la operación se origina a partir del mismo contenedor y por tanto, el recuento de valores distintos es igual a uno. Mientras que los valores de puertos remotos para las operaciones pueden contener valores distintos dado que las operaciones pueden asociarse a varias ubicaciones remotas diferentes, es probable por tanto que el recuento de valores distintos se calcule como un valor alto. Como resultado, cada uno de los elementos en un conjunto de datos de línea base agregado contiene recuentos de valores distintos que pueden usarse para determinar qué elementos tienen valores comunes de manera coherente y pueden usarse para la generación de reglas y qué elementos tienen valores distintos y no pueden ser útiles para la generación de reglas.
En una realización, generar el conjunto de datos de línea base agregado no se limita a determinar agrupaciones de operaciones basándose en cualquier valor de metadatos único. Pueden usarse combinaciones de valores de metadatos para determinar grupos de operaciones. Por ejemplo, el ID de contenedor combinado con etiquetas de instancia de proveedor de servicios en la nube puede usarse para identificar subconjuntos de operaciones que contienen tanto un ID de contenedor común como una etiqueta de instancia de proveedor de servicios en la nube para generar un conjunto de datos de línea base agregado de operaciones denominado redis:2.8.19/US West, donde el ID de contenedor es redis:2.8.19 y la etiqueta de instancia de proveedor de servicios en la nube es US West. Generar el conjunto de datos de línea base agregado basándose en una combinación de valores de metadatos puede ser útil para determinar valores coherentes relacionados con un subconjunto de operaciones asociadas con una combinación de valores de metadatos, que pueden no haberse detectado si las operaciones se agruparon usando solo un único valor de metadatos. La tabla 2 en el apéndice ilustra un ejemplo de un conjunto de datos de línea base agregado que se visualiza en un formato jerárquico con elementos y subelementos que incluyen un recuento de valores distintos.
En la etapa 320, se asignan valores de puntuación a elementos en el conjunto de datos de línea base agregado. En una realización, las instrucciones de puntuación de operaciones agregadas 135 proporcionan instrucciones para asignar valores de puntuación a elementos en el conjunto de datos de línea base agregado. El valor de puntuación para un elemento particular representa si el elemento de propiedad es adecuado para generar una regla para detectar anomalías basándose en los valores del elemento de propiedad. En este contexto, la regla representa los valores de propiedad esperados para operaciones similares. Si una operación genera un valor de propiedad que no es coherente con los valores de propiedad esperados en la regla definida, entonces la operación puede considerarse como una operación anómala.
En una realización, un valor de puntuación alto para un elemento de propiedad particular representa que el elemento de propiedad contiene valores coherentes que pueden ser candidatos para generar reglas para identificar anomalías. Por ejemplo, si el puerto local para operaciones de Dropbox es de manera coherente o bien 80 o bien 443, entonces puede generarse una regla para detectar anomalías en operaciones de Dropbox cuando el puerto
local es cualquier valor distinto de 80 o 443. Por el contrario, los valores del elemento de propiedad para un elemento de propiedad que contiene varios valores únicos pueden indicar que el elemento de propiedad no es un buen candidato para la generación de reglas, ya que los valores observados de las operaciones fluctúan entre varios valores diferentes.
En una realización, las instrucciones de puntuación de operaciones agregadas 135 proporcionan instrucciones para calcular valores de puntuación para el conjunto de datos de línea base agregado basándose en el recuento de valores distintos asociado con cada valor de elemento de propiedad. Tal como se comentó en la etapa 315, el recuento de valores distintos rastrea el número de valores únicos identificados para cada elemento de propiedad. Usando recuentos de valores distintos, cada uno de los elementos de propiedad dentro de un conjunto de datos de línea base agregado puede almacenarse para determinar qué elementos de propiedad deben usarse para la creación de reglas. Un valor de puntuación para un elemento de propiedad puede calcularse usando el número total de valores en el conjunto de valores para el elemento de propiedad, el número de valores distintos basándose en el recuento de valores distintos para el elemento de propiedad, y determinando el número de valores duplicados que no coincide con otros valores dentro del conjunto de valores. Basándose en el número total de valores y el número de valores duplicados, puede determinarse una línea base de valores esperados. Por ejemplo, si el conjunto de valores para un puerto local contiene {80, 80, 443, 80, 443, 443 y 355}, entonces puede determinarse basándose en el número de duplicados para los valores 80 y 443, siendo ambos valores 80 y 443 valores esperados de línea base y siendo el valor 355 un valor que no coincide con otros valores de línea base.
En una realización, los valores de puntuación pueden calcularse usando una razón del número total de valores dentro del conjunto de valores y el número de valores que no coinciden con los valores de nivel inicial. El siguiente pseudocódigo proporciona un ejemplo de cálculo de un valor de puntuación:
entrycnt = <número de valores, dentro del conjunto de valores, para el elemento>
newcnt = <número de valores, dentro del conjunto de valores, cuyo contenido no coincide con los valores de nivel inicial esperados >
donde score_ns es un valor de puntuación calculado en una escala de 0 a 100 y se basa en la razón de valores que constituyen los valores de línea base esperados.
En una realización, el valor de puntuación calculado puede actualizarse cuando se reciben datos de operación adicionales de la pluralidad de nodos informáticos 105, 110 y 115 respectivamente. Por ejemplo, si se añaden operaciones adicionales a una línea base agregada existente, entonces puede calcularse un valor de puntuación actualizado mediante la actualización del entrycnt total, el newcnt si los nuevos valores no coinciden con valores de línea base esperados y recalculando score_ns basándose en entrycnt y newcnt actualizados. En otra realización, los valores de puntuación calculados pueden actualizarse a partir de la realimentación recibida de uno o más agentes de monitorización tales como el agente 107.
El valor de puntuación calculado puede ajustarse basándose en el número total de valores que constituyen el conjunto de valores para un elemento. Por ejemplo, si el conjunto de valores usado para calcular el valor de puntuación es bajo, entonces la razón de valores inesperados con respecto al número total de valores puede desviarse innecesariamente por el bajo recuento total de valores. En una realización, el valor de puntuación calculado puede ajustarse usando una función de suavizado que ajusta el valor de puntuación calculado basándose en el número total de valores dentro del conjunto de valores. El siguiente pseudocódigo proporciona un ejemplo de una función de suavizado que modifica el valor de puntuación para tener en cuenta el número total de valores usados para determinar el valor de puntuación:
score = min( Analyzer.time_smooth( score jis , entrycnt, 100 ), score_ns)
donde “score” equivale a una puntuación ajustada que es el valor mínimo del score_ns calculado originalmente y un valor de score_ns ajustado cuando se aplica la función de suavizado. Las realizaciones de la función de suavizado pueden incluir cualquier tipo de factor de ajuste matemático que pueda reducir el valor de score_ns basándose en el número total de valores usados para calcular el score_ns.
En una realización, pueden implementarse funciones de protección para garantizar que los valores de puntuación calculados no se desvíen intencionadamente por ningún tipo de operación o ningún conjunto de operaciones que se originen a partir de una sola fuente. En un ejemplo, un gran número de operaciones idénticas pueden desviar los valores para un elemento particular. Si el gran número de operaciones idénticas se originaron a partir de una sola fuente, ya sea intencionadamente o por coincidencia, entonces la única fuente puede influir en el cálculo del valor de puntuación y a su vez influir en la generación de reglas basándose en el valor de puntuación desviado. El cálculo del valor de puntuación puede configurarse para minimizar un solo usuario o tipo de operación con el fin de impedir que determinadas operaciones se desvíen del conjunto de valores de puntuación calculados. En una realización, el cálculo del valor de puntuación para un elemento puede incluir generar valores de puntuación independientes para el
elemento basándose en el ID de usuario asociado con cada operación. Al calcular las puntuaciones basándose en el elemento y el ID de usuario, es posible que un gran número de operaciones de un solo usuario no pueda influir en un valor de puntación particular para el elemento. El valor de puntuación para el elemento particular puede calcularse entonces como un agregado de valores de puntuación calculados de cada ID de usuario a partir del conjunto de operaciones. En otra realización, a cada ID de usuario se le puede asignar su propio valor de puntuación para el elemento, eliminando de ese modo la influencia del valor de puntuación para otros usuarios.
En una realización, las puntuaciones calculadas para elementos y subelementos pueden almacenarse dentro del conjunto de datos de línea base agregado. Por ejemplo, si el conjunto de datos de línea base agregado se representa como una estructura jerárquica de datos con elementos y subelementos, entonces la puntuación calculada para cada elemento puede almacenarse dentro de un valor de propiedad de puntuación dentro de cada elemento.
En referencia de nuevo a la figura 3, en la etapa 325, las instrucciones de generación de reglas 140 determinan si los elementos dentro del conjunto de líneas base agregadas pueden usarse para generar una regla. En una realización, pueden usarse uno o más valores de propiedad de elementos para generar una regla de operación si los valores de puntuación calculados para los elementos superan el valor umbral de puntuación almacenado de la etapa 305. Por ejemplo, si el valor umbral de puntuación almacenado es 85 de 100 y un valor de puntuación calculado para un elemento particular es 90 de 100, entonces los valores de propiedad dentro del elemento particular pueden usarse para generar una regla que describa los valores de propiedad esperados para el elemento particular para nuevas operaciones. En una realización, las instrucciones de generación de reglas 140 proporcionan instrucciones para evaluar todos los elementos que tienen valores de puntuación calculados dentro de la línea base agregada para determinar qué elementos y subelementos pueden usarse para la generación de reglas. Si un valor de puntuación calculado para un elemento está por debajo del valor umbral de puntuación, entonces el elemento no se usará para la generación de reglas y el sistema de monitorización 120 continuará evaluando los elementos de propiedad restantes dentro del conjunto de datos de línea base agregado.
En la etapa 330, las instrucciones de generación de reglas 140 proporcionan instrucciones para generar automáticamente un conjunto de reglas de operación de línea base basándose en los elementos en el conjunto de datos de línea base agregado que tienen valores de puntuación calculados que superan el valor umbral de puntuación almacenado. En una realización, pueden generarse una o más reglas a partir de los elementos dentro del conjunto de datos de línea base agregado. Por ejemplo, los elementos que representan lecturas de archivos normales y puertos conectados locales pueden tener valores de puntuación calculados que superan el valor umbral de puntuación almacenado y pueden usarse para generar una o más reglas para operaciones esperadas. Una de tales reglas puede basarse en los valores de propiedad esperados en los elementos de lectura de archivos normales. Por ejemplo, si los valores de propiedad esperados incluyen el archivo A y el archivo B que se leen durante operaciones dentro del conjunto de datos de línea base agregado particular, entonces puede generarse una regla de lectura de archivo normal que especifica que sólo se espera que se lean el archivo A y el archivo B durante la ejecución de la operación particular. Si durante una operación regida por la regla de lectura de archivo normal se realiza una lectura de archivo en otro archivo, tal como el archivo C, entonces la regla de lectura de archivo normal puede usarse para determinar que la operación realizada fue una operación anómala. De manera similar, puede generarse una regla de puertos conectados locales usando los valores de propiedad esperados del elemento de puertos conectados locales.
En una realización, pueden combinarse uno o más elementos para crear una regla de combinación basándose en las propiedades de uno o más elementos. Usando el ejemplo anterior, puede generarse una regla de combinación de lectura de archivos-puertos conectados locales que especifique que las nuevas operaciones son válidas si los valores de propiedades de operación para las lecturas de archivos y los puertos conectados locales se encuentran dentro de los intervalos de valores definidos para las lecturas de archivos y los puertos conectados locales tal como se define en la regla de combinación de lectura de archivos-puertos conectados locales. Si se lee un archivo que no está definido en la regla de combinación de lectura de archivos-puertos conectados locales o se conecta un puerto local que no está definido en la regla de combinación de lectura de archivos-puertos conectados locales, entonces la operación puede interpretarse como una operación anómala.
En una realización, las reglas de operación de línea base generadas pueden incluir definiciones de plantilla específicas que pueden configurarse para incorporar reglas personalizadas que se basan en parámetros de inicialización específicos para la aplicación y el contenedor que está monitorizándose. Por ejemplo, en la inicialización, un contenedor específico puede especificar determinados parámetros de entrada para puertos TCP o archivos de definición que van a usarse. La regla de operación de línea base puede configurarse para definir los puertos TCP permisibles y los archivos de definición usados durante la inicialización. Al generar reglas de operación de línea base basándose en definiciones de plantilla, pueden personalizarse las reglas de operación de línea base para cada contenedor y definirse aplicación basándose en las opciones de configuración con archivos de configuración para cada contenedor.
En una realización, el conjunto de reglas de operación de línea base para el conjunto de datos de línea base agregado puede almacenarse dentro del repositorio de reglas 160 para su uso por el sistema de detección de operaciones 170. El sistema de detección de operaciones 170 representa un sistema de aplicación de reglas que
puede organizar y delegar reglas de operación para aplicaciones, contenedores y nodos informáticos específicos a uno o más agentes con el fin de monitorizar y detectar anomalías de operación basándose en las reglas generadas. En una realización, el conjunto de reglas de operación de línea base puede configurarse para aplicaciones, contenedores o nodos informáticos específicos.
En una realización, el conjunto de reglas de operación de línea base puede configurarse además para identificar operaciones anómalas que se han producido dentro de un entorno monitorizado o puede usarse para filtrar operaciones anómalas para que no se produzcan dentro del entorno monitorizado. Por ejemplo, el conjunto de reglas de operación de línea base puede configurarse para generar alertas específicas cuando la entrada o salida de operación desencadena una anomalía basándose en el conjunto de reglas de operación de línea base. Por ejemplo, puede generarse una alerta cuando un contenedor lee un archivo que está incluido dentro del conjunto de archivos de línea base definidos en una regla específica. El conjunto de reglas de operación de línea base también puede configurarse como un filtro que va a usarse dentro de un núcleo de un nodo informático. Por ejemplo, el núcleo 205 dentro del nodo informático 105 puede configurarse para implementar el conjunto de reglas de operación de línea base como un filtro de excepción de anomalías que impide la ejecución de operaciones anómalas. Por ejemplo, si una operación solicita la apertura de un archivo específico que no forma parte del conjunto de archivos de línea base definidos en la regla específica, entonces el núcleo 205 puede impedir que se ejecute la operación. En una realización, las configuraciones de uso para el conjunto de reglas de operación de línea base pueden almacenarse dentro del repositorio de reglas 160.
Las instrucciones de generación de reglas 140 pueden proporcionar instrucciones para actualizar automáticamente conjuntos existentes de reglas de operación de línea base basándose en los elementos en el conjunto de datos de línea base agregado. En una realización, el conjunto de datos de línea base agregado puede basarse en operaciones relacionadas con una aplicación o contenedor específico para el que ya existen reglas generadas. En esta situación, los elementos del conjunto de datos de línea base agregado pueden usarse para actualizar las reglas existentes almacenadas en el repositorio de reglas 160. Las actualizaciones pueden incluir la modificación de conjuntos de entradas o salidas esperadas para una o más propiedades de elemento. Al permitir que las reglas de operación de línea base se actualicen basándose en la nueva información de operación. Las reglas de operación de línea base pueden adaptarse a las últimas operaciones e interacciones que se producen en aplicaciones y contenedores de interés.
En referencia de nuevo a la figura 3, la etapa 335 representa la transmisión de un conjunto de reglas de operación de línea base a un nodo informático. En una realización, el sistema de detección de operaciones 170 accede y transmite un conjunto de reglas de operación de línea base 180 desde el repositorio de reglas 160 hasta uno o más agentes, tal como el agente 107 que reside en el nodo informático 105, con los fines de detectar operaciones anómalas que se ejecutan en el nodo informático 105. El sistema de detección de operaciones 170 puede configurarse para transmitir el conjunto de reglas de operación de línea base 180 que incluyen opciones de configuración para desencadenar alertas cuando se produce una operación anómala dentro del nodo informático 105 y para filtrar operaciones particulares anómalas para que no se produzcan en el nodo informático 105.
En una realización, el agente 107 puede configurarse para recibir el conjunto de reglas de operación de línea base 180 e implementar una monitorización de actividad basada en reglas que monitoriza la actividad entre el núcleo 205 y la una o más aplicaciones y contenedores en ejecución que interactúan con el núcleo 205. Por ejemplo, el conjunto de reglas de operación de línea base 180 puede incluir, pero sin limitarse a, reglas que definen operaciones de llamada al sistema esperadas, parámetros de operación y salida de operaciones solicitadas. El agente 107 puede monitorizar la actividad entre los contenedores 225 y 235, las aplicaciones 215, 220, 227 y 237, y el núcleo 205 para determinar si alguna operación solicitada incluye valores de propiedad que no están definidos dentro del conjunto de reglas de operación de línea base 180. Si una operación contiene valores de propiedad no definidos dentro de una regla específica, entonces el agente 107 puede determinar que la operación es una anomalía y puede generar una alerta. En una realización, la alerta puede transmitirse directamente a una cuenta de administrador del sistema o a una cuenta de usuario, o puede transmitirse al sistema de detección de operaciones 170. En una realización, las alertas transmitidas al sistema de detección de operaciones 170 pueden almacenarse y transmitirse a uno o más usuarios o administradores. Las alertas almacenadas pueden almacenarse dentro del repositorio de reglas 160 para el fin de analizar tendencias y actualizar reglas existentes dependiendo de si las operaciones anómalas se producen con frecuencia y de si los valores de propiedad deben considerarse parte de los valores esperados.
En una realización, la realimentación del usuario puede usarse para actualizar el conjunto de reglas de operación de línea base 180. El agente 107 puede configurarse para, al detectar una operación anómala, generar un mensaje de evento interactivo que se muestra al usuario actual. Por ejemplo, si un usuario está interactuando con el contenedor 225 y el agente 107 detecta una operación anómala del contenedor 225, entonces el agente 107 puede generar un mensaje emergente u otro tipo de notificación que se muestra al usuario. El mensaje puede incluir una interfaz de usuario que permite al usuario seleccionar de opciones que incluyen, pero sin limitarse a, reconocer el mensaje de evento, marcar el mensaje de evento como inexacto y permitir temporalmente la operación anómala asociada con el mensaje de evento. Adicionalmente, la realimentación del usuario también puede incluir una puntuación introducida por el usuario que se asigna como un valor de exactitud para la regla usada para marcar la operación anómala. Por ejemplo, si una operación se identificó como anómala, entonces se puede presentar al usuario un mensaje que indica la operación anómala identificada y la regla usada para identificar la operación. El usuario puede seleccionar
entonces una opción que confirme la operación anómala detectada y el usuario puede asignar una puntuación de exactitud a la regla usada para detectar la operación anómala.
En una realización, marcar el mensaje de evento como inexacto puede desencadenar que el agente 107 transmita la realimentación del usuario al sistema de detección de operaciones 170. El sistema de detección de operaciones 170 puede configurarse para incorporar la realimentación del usuario enviada desde el agente 107 en la generación de reglas actualizando las reglas específicas que marcaron incorrectamente las operaciones como anómalas. La actualización de las reglas puede incluir convertir la realimentación en una puntuación de ajuste que puede introducirse en la etapa 320 para actualizar las puntuaciones existentes de los elementos de la línea base agregada.
En una realización, el conjunto de reglas de operación de línea base 180 puede comprender subconjuntos de reglas de operación de línea base adaptadas a aplicaciones y contenedores específicos que se ejecutan en el nodo informático 105. Por ejemplo, en referencia a la figura 2, el conjunto de reglas de operación de línea base 180 puede incluir subconjuntos de reglas de operación de línea base específicos para monitorizar operaciones de cada una de las aplicaciones 215, 220, 227 y 237, y los contenedores 225 y 235. Cada uno de los subconjuntos de reglas de operación de línea base puede basarse en líneas base agregadas específicas compiladas a partir de operaciones de cada una de las aplicaciones 215, 220, 227 y 237, y los contenedores 225 y 235.
En una realización, los subconjuntos del conjunto de reglas de operación de línea base 180 pueden incluir reglas de operación de línea base que se basan en definiciones de plantilla de parámetros. El agente 107 puede configurarse para incorporar personalizaciones de aplicaciones y contenedores mediante la interpretación de archivos de configuración, parámetros de línea de comandos, variables de entorno y cualquier otro mecanismo usado para personalizar una aplicación y un contenedor. La información de personalización puede incorporarse entonces por las definiciones de plantilla de parámetros con el fin de incorporar reglas de operación de línea base personalizadas.
En una realización, el conjunto de reglas de operación de línea base puede incluir subconjuntos de reglas de operación de línea base generadas a partir de diferentes líneas base agregadas. Por ejemplo, un primer subconjunto de reglas de operación de línea base puede basarse en una línea base agregada derivada de operaciones del contenedor A y un segundo subconjunto de reglas de operación de línea base puede basarse en una línea base agregada derivada de operaciones del contenedor B. Si el contenedor A es una imagen de contenedor que se instancia dentro de una imagen de contenedor B, entonces el conjunto de reglas de operación de línea base usado para monitorizar las operaciones para el contenedor A puede incluir el primer subconjunto de reglas de operación de línea base y un subconjunto de reglas de operación de línea base heredado basándose en el segundo subconjunto de reglas de operación de línea base. Por ejemplo en referencia a la figura 2, pueden usarse múltiples subconjuntos de reglas de operación de línea base para monitorizar la aplicación 227, que se ejecuta dentro del contenedor 225. En esta situación, las reglas de operación de línea base usadas para monitorizar la aplicación 227 pueden incluir un subconjunto específico para la aplicación 227 y otro subconjunto que se hereda del contenedor 225. Al compilar un conjunto completo de reglas de operación de línea base que puede usarse a partir de reglas específicas para la aplicación y reglas heredadas del entorno en el que está ejecutándose la aplicación, el conjunto de reglas de operación de línea base que puede usarse puede personalizarse para monitorizar valores de propiedades de operaciones específicas para una aplicación objetivo y propiedades de operaciones específicas para el entorno único en el que está ejecutándose la aplicación objetivo. Otro ejemplo de uso de múltiples subconjuntos de reglas de operación de línea base incluyen la incorporación de reglas de línea base que pueden ser específicas para un sistema operativo particular con una aplicación específica. Por ejemplo, si el contenedor 235 está ejecutando una imagen en el sistema operativo Ubuntu de Linux y la aplicación 237 está ejecutándose dentro de contenedor 235, entonces los subconjuntos de reglas de operación de línea base pueden usarse para monitorizar operaciones de la aplicación 237 que incluyen un subconjunto de reglas específicas generadas por la aplicación 237 y un subconjunto de reglas específicas que son relevantes para el sistema operativo Ubuntu. Adicionalmente, si contenedor 235 implementó una imagen del sistema operativo Windows, la aplicación de monitorización 237 puede incluir el uso de reglas de operación de línea base específicas para la aplicación 237 y de reglas de operación de línea base específicas para el sistema operativo Windows.
En una realización, un agente puede usar el conjunto de reglas de operación de línea base para filtrar operaciones anómalas para que no se ejecuten. En referencia de nuevo a la figura 2, el agente 107 puede configurarse para implementar desencadenantes de filtrado basándose en el conjunto de reglas de operación de línea base 180 recibido desde el sistema de detección de operaciones 170. El agente 107 puede usar mecanismos de manejo de excepciones para captar operaciones marcadas como anomalías y filtrarlas impidiendo la ejecución de las operaciones. Por ejemplo, el agente 107 puede usar puntos de seguimiento dentro del módulo de núcleo 210 para identificar valores de propiedad de operaciones anómalas basándose en el conjunto de reglas de operación de línea base 180, y dentro de los puntos de seguimiento, forzar el fallo de la operación particular, impidiendo de ese modo que la operación se ejecute.
En otra realización, el conjunto de reglas de operación de línea base puede usarse para filtrar operaciones anómalas integrando el conjunto de reglas de operación de línea base en los mecanismos de filtración existentes del sistema operativo. Por ejemplo, el conjunto de reglas de operación de línea base puede integrarse en un marco de filtrado de red tal como Netfilter o puede integrarse en SELinux para I/O y filtrado de ejecución de procesos.
En una realización, la configuración de reglas de monitorización basándose en el conjunto de reglas de operación de línea base recibido puede configurarse usando orquestadores y sistemas de gestión de contenedores. Diferentes orquestadores pueden incluir implementaciones comerciales tales como Kubernetes y Mesos, que pueden usarse para extraer metadatos útiles para configurar cómo usa el agente 107 el conjunto de reglas de operación de línea base 180 recibido del sistema de detección de operaciones 170. Por ejemplo, los archivos de configuración del orquestador pueden usarse para configurar el grado en el que el agente usa el conjunto de reglas de operación de línea base 180 para monitorizar las operaciones. En una realización, el agente 107 puede configurarse para leer los archivos de configuración del orquestador y basándose en la configuración del orquestador, el agente 107 puede configurar la monitorización de operaciones. En otra realización, el agente 107 puede configurarse a partir de una interfaz de usuario de orquestador, donde un usuario puede personalizar qué reglas de operación de línea base se aplican basándose en el nivel de monitorización deseado. Por ejemplo, si un usuario desea restringir el acceso de peticiones de entrada, entonces el usuario puede usar el orquestador para configurar el agente 107 para que sólo permita peticiones de un puerto específico, tal como el puerto 80. Adicionalmente, el agente 107 puede configurarse para implementar diferentes reglas basándose en el entorno de tiempo de ejecución deseado. Por ejemplo, el agente 107 puede configurarse para monitorizar operaciones basándose en un subconjunto de reglas de operación de línea base para un entorno de producción, un entorno de control de calidad y un entorno de desarrollador, donde cada entorno aplica un conjunto de reglas diferente del conjunto de reglas de operación de línea base 180.
5. EJEMPLO DE IMPLEMENTACIÓN - VISIÓN GENERAL DEL HARDWARE
Según una realización, las técnicas descritas en el presente documento se implementan por uno o más dispositivos informáticos de uso especial. Los dispositivos informáticos de uso especial pueden estar cableados para realizar las técnicas, o pueden incluir dispositivos electrónicos digitales tales como uno o más circuitos integrados específicos de la aplicación (ASIC) o matrices de puertas programables en campo (FPGA) que se programan de manera continua para realizar las técnicas, o pueden incluir uno o más procesadores de hardware de uso general programados para realizar las técnicas de acuerdo con instrucciones de programa en firmware, memoria, otro almacenamiento o una combinación. Tales dispositivos informáticos de uso especial también pueden combinar lógica cableada personalizada, ASIC o FPGA con programación personalizada para lograr las técnicas. Los dispositivos informáticos de uso especial pueden ser sistemas informáticos de escritorio, sistemas informáticos portátiles, dispositivos portátiles, dispositivos de red o cualquier otro dispositivo que incorpore lógica de programa y/o cableada para implementar las técnicas.
Por ejemplo, la figura 4 es un diagrama de bloques que ilustra un sistema informático 400 con el que puede implementarse una realización de la invención. El sistema informático 400 incluye un bus 402 u otro mecanismo de comunicación para comunicar información, y un procesador de hardware 404 acoplado con el bus 402 para procesar información. El procesador de hardware 404 puede ser, por ejemplo, un microprocesador de uso general.
El sistema informático 400 también incluye una memoria principal 406, tal como una memoria de acceso aleatorio (RAM) u otro dispositivo de almacenamiento dinámico, acoplado al bus 402 para almacenar información e instrucciones que va a ejecutar el procesador 404. La memoria principal 406 también puede usarse para almacenar variables temporales u otra información intermedia durante la ejecución de instrucciones que van a ejecutarse por el procesador 404. Tales instrucciones, cuando se almacenan en medios de almacenamiento no transitorios accesibles al procesador 404, convierten el sistema informático 400 en una máquina de uso especial que está personalizada para realizar las operaciones especificadas en las instrucciones.
El sistema informático 400 incluye además una memoria de solo lectura (ROM) 408 u otro dispositivo de almacenamiento estático acoplado al bus 402 para almacenar información estática e instrucciones para el procesador 404. Un dispositivo de almacenamiento 410, tal como un disco magnético, un disco óptico o una unidad de estado sólido se proporciona y se acopla al bus 402 para almacenar información e instrucciones.
El sistema informático 400 puede acoplarse a través del bus 402 a una pantalla 412, tal como un tubo de rayos catódicos (CRT), para presentar visualmente información a un usuario del ordenador. Un dispositivo de entrada 414, que incluye teclas alfanuméricas y otras, está acoplado al bus 402 para comunicar información y selecciones de comandos al procesador 404. Otro tipo de dispositivo de entrada de usuario es el control de cursor 416, tal como un ratón, una bola de seguimiento o teclas de dirección de cursor para comunicar información de dirección y selecciones de comandos al procesador 404 y para controlar el movimiento del cursor en la pantalla 412. Este dispositivo de entrada normalmente tiene dos grados de libertad en dos ejes, un primer eje (por ejemplo, x) y un segundo eje (por ejemplo, y), que permite que el dispositivo especifique posiciones en un plano.
El sistema informático 400 puede implementar las técnicas descritas en el presente documento usando lógica cableada personalizada, uno o más ASIC o FPGA, firmware y/o lógica de programa que en combinación con el sistema informático hace que el sistema informático 400 sea o programa el mismo para que sea una máquina de uso especial. Según una realización, las técnicas en el presente documento se realizan por el sistema informático 400 en respuesta el procesador 404 que ejecuta una o más secuencias de una o más instrucciones contenidas en la memoria principal 406. Tales instrucciones pueden leerse en la memoria principal 406 desde otro medio de almacenamiento, tal como el dispositivo de almacenamiento 410. La ejecución de las secuencias de instrucciones contenidas en la memoria principal 406 hace que procesador 404 realice las etapas de procedimiento descritas en el
presente documento. En realizaciones alternativas, puede usarse un conjunto de circuitos cableados en lugar de o en combinación con instrucciones de software.
El término “medios de almacenamiento”, tal como se usa en el presente documento, se refiere a cualquier medio no transitorio que almacene datos y/o instrucciones que hacen que una máquina funcione de un modo específico. Tales medios de almacenamiento pueden comprender medios no volátiles y/o medios volátiles. Los medios no volátiles incluyen, por ejemplo, discos ópticos, discos magnéticos o unidades de estado sólido, tales como el dispositivo de almacenamiento 410. Los medios volátiles incluyen una memoria dinámica, tal como la memoria principal 406. Las formas comunes de medios de almacenamiento incluyen, por ejemplo, un disquete, un disco flexible, un disco duro, una unidad de estado sólido, cinta magnética, o cualquier otro medio de almacenamiento de datos magnético, un CD-ROM, cualquier otro medio de almacenamiento de datos óptico, cualquier medio físico con patrones de agujeros, una RAM, una PROM y EPROM, una FLASH-EPROM, NVRAM, cualquier otro chip o cartucho de memoria.
Los medios de almacenamiento son distintos de, pero pueden usarse conjuntamente con, los medios de transmisión. Los medios de transmisión participan en la transferencia de información entre medios de almacenamiento. Por ejemplo, los medios de transmisión incluyen cables coaxiales, cable de cobre y fibra óptica, incluyendo los cables que comprenden el bus 402. Los medios de transmisión también pueden adoptar la forma de ondas acústicas o luminosas, tales como las generadas durante las comunicaciones de datos por infrarrojos y ondas de radio.
Diversas formas de medios pueden estar implicadas en portar una o más secuencias de una o más instrucciones al procesador 404 para su ejecución. Por ejemplo, las instrucciones pueden portarse inicialmente en un disco magnético o en una unidad de estado sólido de un ordenador remoto. El ordenador remoto puede cargar las instrucciones en su memoria dinámica y enviar las instrucciones a través de una línea telefónica usando un módem. Un módem local al sistema informático 400 puede recibir los datos en la línea telefónica y usar un transmisor de infrarrojos para convertir los datos en una señal de infrarrojos. Un detector de infrarrojos puede recibir los datos portados en la señal de infrarrojos y el circuito apropiado puede colocar los datos en el bus 402. El bus 402 porta los datos a la memoria principal 406, desde la cual el procesador 404 recupera y ejecuta las instrucciones. Las instrucciones recibidas por la memoria principal 406 pueden almacenarse opcionalmente en el dispositivo de almacenamiento 410 o bien antes o bien después de la ejecución por parte del procesador 404.
El sistema informático 400 también incluye una interfaz de comunicación 418 acoplada al bus 402. La interfaz de comunicación 418 proporciona un acoplamiento de comunicación de datos bidireccional a un enlace de red 420 que está conectado a una red local 422. Por ejemplo, la interfaz de comunicación 418 puede ser una tarjeta de red digital de servicios integrados (ISDN), módem por cable, módem por satélite o un módem para proporcionar una conexión de comunicación de datos a un tipo de línea telefónica correspondiente. Como otro ejemplo, la interfaz de comunicación 418 puede ser una tarjeta de red de área local (LAN) para proporcionar una conexión de comunicación de datos a una LAN compatible. También pueden implementarse enlaces inalámbricos. En cualquier implementación de este tipo, la interfaz de comunicación 418 envía y recibe señales eléctricas, electromagnéticas u ópticas que portan flujos de datos digitales que representan varios tipos de información.
El enlace de red 420 normalmente proporciona comunicación de datos a través de una o más redes a otros dispositivos de datos. Por ejemplo, el enlace de red 420 puede proporcionar una conexión a través de la red local 422 a un ordenador anfitrión 424 o a un equipo de datos operado por un proveedor de servicios de Internet (ISP) 426. El ISP 426, a su vez, proporciona servicios de comunicación de datos a través de la red mundial de comunicación de datos por paquetes, denominada ahora comúnmente “Internet” 428. La red local 422 e Internet 428 usan ambos señales eléctricas, electromagnéticas u ópticas que portan flujos de datos digitales. Las señales a través de las diversas redes y las señales en el enlace de red 420 y a través de la interfaz de comunicación 418, que portan los datos digitales hacia y desde el sistema informático 400, son formas de ejemplo de medios de transmisión.
El sistema informático 400 puede enviar mensajes y recibir datos, incluyendo código del programa, a través de la(s) red(es), el enlace de red 420 y la interfaz de comunicación 418. En el ejemplo de Internet, un servidor 440 podría transmitir un código solicitado para un programa de aplicación a través de Internet 428, ISP 426, red local 422 e interfaz de comunicación 418.
El código recibido puede ejecutarse por el procesador 404 a medida que se recibe y/o almacenarse en el dispositivo de almacenamiento 410 u otro almacenamiento no volátil para una ejecución posterior.
En la memoria descriptiva anterior, se han descrito realizaciones de la invención con referencia a numerosos detalles específicos que pueden variar de una implementación a otra. Por consiguiente, la memoria descriptiva y los dibujos deben considerarse en un sentido ilustrativo más que restrictivo. El indicador único y exclusivo del alcance de la invención, y lo que los solicitantes desean que sea el alcance de la invención, es el alcance de las reivindicaciones adjuntas.
TABLA 1
Ejemplo de tabla de programas de Dropbox - formato JSON
"bound_ports" :
{
"startup" :
{
"1_t c p " :
{
" d " :
{
"17500" : 1
"17600" : 1
"843" : 1
) .
"full" : false
} .
"l_udp" :
{
"d" :
{
"17500" : 1
} .
"full" : false
}
}
} .
"c_subnet_endpoints" :
{
"startup" :
(
"C_tcp" :
{
" d " :
{
"192.168.131.0" : 1
).
"full" : false
E
"s_tcp" :
{
"d" :
{
"192.168.172.0" : 1,
"192.168.17.0" : 1,
"192.168.217.0" : 1,
"192.168.232.0" : 1,
"192.168.252.0" : 1
).
"full" : false
}
}
},
"comm" : "dropbox",
"dirs" :
{
"startup" :
{
"uncategorized" :
{
"d" :
{
"/dev/" : 1, "/home/someuser/.someserver/instance
1/ " : 1,
"/home/someuser/.someserver/instance _db/" : 1,
"/home/someuser/sysdig/build/debug/u serspace/alphabet/" : 1,
"/tmp/" : 1,
"/var/lib/libuuid/" : 1
).
"full" : false
}
}
E
"exe" :
"/home/soraeuser/.someserverdist/dropboxlnx.x86_649.4.49/d ropbox",
"files" :
{
"startup" :
{
{
"d" :
{
"/tmp/tmp5rOL_C (deleted)" : 1, "/var/lib/libuuid/clock.txt" : 1, "/dev/urandom" : 1,
E
"full" : false
E
"rw" :
{
"d" :
{
"/dev/null" : 1, "/home/someuser/.someserver/instance l/TO_HASH_riUNev" : 1, "/home/someuser/.someserver/instance 1/aggregation.dbx" : 1,
"/home/someuser/.someserver/instance 1/checker.dbx" : 1, "/home/someuser/.someserver/instance 1/config.dbx" : 1,
"/home/someuser/.someserver/instance 1/deleted.dbx" : 1, "/home/someuser/.someserver/instance l/filecache.dbx" : 1, "/home/someuser/.someserver/instance l/filecache.dbxshm"
: 1,
"/home/someuser/.someserver/instance l/filecache.dbxwal"
: 1,
"/home/someuser/.someserver/instance 1/notifications.dbx" : 1, "/home/someuser/.someserver/instance 1/resync.dbx" : 1, "/home/someuser/.someserver/instance 1/sigstore.dbx" : 1, "/home/someuser/.someserver/instance _db/instance.dbx" : 1,
).
"full" : false
}
}
}-"ip_endpoints" :
{
"startup" :
{
"c_tcp" :
{
"d" :
{
"192.168.131.1" : 1
}-
"full" : false
).
"s_tcp" :
{
"d" :
{
"192.168.172.193" : 1, "192.168.172.236" : 1, "192.168.17.131" : 1, "192.168.217.65" : 1, "192.168.232.109" : 1, "192.168.252.96" : 1
K
"full" : false
}
}
"startup" :
{
"l_tcp" :
{
"d" :
{
"17500" : 1
},
"full" : false
K
"r_ tc p " :
{
"d" :
"443" : 1
"full" : false
}
}
K
"user id" : 0
"bound_ports" :
{
"startup" :
{
"l_udp" :
{
"d" :
{
"64869" : 1,
"68" : 1
}.
"full" : false
}
}
},
"comm" : "dhclient",
"dirs" :
{
"startup" :
{
"uncategorized" :
{
"d" :
{
"/dev/" : 1, "/var/lib/NetworkManager/" : 1
} '
"full" : false
}
}
K
"exe" : "/sbin/dhclient",
"files" :
{
"startup" :
{
"uncategorized" :
{
"d" :
{
" /d e v /n u l l" : 1, "/var/lib/NetworkManager/dhclie nt298f60bc6e9541f6805897246aa73 c72eth0.
lease" : 1
}
}.
"full" : false
}
}
).
"user_id" : 0
}
TABLA 2.
Ejemplo de línea base agregada de operaciones
"info" : {
"count_existing" : 26, "expect_multiple_sources" : true, "count_new" : 2,
"unique_ids" : {
"256706c57425" : 0,
"addcntexisting" : 0, "full" : false,
"d" : {
K
"addcnt new" : 0
"executed_prograras" : {
"regular" : {
"p" : {
"addcntexisting" : 0, "full" : false,
"d" : {
E
"addcnt new" : 0
"p" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}
}
h
"c_subnet_endpoints" : {
"regular" : {
"udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt new" : 0
}.
"c_tcp" : {
"addent_existing" : 1, "full" : false,
"d" : {
"127.0.0.0" : 26,
"127.0.83.0" : 26,
"127.0.66.0" : 26,
"127.0.69.0" : 26
},
"addcnt new" : 1
"s_te p " : {
"addent_existing" : 0, "full" : false,
"d" : {
},
"addcnt_new" : 0
}
} '
"startup" : {
"udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
K
"addcnt_new" : 0
}.
"c_te p " : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}.
"s_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcntnew" : 0
}
}
h
"ip_endpoints" : {
"regular" : {
"udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
).
"addcnt new" : 0
"c_tcp" : {
"addcntexisting" : 2, "full" : false,
"d" : {
"127.2.69.0" : 26, "127.2.66.0" : 13, "127.2.66.1" : 13, "127.2.83.1" : 13, "127.2.83.0" : 13, "127.0.0.1" : 26
).
"addcnt_new" : 2
}.
"S_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt new" : 0
"udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcntnew" : 0
}.
"C_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
},
"addcnt_new" ; 0
}.
"s_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}-
"addcnt new" : 0
"server_ports" : {
"regular" : {
"1_tcp" : { "addcnt_existing" : 1, "full" : false,
"d" : {
"6379" : 26
}.
"r_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}.
"l_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}.
"r_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}
}.
"startup" : {
"1_tcp" : {
"addcnt_existing" : 0 "full" : false, "d" : {
).
"addcnt_new" : 0
}.
"r_tcp" : {
"addcntexisting" : 0 "full" : false, "d" : {
}.
"addcnt new" : 0
"l_udp" : { "addcnt_existing" : 0, "full" : false,
"d" : {
).
"addcntnew" : 0
}.
"r_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt new" : 0
"addcntexisting" : 1, "full" : false,
"d" : {
"/proc/1/" : 0
}.
"addcnt_new" : 1
}.
"other" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
).
"rw" : {
"addcnt_existing" : 0,
"full" : false,
"d" : {
),
"addcnt_new" : 0
}<
"uncategorized" : {
"addcnt_existing" : 1 "full" : false, "d" : {
"/data/" : 0, "/dev/" : 0
} '
"addcnt_new" : 1
"addcnt_existing" : 0 "full" : false, "d" : {
},
"addcnt_new" : 0
h
"other" : {
"addcnt_exi£ting" : 0 "full" : false, "d" : {
}-
"addcnt_new" : 0
},
"rw" : {
"addcnt_existing" : 0 "full" : false, "d" : {
).
"full" : false,
"d" : {
"/data/" : 25, "/dev/" : 26
}.
"addcnt_new" : 1 }
},
"startup" : {
"r" : {
"addcnt_existir_g" : 0 "full" : false, "d" : {
}.
"addcnt_new" : 0
},
"other" : {
"addcnt_existir_g" : 0 "full" : false, "d" : {
}.
"addcnt_new" : 0
},
"rw" : {
"addcnt_existing" : 0,
"full" : false, "d" : {
}.
"addcnt_new" : 0 h
"uncategorized" : {
"addcnt_existir.g" : 0 "full" : false, "d" : {
}.
"addcnt new" : 0
}.
"bound_ports" : {
"regular" : {
"l_tcp" : {
"addcnt_existing" : 1, "full" : false,
"d" : {
"6379 " : 26
).
"addcntnew" : 1
)'
"r_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
).
"addcnt_new" : 0
},
"l_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}'
"r_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
).
"addcnt new" : 0
h
"startup" : {
"l_tcp" : { "addcnt_existing" : O, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}.
"r_tcp" : {
"addcnt_existing" : 0, "full" : false,
"d " : {
}.
"addcnt_new" : 0
}.
"l_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
).
"r_udp" : {
"addcnt_existing" : 0, "full" : false,
"d" : {
}.
"addcnt_new" : 0
}
Claims (12)
- REIVINDICACIONESi. Un método de procesamiento de datos que proporciona una mejora en la generación automática de reglas programadas para detectar operaciones anómalas en sistemas informáticos que ejecutan aplicaciones de programa informático en contenedores, comprendiendo el método:crear y almacenar, en un almacenamiento de datos digitales, un valor umbral de puntuación que está asociado con la determinación de si va a generarse una regla de operación de línea base;recibir, a partir de uno o más procesos de monitorización de servicios que se ejecutan en uno o más sistemas informáticos, conjuntos de datos de operaciones que se han realizado en objetos digitales mediante uno o más procesos asociados con una o más aplicaciones informáticas que se ejecutan en el uno o más sistemas informáticos, comprendiendo cada conjunto de datos de los conjuntos de datos de operaciones un conjunto de datos de operaciones que representan registros de operaciones que se realizaron mediante uno o más procesos particulares asociados con una aplicación informática particular de la una o más aplicaciones informáticas;agregar operaciones representadas en los conjuntos de datos de operaciones e identificar las propiedades de operación a partir de las operaciones agregadas para generar un conjunto de datos de línea base agregado que representa las propiedades de operación identificadas a partir de las operaciones agregadas que se agrupan por identificadores comunes asociados con las operaciones;asignar valores de puntuación a cada una de las propiedades de operación en el conjunto de datos de línea base agregado, en el que la asignación de valores de puntuación se realiza de modo que cada valor de puntuación asignado representa si una propiedad de operación particular es una candidata para generar una regla que defina los valores de propiedad de operación esperados para la propiedad de operación particular; ygenerar automáticamente un conjunto de reglas de operaciones de línea base solo para aquellas propiedades de operación en el conjunto de datos de línea base agregado que tienen valores asignados que superan el valor umbral de puntuación, para el conjunto de reglas de operaciones de línea base que se programan para detectar operaciones anómalas que contienen valores de propiedad de operación inesperados.
- 2. El método de procesamiento de datos según la reivindicación 1, que comprende además organizar registros de operaciones en los conjuntos de datos de operaciones, en grupos basados en cómo se ha accedido a los objetos asociados con los registros de operaciones.
- 3. El método de procesamiento de datos según la reivindicación 1, que comprende además, antes de agregar operaciones representadas en los conjuntos de datos de operaciones, recibir metadatos que están configurados para identificar atributos comunes en operaciones a partir de los conjuntos de datos de operaciones, en el que los metadatos comprenden al menos uno de: nombres de anfitrión, etiquetas de usuario, etiquetas de instancia de proveedor de servicios en la nube, nombres de contenedor, identificadores de contenedor, etiquetas de contenedor, nombres de imagen de contenedor, identificadores de imagen de contenedor, etiquetas de orquestador y anotaciones de orquestador.
- 4. El método de procesamiento de datos según la reivindicación 1, en el que agregar las operaciones representadas en los conjuntos de datos de operaciones para generar el conjunto de datos de línea base agregado comprende además compilar valores de propiedad comunes entre operaciones particulares a partir de los conjuntos de datos de operaciones que constituyen la propiedad de operación particular en el conjunto de datos de línea base agregado.
- 5. El método de procesamiento de datos según la reivindicación 4, en el que asignar los valores de puntuación comprende determinar uno o más valores de propiedad de operación de línea base esperados a partir de un conjunto de valores de propiedad de operación particulares que constituyen valores para una propiedad de operación particular representada en el conjunto de datos de línea base agregado, en el que una razón mayor de número de valores de propiedad de operación de línea base esperados con respecto al número total de valores de propiedad de operación para la propiedad de operación particular da como resultado un valor de puntación particular mayor para la propiedad de operación particular.
- 6. El método de procesamiento de datos según la reivindicación 5, en el que asignar los valores de puntuación comprende además calcular los valores de puntuación usando una función de suavizado programada que garantiza que varios valores de propiedad de operación particulares usados para constituir la propiedad de operación particular superan un umbral de propiedad de operación particular con el fin de permitir que la puntuación asignada se tenga en cuenta para generar el conjunto de reglas de operaciones de línea base.
- 7. El método de procesamiento de datos según la reivindicación 5, en el que asignar los valores de puntuación comprende además ejecutar un cálculo de limitación que limita un número de operaciones particulares que tienen el mismo identificador de usuario que puede usarse para calcular el valor de puntuación para la propiedad de operación particular.
- 8. El método de procesamiento de datos según la reivindicación 1, que comprende además:generar instrucciones de detección de anomalía para detectar operaciones que tienen valores de propiedad que están fuera de un intervalo de valores de propiedad de línea base definidos en el conjunto de reglas de operaciones de línea base; yenviar las instrucciones de detección de anomalía al uno o más procesos de monitorización de servicios que se ejecutan en el uno o más sistemas informáticos.
- 9. El método de procesamiento de datos según la reivindicación 8, en el que las instrucciones de detección de anomalía comprenden además instrucciones de filtrado usadas para filtrar e impedir la ejecución de las operaciones detectadas que tienen valores de propiedad que están fuera del intervalo de valores de propiedad de línea base definidos en el conjunto de reglas de operaciones de línea base.
- 10. El método de procesamiento de datos según la reivindicación 1, que comprende además:transmitir el conjunto de reglas de operaciones de línea base y un segundo conjunto de reglas de operaciones de línea base a un sistema informático particular que ejecuta una primera aplicación de programa informático en contenedores y una segunda aplicación de programa informático en contenedores; en el que la primera aplicación informática en contenedores se ejecuta dentro de la segunda aplicación de programa informático en contenedores; yen el que el conjunto de reglas de operaciones de línea base se programan para detectar operaciones anómalas asociadas con la primera aplicación de programa informático en contenedores y el segundo conjunto de reglas de operaciones de línea base se programan para detectar operaciones anómalas asociadas con la segunda aplicación de programa informático en contenedores.
- 11. Un sistema informático que comprende uno o más procesadores y uno o más medios de almacenamiento que almacenan instrucciones que, cuando se ejecutan por uno o más procesadores, provocan la ejecución del método según cualquiera de las reivindicaciones 1 a 10.
- 12. Un producto de programa informático que comprende uno o más medios de almacenamiento que almacenan instrucciones que, cuando se ejecutan por uno o más procesadores, provocan la ejecución del método según cualquiera de las reivindicaciones 1 a 10.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/447,668 US10382492B2 (en) | 2017-03-02 | 2017-03-02 | Automated service-oriented performance management |
PCT/US2018/020293 WO2018160744A1 (en) | 2017-03-02 | 2018-02-28 | Automated service-oriented performance management |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2922303T3 true ES2922303T3 (es) | 2022-09-13 |
Family
ID=63355892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES18761959T Active ES2922303T3 (es) | 2017-03-02 | 2018-02-28 | Gestión automatizada de ejecución orientada a servicios |
Country Status (5)
Country | Link |
---|---|
US (5) | US10382492B2 (es) |
EP (2) | EP4036770A1 (es) |
ES (1) | ES2922303T3 (es) |
IL (2) | IL268647B (es) |
WO (1) | WO2018160744A1 (es) |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454714B2 (en) | 2013-07-10 | 2019-10-22 | Nicira, Inc. | Method and system of overlay flow control |
US10498652B2 (en) | 2015-04-13 | 2019-12-03 | Nicira, Inc. | Method and system of application-aware routing with crowdsourcing |
US10425382B2 (en) | 2015-04-13 | 2019-09-24 | Nicira, Inc. | Method and system of a cloud-based multipath routing protocol |
US10135789B2 (en) | 2015-04-13 | 2018-11-20 | Nicira, Inc. | Method and system of establishing a virtual private network in a cloud service for branch networking |
US10992568B2 (en) | 2017-01-31 | 2021-04-27 | Vmware, Inc. | High performance software-defined core network |
US11706127B2 (en) | 2017-01-31 | 2023-07-18 | Vmware, Inc. | High performance software-defined core network |
US20200036624A1 (en) | 2017-01-31 | 2020-01-30 | The Mode Group | High performance software-defined core network |
US20180219765A1 (en) | 2017-01-31 | 2018-08-02 | Waltz Networks | Method and Apparatus for Network Traffic Control Optimization |
US10778528B2 (en) | 2017-02-11 | 2020-09-15 | Nicira, Inc. | Method and system of connecting to a multipath hub in a cluster |
US10382492B2 (en) | 2017-03-02 | 2019-08-13 | Draios Inc. | Automated service-oriented performance management |
US11195137B2 (en) | 2017-05-18 | 2021-12-07 | International Business Machines Corporation | Model-driven and automated system for shared resource solution design |
US10990898B2 (en) | 2017-05-18 | 2021-04-27 | International Business Machines Corporation | Automatic rule learning in shared resource solution design |
US10523539B2 (en) | 2017-06-22 | 2019-12-31 | Nicira, Inc. | Method and system of resiliency in cloud-delivered SD-WAN |
US10778466B2 (en) | 2017-10-02 | 2020-09-15 | Vmware, Inc. | Processing data messages of a virtual network that are sent to and received from external service machines |
US11115480B2 (en) | 2017-10-02 | 2021-09-07 | Vmware, Inc. | Layer four optimization for a virtual network defined over public cloud |
US10999100B2 (en) | 2017-10-02 | 2021-05-04 | Vmware, Inc. | Identifying multiple nodes in a virtual network defined over a set of public clouds to connect to an external SAAS provider |
US11223514B2 (en) | 2017-11-09 | 2022-01-11 | Nicira, Inc. | Method and system of a dynamic high-availability mode based on current wide area network connectivity |
US11281767B2 (en) * | 2018-03-23 | 2022-03-22 | International Business Machines Corporation | Secure system state extraction software extensibility via plugin sandboxing |
US10592380B2 (en) | 2018-04-20 | 2020-03-17 | Sysdig, Inc. | Programmatic container monitoring |
US12058411B2 (en) * | 2018-07-13 | 2024-08-06 | Avago Technologies International Sales Pte. Limited | Secure monitoring of system-on-chip applications |
US11134059B2 (en) * | 2018-12-04 | 2021-09-28 | Cisco Technology, Inc. | Micro-firewalls in a microservice mesh environment |
US11223639B2 (en) * | 2019-03-07 | 2022-01-11 | Fortinet, Inc. | Endpoint network traffic analysis |
US11121985B2 (en) | 2019-08-27 | 2021-09-14 | Vmware, Inc. | Defining different public cloud virtual networks for different entities based on different sets of measurements |
US11611507B2 (en) | 2019-10-28 | 2023-03-21 | Vmware, Inc. | Managing forwarding elements at edge nodes connected to a virtual network |
US11489783B2 (en) | 2019-12-12 | 2022-11-01 | Vmware, Inc. | Performing deep packet inspection in a software defined wide area network |
US11394640B2 (en) | 2019-12-12 | 2022-07-19 | Vmware, Inc. | Collecting and analyzing data regarding flows associated with DPI parameters |
US11438789B2 (en) | 2020-01-24 | 2022-09-06 | Vmware, Inc. | Computing and using different path quality metrics for different service classes |
US11245641B2 (en) | 2020-07-02 | 2022-02-08 | Vmware, Inc. | Methods and apparatus for application aware hub clustering techniques for a hyper scale SD-WAN |
US11709710B2 (en) | 2020-07-30 | 2023-07-25 | Vmware, Inc. | Memory allocator for I/O operations |
US11575591B2 (en) * | 2020-11-17 | 2023-02-07 | Vmware, Inc. | Autonomous distributed forwarding plane traceability based anomaly detection in application traffic for hyper-scale SD-WAN |
US11575600B2 (en) | 2020-11-24 | 2023-02-07 | Vmware, Inc. | Tunnel-less SD-WAN |
US11929903B2 (en) | 2020-12-29 | 2024-03-12 | VMware LLC | Emulating packet flows to assess network links for SD-WAN |
US11757736B2 (en) * | 2021-01-08 | 2023-09-12 | Vmware , Inc. | Prescriptive analytics for network services |
CN116783874A (zh) | 2021-01-18 | 2023-09-19 | Vm维尔股份有限公司 | 网络感知的负载平衡 |
US11979325B2 (en) | 2021-01-28 | 2024-05-07 | VMware LLC | Dynamic SD-WAN hub cluster scaling with machine learning |
CN112818307B (zh) * | 2021-02-25 | 2024-05-28 | 深信服科技股份有限公司 | 用户操作处理方法、系统、设备及计算机可读存储介质 |
US11509571B1 (en) | 2021-05-03 | 2022-11-22 | Vmware, Inc. | Cost-based routing mesh for facilitating routing through an SD-WAN |
US12009987B2 (en) | 2021-05-03 | 2024-06-11 | VMware LLC | Methods to support dynamic transit paths through hub clustering across branches in SD-WAN |
US11729065B2 (en) | 2021-05-06 | 2023-08-15 | Vmware, Inc. | Methods for application defined virtual network service among multiple transport in SD-WAN |
US12015536B2 (en) | 2021-06-18 | 2024-06-18 | VMware LLC | Method and apparatus for deploying tenant deployable elements across public clouds based on harvested performance metrics of types of resource elements in the public clouds |
US11489720B1 (en) | 2021-06-18 | 2022-11-01 | Vmware, Inc. | Method and apparatus to evaluate resource elements and public clouds for deploying tenant deployable elements based on harvested performance metrics |
US12047282B2 (en) | 2021-07-22 | 2024-07-23 | VMware LLC | Methods for smart bandwidth aggregation based dynamic overlay selection among preferred exits in SD-WAN |
US11375005B1 (en) | 2021-07-24 | 2022-06-28 | Vmware, Inc. | High availability solutions for a secure access service edge application |
US20230025586A1 (en) * | 2021-07-24 | 2023-01-26 | Vmware, Inc. | Network management services in a secure access service edge application |
US11943146B2 (en) | 2021-10-01 | 2024-03-26 | VMware LLC | Traffic prioritization in SD-WAN |
US11728979B2 (en) * | 2022-01-05 | 2023-08-15 | Dell Products L.P. | Method and system for performing telemetry services for composed information handling systems |
US11507672B1 (en) | 2022-01-12 | 2022-11-22 | Sysdig, Inc. | Runtime filtering of computer system vulnerabilities |
US11909815B2 (en) | 2022-06-06 | 2024-02-20 | VMware LLC | Routing based on geolocation costs |
US20240037229A1 (en) * | 2022-07-28 | 2024-02-01 | Pure Storage, Inc. | Monitoring for Security Threats in a Container System |
US12034587B1 (en) | 2023-03-27 | 2024-07-09 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
US12057993B1 (en) | 2023-03-27 | 2024-08-06 | VMware LLC | Identifying and remediating anomalies in a self-healing network |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US8117659B2 (en) | 2005-12-28 | 2012-02-14 | Microsoft Corporation | Malicious code infection cause-and-effect analysis |
KR20090065183A (ko) | 2007-12-17 | 2009-06-22 | 한국전자통신연구원 | 셀트 문법 형식의 셀이눅스 보안정책 자동 생성 장치 및방법 |
US20120102543A1 (en) * | 2010-10-26 | 2012-04-26 | 360 GRC, Inc. | Audit Management System |
US9916538B2 (en) * | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
US20130080353A1 (en) * | 2011-09-27 | 2013-03-28 | AlphaVee Solutions Ltd. | Methods and systems of financial data analysis and simulation |
US20140033267A1 (en) | 2012-07-26 | 2014-01-30 | Samsung Electronics Co., Ltd. | Type mining framework for automated security policy generation |
US9215240B2 (en) * | 2013-07-25 | 2015-12-15 | Splunk Inc. | Investigative and dynamic detection of potential security-threat indicators from events in big data |
US20170006082A1 (en) | 2014-06-03 | 2017-01-05 | Nimit Shishodia | Software Defined Networking (SDN) Orchestration by Abstraction |
US9967282B2 (en) * | 2014-09-14 | 2018-05-08 | Sophos Limited | Labeling computing objects for improved threat detection |
US10122687B2 (en) * | 2014-09-14 | 2018-11-06 | Sophos Limited | Firewall techniques for colored objects on endpoints |
US10181982B2 (en) * | 2015-02-09 | 2019-01-15 | TUPL, Inc. | Distributed multi-data source performance management |
US9900299B2 (en) * | 2015-04-03 | 2018-02-20 | Oracle International Corporation | Aggregated computing infrastructure analyzer |
US10142353B2 (en) | 2015-06-05 | 2018-11-27 | Cisco Technology, Inc. | System for monitoring and managing datacenters |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
US10419438B2 (en) * | 2015-06-09 | 2019-09-17 | Intel Corporation | System, apparatus and method for auto-optimization of access control policy and key management in a network authoring tool |
US10021115B2 (en) * | 2015-11-03 | 2018-07-10 | Juniper Networks, Inc. | Integrated security system having rule optimization |
US9471778B1 (en) * | 2015-11-30 | 2016-10-18 | International Business Machines Corporation | Automatic baselining of anomalous event activity in time series data |
JP2017123037A (ja) * | 2016-01-07 | 2017-07-13 | 富士通株式会社 | 推定プログラム、推定装置及び推定方法 |
US9984248B2 (en) * | 2016-02-12 | 2018-05-29 | Sophos Limited | Behavioral-based control of access to encrypted content by a process |
US12021831B2 (en) * | 2016-06-10 | 2024-06-25 | Sophos Limited | Network security |
US10592664B2 (en) * | 2017-02-02 | 2020-03-17 | Cisco Technology, Inc. | Container application security and protection |
US10382492B2 (en) | 2017-03-02 | 2019-08-13 | Draios Inc. | Automated service-oriented performance management |
-
2017
- 2017-03-02 US US15/447,668 patent/US10382492B2/en active Active
-
2018
- 2018-02-28 WO PCT/US2018/020293 patent/WO2018160744A1/en unknown
- 2018-02-28 EP EP22160904.3A patent/EP4036770A1/en active Pending
- 2018-02-28 ES ES18761959T patent/ES2922303T3/es active Active
- 2018-02-28 EP EP18761959.8A patent/EP3590062B1/en active Active
-
2019
- 2019-06-17 US US16/443,476 patent/US10708310B2/en active Active
- 2019-08-12 IL IL268647A patent/IL268647B/en active IP Right Grant
-
2020
- 2020-06-25 US US16/911,955 patent/US11528300B2/en active Active
- 2020-09-16 IL IL277396A patent/IL277396B2/en unknown
-
2022
- 2022-12-12 US US18/079,769 patent/US11870817B2/en active Active
-
2023
- 2023-12-27 US US18/397,512 patent/US20240129343A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US10708310B2 (en) | 2020-07-07 |
US20190306197A1 (en) | 2019-10-03 |
IL277396B2 (en) | 2023-04-01 |
EP3590062B1 (en) | 2022-04-13 |
US20200329073A1 (en) | 2020-10-15 |
EP3590062A1 (en) | 2020-01-08 |
US20180255100A1 (en) | 2018-09-06 |
US11870817B2 (en) | 2024-01-09 |
IL268647B (en) | 2020-10-29 |
EP3590062A4 (en) | 2020-06-10 |
IL277396A (en) | 2020-11-30 |
US20240129343A1 (en) | 2024-04-18 |
IL277396B (en) | 2022-12-01 |
US20230111092A1 (en) | 2023-04-13 |
EP4036770A1 (en) | 2022-08-03 |
US10382492B2 (en) | 2019-08-13 |
US11528300B2 (en) | 2022-12-13 |
IL268647A (en) | 2019-09-26 |
WO2018160744A1 (en) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2922303T3 (es) | Gestión automatizada de ejecución orientada a servicios | |
US11755754B2 (en) | Systems and methods for securing data based on discovered relationships | |
AU2017200892B2 (en) | API version testing based on query schema | |
Poniszewska-Marańda et al. | Kubernetes cluster for automating software production environment | |
CN103744802B (zh) | Sql注入攻击的识别方法及装置 | |
US9465942B1 (en) | Dictionary generation for identifying coded credentials | |
KR101099152B1 (ko) | 자동 태스크 생성 방법, 시스템 및 컴퓨터 판독가능 기록 매체 | |
US11650905B2 (en) | Testing source code changes | |
US9563499B2 (en) | Processing run-time error messages and implementing security policies in web hosting | |
US8850596B2 (en) | Data leakage detection in a multi-tenant data architecture | |
US20190220457A1 (en) | Query driven data collection on parallel processing architecture for license metrics software | |
US9208322B1 (en) | Privacy leak detection in .NET framework | |
US20190311131A1 (en) | Staged dynamic taint flow inference | |
EP3841476B1 (en) | Scalable pre-analysis of dynamic applications | |
US11947677B2 (en) | Dynamic taint tracking in abstract syntax tree interpreters | |
Xu et al. | Perhelper: Helping developers make better decisions on permission uses in android apps | |
US11641385B1 (en) | Verifying performance and operation of live services | |
US20240104235A1 (en) | Techniques for agentless detection of sensitive data on managed databases | |
Cinque et al. | An empirical analysis of error propagation in critical software systems | |
US10620946B1 (en) | Dynamic modeling for opaque code during static analysis | |
Wen et al. | Squill: Testing DBMS with Correctness Feedback and Accurate Instantiation | |
Algarni et al. | A security testing mechanism for detecting attacks in distributed software applications using blockchain | |
Nafiu | FACULTY OF SCIENCE & TECHNOLOGY | |
Mostafa et al. | An Exploration Study On the Dependency Among Vulnerabilities and Bugs | |
KR20240057786A (ko) | 취약점 데이터베이스를 구축하는 방법 및 장치 |