API de acceso a OSQuery
La API de OSQuery requiere el envío de dos peticiones distintas en un orden determinado:
-
Envío de la sentencia OSQuery a los equipos para que el agente Cytomic EPDR prepare la información almacenada en la base de datos del equipo y la envíe a la plataforma Cytomic. Hay disponibles dos llamadas a la API (
/api/v1/osQuery/client
y/api/v1/osQuery/machine
) dependiendo de si se quiere recuperar información de todos los equipos de uno o varios clientes, o de una lista de equipos concreta. Como resultado se obtiene un identificador de operación por cada cliente que reporta datos de sus equipos. -
Envío de cada identificador de operación para obtener la URL de descarga del fichero, con la información de los equipos de cada cliente, o para obtener el estado de la petición.
-
Descarga de un fichero por cada cliente, que consolida toda la información recolectada de sus equipos. Este recurso es accesible a través de la URL obtenida en el paso 2 que, por motivos de seguridad, permanecerá activa durante un máximo de 5 minutos; una vez transcurridos es necesario volver al paso 2 para obtener una nueva URL de descarga.
Debido a que puede haber equipos apagados o inaccesibles, las sentencias OSQuery pueden extenderse indefinidamente en el tiempo. Por esta razón es necesario determinar un TTL o tiempo de vida máximo, pasado el cual Cytomic Orion dará por concluida la operación.
Enviar una petición para obtener información de uno o varios equipos
Ejecuta una sentencia SQL compatible con OSQuery en los equipos indicados que pertenecen a la infraestructura IT de uno o varios clientes.
Petición
Comando |
POST |
URL |
/api/v1/osQuery/machine |
Parámetros requeridos en el cuerpo del mensaje HTTP |
JSON con la petición OSQuery y una lista de MUIDs.
|
Cabeceras |
|
Respuesta
Lista de JSONs, cada uno de ellos con el identificador de la operación de un cliente.
Campo del JSON | Descripción |
---|---|
pandaID |
Identificador del cliente al que pertenecen los equipos que devolvieron datos. |
operationId |
Identificador de la operación realizada, necesario para consultar la URL con los resultados de la petición OSQuery. ConsultaObtener el resultado de una petición OSQuery. |
MUIDs |
Lista de identificadores de equipos del cliente que devolvieron resultados de la petición. |
Enviar una petición para obtener información de todos los equipos de uno o varios clientes
Ejecuta una sentencia SQL compatible con OSQuery en todos los equipos que pertenecen a la infraestructura IT de los clientes indicados.
Petición
Comando |
POST |
URL |
/api/v1/osQuery/client |
Parámetros requeridos en el cuerpo del mensaje HTTP |
JSON con la petición OSQuery y una lista de identificadores de clientes.
|
Cabeceras |
|
Respuesta
Lista de JSONs, cada uno de ellos con información de un cliente.
Campo del JSON | Descripción |
---|---|
pandaID |
Identificador del cliente al que pertenecen los equipos que devolvieron datos. |
operationId |
Identificador de la operación realizada, necesario para consultar la URL con los resultados de la petición OSQuery. ConsultaObtener el resultado de una petición OSQuery. |
MUIDs |
Lista de identificadores de equipos del cliente que devolvieron resultados de la petición. |
Obtener el resultado de una petición OSQuery
Obtiene la URL que apunta al fichero con los datos de los equipos solicitados.
Petición
Comando |
POST |
URL |
/api/v1/osQuery/state |
Parámetros requeridos en el cuerpo del mensaje HTTP |
Lista de JSONs, cada uno de ellos con el identificador de la operación cuyos datos se quieren recuperar.
|
Cabeceras |
|
Respuesta
Lista de JSONs, uno por cliente, con información sobre el resultado de la petición.
Campo del JSON | Descripción |
---|---|
pandaId |
Identificador del cliente al que pertenecen los equipos que devolvieron datos. |
operationId |
Identificador de la operación ejecutada. |
url |
Enlace de descarga del fichero con la información recogida de los equipos. Este enlace es válido durante 5 minutos. Consulta Formato del fichero de descarga para obtener información sobre el formato del fichero. |
counters |
JSON con las estadísticas de la ejecución:
|
Control de los equipos apagados, inaccesibles o con retraso en la respuesta
totalOperationElements es igual a la suma de totalSuccess + totalPartiallySucceeded + totalError en el caso de que todos los equipos respondan, bien con información o con un error. Como las sentencias OSQuery pueden tardar un tiempo indeterminado en ejecutarse, si totalOperationElements no es igual a la suma de totalSuccess + totalPartiallySucceeded + totalError quiere decir que todavía hay equipos en el cliente que no han respondido. En tal caso será necesario enviar el operationId sucesivas veces hasta que la suma coincida o hasta que el tiempo establecido en el campo ttl pase.
Formato del fichero de descarga
El fichero que contiene los datos de los equipos del cliente tiene las características siguientes:
-
Nombre: “osquery_” + identificador de la operación.
-
Formato: texto.
-
Cabecera: campos del fichero separados por el carácter “;”.
-
Cuerpo: lineas con el contenido de los campos extraídos por OSQuery de la base de datos del equipo.
Tipos de error implementados
Nombre | Código | Descripción | Observaciones |
---|---|---|---|
ErrorExecutingOsQuery |
201 |
near "name": syntax error |
OSQuery es compatible con el esquema de datos 4.2.0. Consulta Requisitos de OSQuery y revisa la sintaxis de la sentencia OSQuery. |
ErrorOsNotSupported |
202 |
Error operating system not supported |
OSQuery es compatible con sistemas Windows. Consulta Requisitos de OSQuery |
ErrorOsQueryNotInstalled |
203 |
Error OsQuery not installed |
OSQuery está disponible a partir de la versión 3.71 de Cytomic EDR. Consulta Requisitos de OSQuery |
Obtener el estado de una petición OSQuery
Obtiene una lista de JSONs que indican el estado de las operaciones en curso o finalizadas.
Petición
Comando |
POST |
URL |
/api/v1/osQuery/info |
Parámetros requeridos en el cuerpo del mensaje HTTP |
Lista de JSONs, cada uno de ellos con el identificador de la operación cuyo estado se quieren recuperar.
|
Parámetros opcionales en el cuerpo del mensaje HTTP |
|
Cabeceras |
|
Respuesta
Lista de JSONs, uno por cliente, con información sobre el resultado de las peticiones.
Campo del JSON | Descripción |
---|---|
pandaId |
Identificador del cliente al que pertenece la operación. |
operationId |
Identificador de la operación ejecutada. |
info |
Lista de JSONs, uno por cada operación del cliente, con su estado:
|
Tipos de error implementados
Nombre | Código | Descripción | Observaciones |
---|---|---|---|
ErrorExecutingOsQuery |
201 |
near "name": syntax error |
OSQuery es compatible con el esquema de datos 4.2.0. Consulta Requisitos de OSQuery y revisa la sintaxis de la sentencia OSQuery. |
ErrorOsNotSupported |
202 |
Error operating system not supported |
OSQuery es compatible con sistemas Windows. Consulta Requisitos de OSQuery |
ErrorOsQueryNotInstalled |
203 |
Error OSQuery not installed |
OSQuery está disponible a partir de la versión 3.71 de Cytomic EDR. Consulta Requisitos de OSQuery |