Cómo recopilar registros de AWS Elastic MapReduce

Compatible con:

En este documento, se explica cómo transferir registros de AWS Elastic MapReduce (EMR) a Google Security Operations. AWS EMR es una plataforma de big data nativa de la nube que procesa grandes cantidades de datos con rapidez. La integración de los registros de EMR en Google SecOps te permite analizar la actividad del clúster y detectar posibles amenazas de seguridad.

Antes de comenzar

  • Asegúrate de tener una instancia de Google SecOps.
  • Asegúrate de tener acceso con privilegios a AWS.

Configura el bucket de Amazon S3

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
  2. Guarda el Nombre y la Región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Cómo crear un usuario de IAM.
  4. Selecciona el Usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  7. Selecciona Servicio de terceros como Caso de uso.
  8. Haz clic en Siguiente.
  9. Opcional: Agrega una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la Clave de acceso y la Clave de acceso secreta para usarlas más tarde.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Agregar permisos en la sección Políticas de permisos.
  15. Selecciona Agregar permisos.
  16. Selecciona Adjuntar políticas directamente.
  17. Busca y selecciona las políticas AmazonS3FullAccess y CloudWatchLogsFullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Agregar permisos.

Configura AWS EMR para reenviar registros

  1. Accede a la consola de administración de AWS.
  2. En la barra de búsqueda, escribe EMR y selecciona Amazon EMR en la lista de servicios.
  3. Haz clic en Clústeres.
  4. Busca y selecciona el clúster de EMR para el que deseas habilitar el registro.
  5. Haz clic en Editar en la página Detalles del clúster.
  6. En la pantalla Editar clúster, ve a la sección Registro.
  7. Selecciona Habilitar el registro.
  8. Especifica el bucket de S3 en el que se almacenarán los registros.
  9. 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).
  10. Selecciona los siguientes tipos de registro:
    • Step logs
    • Application logs
    • YARN logs
    • System logs
    • HDFS Logs (si usas Hadoop)
  11. Haz clic en Guardar.

Configura un feed en Google SecOps para transferir registros de AWS EMR

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Agregar nueva.
  3. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de AWS EMR).
  4. Selecciona Amazon S3 como el Tipo de fuente.
  5. Selecciona AWS EMR como el Tipo de registro.
  6. Haz clic en Siguiente.
  7. 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 del bucket.
    • El URI es un: Selecciona Directorio o Directorio que incluye subdirectorios.
    • Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.

    • ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.

    • Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.

    • Espacio de nombres de recursos: Es el espacio de nombres de recursos.

    • Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.

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 formato.
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 formato.
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 formato.
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 formato.
cmd target.process.command_line Se asigna directamente desde el campo cmd en el registro sin formato.
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 formato.
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 formato.
description security_result.description Se asigna directamente desde el campo description en el registro sin formato.
dfs.FSNamesystem.* additional.fields[].key Para generar la clave, se concatena "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, convertido 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 formato.
duration network.session_duration.seconds Se asignan directamente desde el campo duration en el registro sin procesar y se convierten 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 formato. 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 formato.
host principal.hostname Se asigna directamente desde el campo host en el registro sin formato.
host target.hostname Se asigna directamente desde el campo host en el registro sin formato.
host_ip principal.ip Se asigna directamente desde el campo host_ip en el registro sin formato.
host_port principal.port Se asignan directamente desde el campo host_port en el registro sin procesar y se convierten en un número entero.
http_url target.url Se asigna directamente desde el campo http_url en el registro sin formato.
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 formato.
kind metadata.product_event_type Se asigna directamente desde el campo kind en el registro sin formato. 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 formato.
op metadata.product_event_type Se asignan directamente desde el campo op o OPERATION en el registro sin formato.
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 formato.
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 formato.
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 formato.
result security_result.action_details Se asigna directamente desde el campo RESULT en el registro sin formato.
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 formato.
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 formato.
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 formato.
summary security_result.summary Se asigna directamente desde el campo summary en el registro sin formato.
target_app target.application Se asigna directamente desde el campo TARGET en el registro sin formato.
target_ip target.ip Se asignan directamente desde el campo target_ip o IP en el registro sin formato.
target_port target.port Se asignan directamente desde el campo target_port en el registro sin procesar y se convierten 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 formato.
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 formato.
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 formato.
user target.user.userid Se asignan directamente desde el campo USER o ugi en el registro sin formato.

Cambios

2023-12-19

  • Corrección de errores: Se corrigieron los resultados inestables del patrón Grok.

2023-10-30

  • Sin embargo, el analizador se creó recientemente.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.