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 > Agregar un feed nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de AWS EMR
- Haz clic en el paquete Amazon Cloud Platform.
- Ubica el tipo de registro AWS EMR.
Especifica los valores en los siguientes campos.
- Tipo de fuente: Amazon SQS V2
- Nombre de la cola: Es el nombre de la cola de SQS desde la que se leerá.
- 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
Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.
ID de clave de acceso a la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 20 caracteres.
Clave de acceso secreta de la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Configura feeds por producto.
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.