Integra CSV con Google SecOps
En este documento, se describe cómo integrar CSV en Google Security Operations.
En este documento, se explica cómo integrar CSV en Google Security Operations.
Casos de uso
En Google SecOps, la integración de CSV admite los siguientes casos de uso:
Búsqueda de amenazas basada en archivos: Busca rápidamente en archivos de registro CSV locales o remotos cadenas específicas o entidades maliciosas para identificar amenazas registradas históricamente.
Generación de alertas automatizada: Transfiere automáticamente registros de sistemas heredados que generan datos en formato CSV y conviértelos en alertas reutilizables con asignación de gravedad personalizada.
Portabilidad de datos y generación de informes: Transforma de manera programática los resultados de JSON de otras acciones de la guía en formato CSV para exportarlos de forma optimizada a herramientas de informes externas o al almacenamiento local.
Enriquecimiento automatizado de entidades: Usa archivos CSV como fuente de inteligencia contra amenazas local para enriquecer automáticamente las entidades y marcarlas como sospechosas durante la ejecución de la guía.
Sincronización de datos entre sistemas: Procesa de forma eficiente archivos con varias codificaciones de caracteres, como los formatos heredados de Excel, para garantizar la coherencia de los datos en diferentes herramientas de seguridad.
Antes de comenzar
Antes de configurar la integración en Google SecOps, verifica que tengas lo siguiente:
Funciones de la plataforma interna: Esta integración proporciona funciones integradas de procesamiento de archivos y no requiere claves de API ni credenciales de terceros externas para la autenticación.
Permisos del sistema de archivos: Si se usa un agente remoto, la integración requiere permisos específicos para acceder a los archivos del sistema host y administrarlos. Ejecuta el siguiente comando en la máquina del agente para otorgar los permisos necesarios para tu directorio de destino:
chown scripting:scripting "directory_path"
Parámetros de integración
La integración de CSV requiere los siguientes parámetros:
| Nombre visible del parámetro | Tipo | Valor predeterminado | Es obligatorio | Descripción |
|---|---|---|---|---|
| Nombre de la instancia | String | N/A | No | Es el nombre de la instancia para la que deseas configurar la integración. |
| Descripción | String | N/A | No | Es la descripción de la instancia. |
| Ejecuta de forma remota | Casilla de verificación | Desmarcado | No | Marca el campo para ejecutar la integración configurada de forma remota. Una vez que se marca, aparece la opción para seleccionar el usuario remoto (agente). |
Para obtener instrucciones sobre cómo configurar una integración en Google SecOps, consulta Configura integraciones.
Si es necesario, puedes realizar cambios más adelante. Después de configurar una instancia de integración, puedes usarla en las guías. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Cómo admitir varias instancias.
Acciones
Para obtener más información sobre las acciones, consulta Responde a las acciones pendientes desde tu escritorio y Ejecuta una acción manual en tu caso.
Guarda JSON como CSV
Guarda un objeto JSON en un archivo CSV.
Parámetros
| Nombre del parámetro | Tipo | Valor predeterminado | Obligatorio | Descripción |
|---|---|---|---|---|
| Objeto JSON | JSON | N/A | Sí | Especifica el objeto JSON que se guardará como CSV. |
| Reemplazar | Booleano | Falso | No | Si se habilita, la acción reemplaza el archivo existente. |
| Ruta de acceso al archivo | String | N/A | Sí | Especifica la ruta de acceso absoluta del archivo CSV recién creado. Si solo se proporciona el nombre del archivo, la acción lo almacena en una carpeta /tmp/. |
Fecha de ejecución
N/A
Resultados de la acción
Resultado de secuencia de comandos
| Nombre del resultado de la secuencia de comandos | Valor |
|---|---|
| is_success | Verdadero o falso |
Resultado de JSON
{"filepath": "{file name}"}
Muro de casos
La acción proporciona los siguientes mensajes de salida:
| Mensaje de salida | Descripción del mensaje |
|---|---|
| Se transformó correctamente el objeto JSON y se guardó en la ruta de acceso del archivo proporcionada. | La acción se realizó correctamente. |
| No se encontró el archivo en la ruta de acceso proporcionada. | El archivo no existe. |
| No se encontró actividad para las cuentas de servicio proporcionadas en Google Cloud Policy Intelligence | La acción no pudo encontrar datos para ninguna de las cuentas de servicio de la lista. |
| Se produjo un error cuando se ejecutaba la acción "Guardar JSON como CSV". | La acción devolvió un error. Verifica la conexión con el servidor, los parámetros de entrada o las credenciales. |
Buscar por cadena
Busca cadenas en archivos CSV.
Parámetros
| Nombre del parámetro | Tipo | Valor predeterminado | Es obligatorio | Descripción |
|---|---|---|---|---|
| Ruta de acceso del archivo CSV | String | N/A | Sí | Especifica la ruta de acceso al archivo CSV o a una carpeta que contenga todos los archivos CSV. Si se proporciona una carpeta, la acción iterará en todos los archivos CSV de la carpeta. |
| Columna de CSV | String | N/A | No | Especifica una lista separada por comas de las columnas que pueden contener información de la entidad. Si no se proporciona nada, la acción buscará en todas las columnas. |
| Días hacia atrás | String | 10 | No | Especifica cuántos días hacia atrás se deben procesar los archivos CSV. |
| Valor de búsqueda | String | N/A | No | Especifica una cadena que se deba buscar. Si se habilita "Buscar varias cadenas", este parámetro se trata como una lista separada por comas de cadenas que se deben buscar. |
| Devuelve solo la primera fila. | Casilla de verificación | Desmarcado | No | Si se habilita, la acción solo devolverá 1 fila en el primer archivo que coincida con la entidad. |
| Tipos de codificación de archivos | String | utf-8, latin-1, iso-8859-1 | Sí | Una lista separada por comas de los tipos de codificación CSV que se usan para decodificar tus archivos CSV, p. ej., utf-8, latin-1, iso-8859-1, utf-16… El orden en el que se proporcionan los tipos de codificación establece el orden en el que se usan para decodificar archivos, p. ej., (del ejemplo anterior) utf-8 tiene la prioridad más alta y se usará principalmente para decodificar todos los archivos. Si hay un archivo CSV que usa alguna otra codificación, se usará la siguiente en el orden: codificación latin-1, y así sucesivamente, hasta que se use la última codificación. |
| Buscar varias cadenas | Casilla de verificación | Desmarcado | No | Si se habilita, "Valor de búsqueda" funcionará como una lista de valores separados por comas, en lugar de una sola cadena. |
| Campos que se mostrarán | CSV | N/A | No | Especifica una lista separada por comas de los valores que se deben devolver. |
Casos de uso
Busca cadenas en archivos CSV.
Fecha de ejecución
Esta acción se ejecuta en todas las entidades.
Resultados de la acción
Resultado de secuencia de comandos
| Nombre del resultado de la secuencia de comandos | Opciones de valor | Ejemplo |
|---|---|---|
| count_rows_csv | Cualquier cantidad de filas | count_rows += 1 |
Resultado de JSON
[
{
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
},
"Entity": "host"
}, {
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
}, "Entity": "1.1.1.1"
}
]
Muro de casos
| Tipo de resultado | Valor/Descripción | Tipo |
|---|---|---|
| Mensaje de salida* | Para los registros que se encuentran: "Se encontró correctamente información sobre las siguientes cadenas: \n (search_string)" Si no se encuentran registros para algunas cadenas: "La acción no pudo encontrar información sobre las siguientes cadenas:" Si no se encuentra información para ningún registro: "No se encontró información para los elementos proporcionados". Si todas las codificaciones no son válidas: "Error al ejecutar la acción "CSV Search by String". Las codificaciones proporcionadas no son válidas. Verifica la ortografía". |
General |
Buscar por entidad
Busca entidades en archivos CSV y enriquecerlas.
Parámetros
| Nombre del parámetro | Tipo | Valor predeterminado | Es obligatorio | Descripción |
|---|---|---|---|---|
| Ruta de acceso del archivo CSV | String | N/A | Sí | Especifica la ruta de acceso al archivo CSV o a una carpeta que contenga todos los archivos CSV. Si se proporciona una carpeta, la acción iterará en todos los archivos CSV de la carpeta. |
| Columna de CSV | String | N/A | Sí | Especifica una lista separada por comas de las columnas que pueden contener información de la entidad. Si no se proporciona nada, la acción buscará en todas las columnas. |
| Días atrás | String | 10 | Sí | Especifica cuántos días hacia atrás se deben procesar los archivos CSV. |
| Marcar como sospechoso | Casilla de verificación | Desmarcado | No | Si se habilita, la acción marcará la entidad como sospechosa si se encontró en el archivo. |
| Devuelve solo la primera fila. | Casilla de verificación | Desmarcado | No | Si se habilita, la acción solo devolverá 1 fila en el primer archivo que coincida con la entidad. |
| Tipos de codificación de archivos | String | utf-8, latin-1, iso-8859-1 | Sí | Una lista separada por comas de los tipos de codificación CSV que se usan para decodificar tus archivos CSV, p. ej., utf-8, latin-1, iso-8859-1, utf-16… El orden en el que se proporcionan los tipos de codificación establece el orden en el que se usan para decodificar archivos, p. ej., (del ejemplo anterior) utf-8 tiene la prioridad más alta y se usará principalmente para decodificar todos los archivos. Si hay un archivo CSV que usa alguna otra codificación, se usará la siguiente en el orden: codificación latin-1, y así sucesivamente, hasta que se use la última codificación. |
| Enriquece entidades | Casilla de verificación | Marcado | No | Si se habilita, la acción agregará información del archivo CSV y la agregará a la tabla de enriquecimiento de la entidad. |
| Crea estadísticas | Casilla de verificación | Marcado | No | Si se habilita, la acción creará una estadística si se encontró la entidad en el archivo. |
| Campos que se mostrarán | CSV | N/A | No | Especifica una lista de valores separados por comas que se deben devolver. |
Fecha de ejecución
Esta acción se ejecuta en todas las entidades.
Resultados de la acción
Resultado de secuencia de comandos
| Nombre del resultado de la secuencia de comandos | Opciones de valor | Ejemplo |
|---|---|---|
| count_rows_csv | Cualquier cantidad de filas | count_rows += 1 |
Resultado de JSON
[
{
"EntityResult": [{
"domain": "example.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "Arcsight",
"id": "1011",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "blocked",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "Ziv",
"eventHostName": "WS-ZivDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}, {
"domain": "SmartCompany.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "ESM",
"id": "1012",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "allowed",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "GG",
"eventHostName": "WS-GGDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}],
"Entity": "192.168.11.11"
}
]
Muro de casos
| Tipo de resultado | Valor/Descripción | Tipo |
|---|---|---|
| Mensaje de salida* | Para las entidades que se encuentran: "Se encontró correctamente información sobre las siguientes entidades: \n (entity.identifier)" Para las entidades que no se encuentran: "No se encontró información sobre las siguientes entidades: \n (entity.identifier)" Si no se encuentra información para ninguna entidad: "No se encontró información para las entidades proporcionadas". Si todas las codificaciones no son válidas: "Error executing action "CSV Search by String". Las codificaciones proporcionadas no son válidas. Verifica la ortografía". |
General |
Ping
Prueba la conectividad.
Parámetros
N/A
Fecha de ejecución
Esta acción se ejecuta en todas las entidades.
Resultados de la acción
Resultado de secuencia de comandos
N/A
Resultado de JSON
N/A
Conectores
Conector de CSV
Recuperar datos de archivos CSV ubicados en una carpeta específica y convertirlos en alertas en el sistema de Google SecOps
En este tema, se ilustra el mecanismo y la configuración con los que Google SecOps produce archivos CSV, junto con los flujos de trabajo admitidos y las acciones que se realizan dentro de la plataforma.
Casos de uso
Un cliente tiene archivos CSV que provienen de un sistema, y los archivos podrían tener codificaciones diferentes.
* Add support for comma-separated encodings in the Encoding field in the
connector.
* The connector should try the different encodings by their order in
the field (first encoding - highest priority, last - lowest
priority) with try/except. If no matching encoding was found -
consider the file as an error and notify.
* Put a default value for the fields - a list of most common CSV
encodings by priority (utf8, latin1, and iso...)
Acceso a archivos CSV
Acceso de Google SecOps a los archivos CSV: Configura una carpeta para los archivos CSV.
Reenvío de registros CSV a Google SecOps
Cómo trabajar con registros de archivos CSV
Cuando configures Google SecOps para que funcione con archivos CSV como fuente de alertas, se te solicitará que proporciones una carpeta específica de la que se recuperarán los CSV. Google SecOps recuperará cualquier registro dentro de un archivo CSV y lo reenviará para que se traduzca y se contextualice como alertas para los casos.
Cómo asignar la gravedad en el conector
Para asignar la gravedad, debes especificar qué campo se debe usar para obtener el valor de la gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta, puedes obtener 3 tipos de valores: números enteros, números de punto flotante y cadenas. Para los números enteros y los números de punto flotante, no necesitas realizar ninguna configuración adicional. El conector leerá esos valores y los asignará según los estándares de Google SecOps. A continuación, se muestra un recordatorio rápido de cómo se asignan los valores enteros:
- 100: Crítica
- 100 > x >= 80: Alto
- 80 > x >=60 Media
- 60 > x >=40 Baja
- 40 > x Informativo
Si en la respuesta trabajamos con cadenas, se requiere una configuración adicional. En la carpeta en la que se encuentran las secuencias de comandos del conector, tendrás un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de asignación para la gravedad.
Al principio, el archivo se verá de la siguiente manera: 1 2 3 { "Default": 50 }
Imagina una situación en la que los valores necesarios se encuentran en event.severity. event.severity puede contener los siguientes valores: "Malicious", "Benign", "Unknown".
Primero, debemos especificar en el parámetro "Severity Field Name" que usaremos
event.severity. En segundo lugar, debemos actualizar el archivo de configuración. Después de los cambios,
así es como debería verse el archivo severity_map_config.json: 1 2 3 4 5 6 7 8 {
"event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default":
50 }
Ahora, cuando el conector reciba un evento con event.severity = "Malicious",
le asignará una gravedad crítica.
Configura el conector de CSV en Google SecOps
Para obtener instrucciones detalladas sobre cómo configurar un conector en Google SecOps, consulta Configura el conector.
Parámetros del conector
Usa los siguientes parámetros para configurar el conector:
| Nombre del parámetro | Tipo | Valor predeterminado | Es obligatorio | Descripción |
|---|---|---|---|---|
| Nombre del campo del producto | String | device_product | Sí | Es el nombre del campo que se usa para determinar el producto del dispositivo. |
| Nombre del campo del evento | String | nombre | No | Es el nombre del campo que se usa para determinar el nombre del evento (subtipo). |
| Tiempo de espera de la secuencia de comandos (segundos) | String | 60 | Sí | Es el límite de tiempo de espera (en segundos) para el proceso de Python que ejecuta la secuencia de comandos actual. |
| Ruta de acceso a la carpeta de CSV | String | N/A | Sí | Es la ruta de la carpeta que contiene todos los archivos CSV que se deben transferir. |
| Límite de CSV | String | N/A | No | Es la cantidad de archivos CSV que se procesarán por iteración. |
| Nombre del campo del generador de reglas | String | N/A | No | Es el nombre del campo que contiene información sobre el generador de reglas. |
| Nombre del campo de tiempo | String | N/A | No | Es el nombre del campo que contiene información sobre la hora del evento. |
| El archivo CSV tiene encabezado | Casilla de verificación | Marcado | Sí | Indica si el archivo CSV tiene encabezado. |
| Tipo de codificación de archivo | String | utf-8 | Sí | Establece el tipo de codificación del archivo CSV, p.ej., iso-8859-1, latin1, utf-8, utf-16. |
| Nombre del campo de alerta | String | N/A | No | Es el nombre del campo que contiene información sobre el nombre de la alerta. |
| Nombre del campo de gravedad | String | N/A | No | Es el nombre del campo que contiene información sobre la gravedad. |
Reglas de conector
Compatibilidad con proxy
El conector no admite proxy.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.