Recoger registros de AWS Elastic MapReduce

Disponible en:

En este documento se explica cómo ingerir registros de AWS Elastic MapReduce (EMR) en Google Security Operations. AWS EMR es una plataforma de Big Data nativa de la nube que procesa grandes cantidades de datos rápidamente. Al integrar los registros de EMR en Google SecOps, puedes analizar la actividad del clúster y detectar posibles amenazas de seguridad.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Acceso privilegiado a AWS

Configurar un segmento de Amazon S3

  1. Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
  2. Guarda el nombre y la región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el Usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros como Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade 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 adelante.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca y selecciona las políticas AmazonS3FullAccess y CloudWatchLogsFullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Añadir permisos.

Cómo configurar AWS EMR para reenviar registros

  1. Inicia sesión en 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 Clusters.
  4. Busca y selecciona el clúster de EMR para el que quieras habilitar el registro.
  5. En la página Detalles del clúster, haga clic en Editar.
  6. En la pantalla Editar clúster, ve a la sección Registro.
  7. Selecciona Habilitar registro.
  8. Especifica el segmento de S3 en el que se almacenarán los registros.
  9. Especifica el URI de S3 con el formato s3://your-bucket-name/ (de esta forma, todos los registros de EMR se almacenarán 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.

Configurar feeds

Hay dos puntos de entrada diferentes para configurar feeds en la plataforma Google SecOps:

  • Configuración de SIEM > Feeds > Añadir nuevo feed
  • Centro de contenido > Paquetes de contenido > Empezar

Cómo configurar el feed de AWS EMR

  1. Haz clic en el paquete Amazon Cloud Platform.
  2. Busca el tipo de registro AWS EMR.
  3. Especifique los valores en los campos siguientes.

    • Tipo de fuente: Amazon SQS V2
    • Nombre de la cola: el nombre de la cola de SQS de la que se va a leer.
    • URI de S3: el URI del segmento.
      • s3://your-log-bucket-name/
        • Sustituye your-log-bucket-name por el nombre real de tu segmento de S3.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras según tus preferencias de ingesta.

    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es 180 días.

    • ID de clave de acceso a la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 20 caracteres.

    • Clave de acceso secreta de la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 40 caracteres.

    Opciones avanzadas

    • Nombre del feed: un valor rellenado automáticamente que identifica el feed.
    • Espacio de nombres del recurso: espacio de nombres asociado al feed.
    • Etiquetas de ingestión: etiquetas aplicadas a todos los eventos de este feed.
  4. Haga clic en Crear feed.

Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros en esta familia de productos, consulta el artículo Configurar 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 del 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 del 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 del registro sin procesar.
bytes network.received_bytes Se asigna directamente desde el campo bytes del registro sin procesar y se convierte en un 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 del registro sin procesar.
cmd target.process.command_line Se asigna directamente desde el campo cmd del 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 del 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 del 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 del registro sin procesar.
description security_result.description Se asigna directamente desde el campo description del 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 del 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 del registro sin procesar.
duration network.session_duration.seconds Se asigna directamente desde el campo duration del 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 del registro sin procesar. Se extrae del campo ip_port mediante grok y la manipulación de cadenas. Se extrae del campo ip_port mediante grok y la manipulación de cadenas, y se convierte en un número entero.
event_type metadata.event_type Se determina mediante 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 del registro sin procesar.
host principal.hostname Se asigna directamente desde el campo host del registro sin procesar.
host target.hostname Se asigna directamente desde el campo host del registro sin procesar.
host_ip principal.ip Se asigna directamente desde el campo host_ip del registro sin procesar.
host_port principal.port Se asigna directamente desde el campo host_port del registro sin procesar y se convierte en un número entero.
http_url target.url Se asigna directamente desde el campo http_url del 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 del registro sin procesar.
kind metadata.product_event_type Se asigna directamente desde el campo kind del registro sin procesar. El valor "AWS_EMR" se asigna mediante el analizador El valor "AWS EMR" se asigna mediante el analizador El valor "AMAZON" se asigna mediante el 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 del registro sin procesar.
op metadata.product_event_type Se asigna directamente desde el campo op o OPERATION del registro sin procesar.
proto network.application_protocol Se extrae del campo http_url mediante 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 del 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 del 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 del 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 del registro sin procesar.
result security_result.action_details Se asigna directamente desde el campo RESULT del 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 del registro sin procesar.
severity security_result.severity Se asigna desde el campo severity del registro sin procesar. INFO se ha asignado a INFORMATIONAL y WARN 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 del 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 del registro sin procesar.
summary security_result.summary Se asigna directamente desde el campo summary del registro sin procesar.
target_app target.application Se asigna directamente desde el campo TARGET del registro sin procesar.
target_ip target.ip Se asigna directamente desde el campo target_ip o IP del registro sin procesar.
target_port target.port Se asigna directamente desde el campo target_port del registro sin procesar y se convierte en un número entero.
timestamp metadata.event_timestamp Se asigna directamente desde el campo timestamp del registro sin procesar y se analiza como una marca de tiempo ISO8601.
timestamp event.timestamp Se asigna directamente desde el campo timestamp del 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 del 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 del 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 del registro sin procesar.
user target.user.userid Se asigna directamente desde el campo USER o ugi del registro sin procesar.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.