Recopila registros de AWS Elastic MapReduce
En este documento, se explica cómo transferir registros de AWS Elastic MapReduce (EMR) a Google Security Operations. AWS EMR es una plataforma de macrodatos nativa de la nube que procesa grandes cantidades de datos rápidamente. La integración de los registros de EMR en Google SecOps te permite analizar la actividad del clúster y detectar posibles amenazas a la seguridad.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso privilegiado a AWS
Configura el bucket de Amazon S3
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre y la Región del bucket para usarlos más adelante.
- Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como el Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona las políticas AmazonS3FullAccess y CloudWatchLogsFullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Cómo configurar AWS EMR para reenviar registros
- Accede a la consola de administración de AWS.
- En la barra de búsqueda, escribe EMR y selecciona Amazon EMR en la lista de servicios.
- Haz clic en Clústeres.
- Busca y selecciona el clúster de EMR para el que deseas habilitar el registro.
- Haz clic en Editar en la página Detalles del clúster.
- En la pantalla Edit Cluster, ve a la sección Logging.
- Selecciona Habilitar el registro.
- Especifica el bucket de S3 en el que se almacenarán los registros.
- Especifica el URI de S3 en el formato
s3://your-bucket-name/
(esto almacenará todos los registros de EMR en la raíz del bucket). - Selecciona los siguientes tipos de registros:
Step logs
Application logs
YARN logs
System logs
HDFS Logs
(si usas Hadoop)
- Haz clic en Guardar.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración de SIEM > Feeds
- Centro de contenido > Paquetes de contenido
Configura feeds desde Configuración del SIEM > Feeds
Para configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Cómo configurar feeds por producto.
Para configurar un solo feed, sigue estos pasos:
- Ve a SIEM Settings > Feeds.
- Haz clic en Agregar feed nuevo.
- En la siguiente página, haz clic en Configurar un solo feed.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de EMR de AWS).
- Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona AWS EMR como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/
- Reemplaza
your-log-bucket-name
por el nombre real de tu bucket de S3.
- Reemplaza
- El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios, según la estructura de tu bucket.
Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
ID de clave de acceso: Es la clave de acceso del usuario con permisos para leer desde el bucket de S3.
Clave de acceso secreta: Es la clave secreta del usuario con permisos para leer desde el bucket de S3.
Espacio de nombres del recurso: Es el espacio de nombres del recurso.
Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Configura feeds desde el Centro de contenido
Especifica valores para los siguientes campos:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/
- Reemplaza
your-log-bucket-name
por el nombre real de tu bucket de S3.
- Reemplaza
- El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios, según la estructura de tu bucket.
- Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
ID de clave de acceso: Es la clave de acceso del usuario con permisos para leer desde el bucket de S3.
Clave de acceso secreta: Es la clave secreta del usuario con permisos para leer desde el bucket de S3.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
- Espacio de nombres del recurso: Espacio de nombres asociado al feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
app_id |
additional.fields[].key |
El valor "APP" se asigna a través del analizador. |
app_id |
additional.fields[].value.string_value |
Se asigna directamente desde el campo APP en el registro sin procesar. |
app_name |
additional.fields[].key |
El valor "APPNAME" se asigna a través del analizador. |
app_name |
additional.fields[].value.string_value |
Se asigna directamente desde el campo APPNAME en el registro sin procesar. |
blockid |
additional.fields[].key |
El valor "blockid" se asigna a través del analizador. |
blockid |
additional.fields[].value.string_value |
Se asigna directamente desde el campo blockid en el registro sin procesar. |
bytes |
network.received_bytes |
Se asigna directamente desde el campo bytes en el registro sin procesar y se convierte en un número entero sin signo. |
cliID |
additional.fields[].key |
El valor "cliID" se asigna a través del analizador. |
cliID |
additional.fields[].value.string_value |
Se asigna directamente desde el campo cliID en el registro sin procesar. |
cmd |
target.process.command_line |
Se asigna directamente desde el campo cmd en el registro sin procesar. |
comp_name |
additional.fields[].key |
El valor "COMP" se asigna a través del analizador. |
comp_name |
additional.fields[].value.string_value |
Se asigna directamente desde el campo COMP en el registro sin procesar. |
configuration_version |
additional.fields[].key |
El valor "configuration_version" se asigna a través del analizador. |
configuration_version |
additional.fields[].value.string_value |
Se asigna directamente desde el campo configuration_version en el registro sin procesar y se convierte en una cadena. |
containerID |
additional.fields[].key |
El valor "containerID" se asigna a través del analizador. |
containerID |
additional.fields[].value.string_value |
Se asigna directamente desde el campo CONTAINERID en el registro sin procesar. |
description |
security_result.description |
Se asigna directamente desde el campo description en el registro sin procesar. |
dfs.FSNamesystem.* |
additional.fields[].key |
La clave se genera concatenando "dfs.FSNamesystem." con la clave de los datos JSON. |
dfs.FSNamesystem.* |
additional.fields[].value.string_value |
El valor se asigna directamente desde el valor correspondiente en el objeto JSON dfs.FSNamesystem y se convierte en una cadena. |
duration |
additional.fields[].key |
El valor "duration" se asigna a través del analizador. |
duration |
additional.fields[].value.string_value |
Se asigna directamente desde el campo duration en el registro sin procesar. |
duration |
network.session_duration.seconds |
Se asigna directamente desde el campo duration en el registro sin procesar y se convierte en un número entero. |
environment |
additional.fields[].key |
El valor "environment" se asigna a través del analizador. |
environment |
additional.fields[].value.string_value |
Se asigna directamente desde el campo environment en el registro sin procesar. Se extrae del campo ip_port con grok y manipulación de cadenas. Se extrae del campo ip_port con grok y manipulación de cadenas, y se convierte en un número entero. |
event_type |
metadata.event_type |
Se determina según la lógica del analizador en función de la presencia de información de principal y target . Puede ser NETWORK_CONNECTION , USER_RESOURCE_ACCESS , STATUS_UPDATE o GENERIC_EVENT . |
file_path |
target.file.full_path |
Se asigna directamente desde el campo file_path en el registro sin procesar. |
host |
principal.hostname |
Se asigna directamente desde el campo host en el registro sin procesar. |
host |
target.hostname |
Se asigna directamente desde el campo host en el registro sin procesar. |
host_ip |
principal.ip |
Se asigna directamente desde el campo host_ip en el registro sin procesar. |
host_port |
principal.port |
Se asigna directamente desde el campo host_port en el registro sin procesar y se convierte en un número entero. |
http_url |
target.url |
Se asigna directamente desde el campo http_url en el registro sin procesar. |
index |
additional.fields[].key |
El valor "index" se asigna a través del analizador. |
index |
additional.fields[].value.string_value |
Se asigna directamente desde el campo index en el registro sin procesar. |
kind |
metadata.product_event_type |
Se asigna directamente desde el campo kind en el registro sin procesar. El valor "AWS_EMR" se asigna a través del analizador. El valor "AWS EMR" se asigna a través del analizador. El valor "AMAZON" se asigna a través del analizador. |
offset |
additional.fields[].key |
El valor "offset" se asigna a través del analizador. |
offset |
additional.fields[].value.string_value |
Se asigna directamente desde el campo offset en el registro sin procesar. |
op |
metadata.product_event_type |
Se asigna directamente desde el campo op o OPERATION en el registro sin procesar. |
proto |
network.application_protocol |
Se extrae del campo http_url con Grok y se convierte a mayúsculas. |
puppet_version |
additional.fields[].key |
El valor "puppet_version" se asigna a través del analizador. |
puppet_version |
additional.fields[].value.string_value |
Se asigna directamente desde el campo puppet_version en el registro sin procesar. |
queue_name |
additional.fields[].key |
El valor "queue_name" se asigna a través del analizador. |
queue_name |
additional.fields[].value.string_value |
Se asigna directamente desde el campo queue_name en el registro sin procesar. |
report_format |
additional.fields[].key |
El valor "report_format" se asigna a través del analizador. |
report_format |
additional.fields[].value.string_value |
Se asigna directamente desde el campo report_format en el registro sin procesar y se convierte en una cadena. |
resource |
additional.fields[].key |
El valor "resource" se asigna a través del analizador. |
resource |
additional.fields[].value.string_value |
Se asigna directamente desde el campo resource en el registro sin procesar. |
result |
security_result.action_details |
Se asigna directamente desde el campo RESULT en el registro sin procesar. |
security_id |
additional.fields[].key |
El valor "security_id" se asigna a través del analizador. |
security_id |
additional.fields[].value.string_value |
Se asigna directamente desde el campo security_id en el registro sin procesar. |
severity |
security_result.severity |
Se asigna desde el campo severity en el registro sin procesar. INFO se asigna a INFORMATIONAL y WARN se asigna a MEDIUM . |
srvID |
additional.fields[].key |
El valor "srvID" se asigna a través del analizador. |
srvID |
additional.fields[].value.string_value |
Se asigna directamente desde el campo srvID en el registro sin procesar. |
status |
additional.fields[].key |
El valor "status" se asigna a través del analizador. |
status |
additional.fields[].value.string_value |
Se asigna directamente desde el campo status en el registro sin procesar. |
summary |
security_result.summary |
Se asigna directamente desde el campo summary en el registro sin procesar. |
target_app |
target.application |
Se asigna directamente desde el campo TARGET en el registro sin procesar. |
target_ip |
target.ip |
Se asigna directamente desde el campo target_ip o IP en el registro sin procesar. |
target_port |
target.port |
Se asigna directamente desde el campo target_port en el registro sin procesar y se convierte en un número entero. |
timestamp |
metadata.event_timestamp |
Se asigna directamente desde el campo timestamp en el registro sin procesar y se analiza como una marca de tiempo ISO8601. |
timestamp |
event.timestamp |
Se asigna directamente desde el campo timestamp en el registro sin procesar y se analiza como una marca de tiempo ISO8601. |
trade_date |
additional.fields[].key |
El valor "trade_date" se asigna a través del analizador. |
trade_date |
additional.fields[].value.string_value |
Se asigna directamente desde el campo trade_date en el registro sin procesar. |
transaction_uuid |
additional.fields[].key |
El valor "transaction_uuid" se asigna a través del analizador. |
transaction_uuid |
additional.fields[].value.string_value |
Se asigna directamente desde el campo transaction_uuid en el registro sin procesar. |
type |
additional.fields[].key |
El valor "type" se asigna a través del analizador. |
type |
additional.fields[].value.string_value |
Se asigna directamente desde el campo type en el registro sin procesar. |
user |
target.user.userid |
Se asigna directamente desde el campo USER o ugi en el registro sin procesar. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.