Integrar CSV con Google SecOps
Este documento describe cómo integrar archivos CSV con las Operaciones de Seguridad de Google.
Este documento explica cómo integrar archivos CSV con las Operaciones de Seguridad de Google.
Casos de uso
En Google SecOps, la integración CSV admite los siguientes casos de uso:
Búsqueda de amenazas basada en archivos: Busque rápidamente en archivos de registro CSV locales o remotos cadenas específicas o entidades maliciosas para identificar amenazas registradas históricamente.
Generación automática de alertas: Ingiere automáticamente registros de sistemas heredados que generan datos en formato CSV, convirtiéndolos en alertas procesables con asignación de gravedad personalizada.
Portabilidad de datos e informes: Transforme programáticamente los resultados JSON de otras acciones del playbook en formato CSV para una exportación optimizada a herramientas de informes externas o almacenamiento local.
Enriquecimiento automatizado de entidades: Utilice archivos CSV como fuente local de inteligencia sobre amenazas para enriquecer automáticamente las entidades y marcarlas como sospechosas durante la ejecución del playbook.
Sincronización de datos entre sistemas: Procese de manera eficiente archivos con diversas codificaciones de caracteres, como formatos Excel heredados, para garantizar la coherencia de los datos en diferentes herramientas de seguridad.
Antes de comenzar
Antes de configurar la integración en Google SecOps, verifique que dispone de lo siguiente:
Capacidades internas de la plataforma: Esta integración proporciona capacidades de procesamiento de archivos integradas y no requiere claves API externas de terceros ni credenciales para la autenticación.
Permisos del sistema de archivos: Si se utiliza un agente remoto, la integración requiere permisos específicos para acceder y administrar archivos en el sistema host. Ejecute el siguiente comando en la máquina del agente para otorgar los permisos necesarios para su directorio de destino:
chown scripting:scripting "directory_path"
Parámetros de integración
La integración 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 | 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. |
| Ejecutar de forma remota | Casilla de verificación | Desmarcado | No | Marca la casilla para ejecutar la integración configurada de forma remota. Una vez que se marca, aparece la opción para seleccionar al usuario remoto (agente). |
Si quieres obtener instrucciones para configurar una integración en Google SecOps, consulta Configura integraciones.
Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en los playbooks. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Compatibilidad con varias instancias.
Acciones
Para obtener más información sobre las acciones, consulta Cómo responder a las acciones pendientes desde Tu escritorio y Cómo realizar una acción manual.
Guardar JSON en CSV
Guarda un objeto JSON en formato 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 está habilitada, la acción sobrescribe el archivo existente. |
| Ruta de acceso al archivo | String | N/A | Sí | Especifica la ruta de archivo absoluta para el archivo CSV recién creado. Si solo se proporciona el nombre del archivo, la acción guarda el archivo en una carpeta /tmp/. |
Ejecutar en
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 al archivo proporcionada. | La acción se realizó correctamente. |
| No se encontró el archivo en la ruta 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 enumeradas. |
| Se produjo un error al ejecutar la acción "Save JSON To CSV". | La acción devolvió un error. Verifica la conexión al 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 al CSV | String | N/A | Sí | Especifica la ruta de acceso al archivo CSV o la ruta de acceso a la carpeta que contiene todos los archivos CSV. Si se proporciona una carpeta, la acción iterará sobre todos los archivos CSV de la carpeta. |
| Columna CSV | String | N/A | No | Especifique una lista de columnas separadas por comas que pueden contener información de la entidad. Si no se proporciona ningún dato, la acción buscará en todas las columnas. |
| Días hacia atrás | String | 10 | No | Especifique cuántos días hacia atrás se deben procesar los archivos CSV. |
| Valor de búsqueda | String | N/A | No | Especifique la cadena de texto que se desea buscar. Si la opción "Buscar varias cadenas" está habilitada, este parámetro se trata como una lista de cadenas separadas por comas que deben buscarse. |
| Devuelve solo la primera fila. | Casilla de verificación | Desmarcado | No | Si está habilitada, 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 utilizan para decodificar sus archivos CSV, por ejemplo, utf-8, latin-1, iso-8859-1, utf-16... El orden en que se especifican los tipos de codificación determina el orden en que se utilizan para decodificar archivos.Por ejemplo (como se muestra en el ejemplo anterior), utf-8 tiene la máxima prioridad y se utilizará principalmente para decodificar todos los archivos. Si hay un archivo CSV que utiliza otra codificación, se utilizará la siguiente en el orden: la codificación latin-1, y así sucesivamente, hasta que se utilice la última codificación. |
| Buscar varias cadenas | Casilla de verificación | Desmarcado | No | Si está habilitada, la opción "Buscar valor" funcionará como una lista de valores separados por comas, en lugar de una sola cadena de texto. |
| Campos a devolver | CSV | N/A | No | Especifique una lista de valores separados por comas que deben devolverse. |
Casos de uso
Busca cadenas en archivos CSV.
Ejecutar en
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 número de filas | recuento_filas += 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 encontrados: "Se encontró con éxito información sobre las siguientes cadenas: \n (cadena_de_búsqueda)" Si no se encuentran registros para algunas cadenas: "La acción no pudo encontrar información sobre las siguientes cadenas:" Si no se encuentra ningún resultado para todos los registros: "No se encontró información para los elementos proporcionados." Si todas las codificaciones son inválidas: "Error al ejecutar la acción "Búsqueda CSV por cadena". Las codificaciones proporcionadas no son válidas. Verifica la ortografía". |
General |
Búsqueda por entidad
Busque entidades en archivos CSV y enriquézcalas.
Parámetros
| Nombre del parámetro | Tipo | Valor predeterminado | Es obligatorio | Descripción |
|---|---|---|---|---|
| Ruta de acceso al CSV | String | N/A | Sí | Especifica la ruta de acceso al archivo CSV o la ruta de acceso a la carpeta que contiene todos los archivos CSV. Si se proporciona una carpeta, la acción iterará sobre todos los archivos CSV de la carpeta. |
| Columna CSV | String | N/A | Sí | Especifique una lista de columnas separadas por comas que pueden contener información de la entidad. Si no se proporciona ningún dato, la acción buscará en todas las columnas. |
| Hace días | String | 10 | Sí | Especifique cuántos días hacia atrás se deben procesar los archivos CSV. |
| Marcar como sospechoso | Casilla de verificación | Desmarcado | No | Si está habilitada, esta acción marcará la entidad como sospechosa si se encuentra en el archivo. |
| Devuelve solo la primera fila. | Casilla de verificación | Desmarcado | No | Si está habilitada, 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 utilizan para decodificar sus archivos CSV, por ejemplo, utf-8, latin-1, iso-8859-1, utf-16... El orden en que se especifican los tipos de codificación determina el orden en que se utilizan para decodificar archivos.Por ejemplo (como se muestra en el ejemplo anterior), utf-8 tiene la máxima prioridad y se utilizará principalmente para decodificar todos los archivos. Si hay un archivo CSV que utiliza otra codificación, se utilizará la siguiente en el orden: la codificación latin-1, y así sucesivamente, hasta que se utilice la última codificación. |
| Enriquece entidades | Casilla de verificación | Marcado | No | Si está habilitada, la acción agregará información del archivo CSV y la añadirá a la tabla de enriquecimiento de la entidad. |
| Crear estadística | Casilla de verificación | Marcado | No | Si está habilitada, la acción generará una sugerencia si se encuentra la entidad en el archivo. |
| Campos a devolver | CSV | N/A | No | Especifique una lista de valores separados por comas que deben devolverse. |
Ejecutar en
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 número de filas | recuento_filas += 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 encontradas: "Se encontró con éxito información sobre las siguientes entidades: \n (entidad.identificador)" 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 son inválidas: "Error al ejecutar la acción "Búsqueda CSV por cadena". Las codificaciones proporcionadas no son válidas. Verifica la ortografía". |
General |
Ping
Prueba la conectividad.
Parámetros
N/A
Ejecutar en
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 CSV
Extrae datos de archivos CSV ubicados en una carpeta específica y convierte estos datos en alertas en el sistema Google SecOps.
Este tema ilustra el mecanismo y la configuración mediante los cuales Google SecOps genera archivos CSV, junto con los flujos de trabajo compatibles y las acciones que se realizan dentro de la plataforma.
Casos de uso
Un cliente tiene archivos CSV provenientes de un sistema, y los archivos podrían tener diferentes codificaciones.
* 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 archivos CSV: configure una carpeta para los archivos CSV.
Envío de registros CSV a Google SecOps
Trabajando con registros de archivos CSV
Al configurar Google SecOps para que funcione con archivos CSV como fuente de alertas, se le solicitará que proporcione una carpeta específica desde donde se obtendrán los archivos CSV. Google SecOps recuperará cualquier registro dentro de un archivo CSV y lo reenviará para que sea traducido y contextualizado como alertas para los casos.
Cómo asignar la gravedad en el conector
Para asignar la gravedad, debe especificar qué campo se debe usar para obtener el valor de gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta se pueden obtener 3 tipos de valores: enteros, números de coma flotante y cadenas de texto. Para números enteros y de coma flotante, no es necesario realizar ninguna configuración adicional. El conector leerá esos valores y los asignará de acuerdo con los estándares SecOps de Google. Un breve recordatorio de cómo se asignan los valores enteros:
- 100 - Crítico
- 100 > x >= 80 Alto
- 80 > x >=60 Medio
- 60 > x >=40 Bajo
- 40 > x Informativo
Si en la respuesta estamos trabajando con cadenas de texto, entonces se requiere una configuración adicional. En la carpeta donde se encuentran los scripts del conector, encontrará un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de mapeo para la gravedad.
Inicialmente, el archivo tendrá este aspecto: 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: "Malicioso", "Benigno", "Desconocido".
Primero, debemos especificar en el parámetro "Nombre del campo de gravedad" que utilizaremos event.severity. En segundo lugar, tenemos que 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 = "Malicioso", le dará una gravedad Crítica.
Configurar el conector CSV en Google SecOps
Si quieres obtener instrucciones detalladas para configurar un conector en Google SecOps, consulta Cómo configurar 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í | El nombre del campo utilizado 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í | El límite de tiempo de espera (en segundos) para el proceso de Python que ejecuta el script actual. |
| Ruta de la carpeta CSV | String | N/A | Sí | Ruta de la carpeta que contiene todos los archivos CSV que deben ser procesados. |
| Límite de CSV | String | N/A | No | ¿Cuántos archivos CSV procesar 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 | Nombre del campo que contiene información sobre la hora del evento. |
| CSV Has Header | 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 CSV, p.ej., iso-8859-1, latin1, utf-8, utf-16. |
| Nombre del campo de alerta | String | N/A | No | Nombre del campo que contiene información sobre el nombre de la alerta. |
| Nombre del campo de gravedad | String | N/A | No | Nombre del campo que contiene información sobre la gravedad. |
Reglas del conector
Soporte de proxy
El conector no admite Proxy.
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.