Procesamiento de resultados de GuardDuty con Amazon EventBridge - Amazon GuardDuty

Procesamiento de resultados de GuardDuty con Amazon EventBridge

GuardDuty publica (envía) de manera automática los resultados como eventos en Amazon EventBridge (anteriormente Eventos de Amazon CloudWatch), un servicio de bus de eventos sin servidor. EventBridge ofrece una transmisión de datos en tiempo casi real desde aplicaciones y servicios a destinos como temas de Amazon Simple Notification Service (Amazon SNS), funciones AWS Lambda y transmisiones de Amazon Kinesis. Para obtener más información, consulte la Guía del usuario de Amazon EventBridge.

EventBridge permite la supervisión y el procesamiento automatizados de los resultados de GuardDuty mediante la recepción de eventos. EventBridge recibe eventos tanto para los resultados recién generados como para los resultados agregados, donde las apariciones posteriores de un resultado existente se combinan con el original. A cada resultado de GuardDuty se le asigna un ID de resultado. GuardDuty crea un evento de EventBrige para cada resultado con un ID de resultado único. Para obtener información sobre cómo funciona la agregación en GuardDuty, consulte Agregación de resultados de GuardDuty.

Además de la supervisión y el procesamiento automatizados, el uso de EventBridge permite conservar los datos de sus resultados a más largo plazo. GuardDuty guarda los resultados durante 90 días. Con EventBridge, puede enviar los datos de los resultados a su plataforma de almacenamiento preferida y almacenar los datos durante el tiempo que desee. Para retener los resultados durante más tiempo, GuardDuty apoya Exportar los resultados generados a Amazon S3.

Entender la frecuencia de notificación de EventBridge en GuardDuty

En esta sección se explica con qué frecuencia se reciben notificaciones de resultados a través de EventBridge y cómo actualizar la frecuencia para que se produzcan resultados posteriores.

Notificaciones de resultados recién generados con un identificador de resultado único

GuardDuty envía estas notificaciones casi en tiempo real cuando genera un resultado con un ID de resultado único. La notificación incluye todas las apariciones posteriores de este identificador de resultados durante el proceso de generación de la notificación.

La frecuencia de notificación de los resultados recién generados es casi en tiempo real. De forma predeterminada, no se puede modificar esta frecuencia.

Notificaciones de casos de resultados subsiguientes

GuardDuty le agrega todos los casos subsiguientes de un resultado concreto que se produzcan en intervalos de 6 horas de un solo evento. Solo una cuenta de administrador puede actualizar la frecuencia de notificaciones de EventBridge para que se produzcan resultados posteriores. Una cuenta de miembro no puede actualizar esta frecuencia para su propia cuenta. Por ejemplo, si la cuenta de administrador delegado de GuardDuty actualiza la frecuencia a una hora, todas las cuentas de miembro también adoptarán esta configuración para notificar las incidencias de resultados posteriores que se envíen a EventBridge. Para obtener más información, consulte Múltiples cuentas en Amazon GuardDuty.

Como cuenta de administrador, puede personalizar la frecuencia predeterminada de las notificaciones sobre las incidencias de resultados posteriores. Los valores posibles son 15 minutos, una hora o seis horas, que es el valor predeterminado. Para obtener información acerca de la configuración de la frecuencia de estas notificaciones, consulte Paso 5: Establecer la frecuencia de exportación de los resultados activos actualizados.

Para obtener más información sobre la cuenta de administrador que recibe notificaciones de EventBridge para las cuentas de miembros, consulte Regla de EventBridge para entornos de varias cuentas.

Configuración de un tema y un punto de conexión de Amazon SNS (correo electrónico, Slack y Amazon Chime)

Amazon Simple Notification Service (Amazon SNS) es un servicio totalmente administrado que proporciona la entrega de mensajes de los publicadores a los suscriptores. Los publicadores se comunican de forma asíncrona con los suscriptores mediante el envío mensajes a un tema. Un tema es un punto de acceso lógico y un canal de comunicación que le permite agrupar varios puntos de conexión, como AWS Lambda, como Amazon Simple Queue Service (Amazon SQS), HTTP/S y una dirección de correo electrónico.

nota

Se puede agregar un tema de Amazon SNS a una regla de eventos de EventBridge durante la creación de la regla o después de dicha creación.

Crear un tema de Amazon SNS

Para empezar, antes se debe configurar un tema en Amazon SNS y agregar un punto de conexión. Para crear un tema, siga los pasos indicados en Paso 1: Crear un tema en la Guía para desarrolladores de Amazon Simple Notification Service. Después de crear el tema, copie el ARN del tema en el portapeles. Utilizará este ARN del tema para continuar con una de las configuraciones preferidas.

Elija un método preferido para establecer la ubicación donde desea enviar los datos de los resultados de GuardDuty.

Email setup

Para configurar un punto de conexión de correo electrónico

Después de Create an Amazon SNS topic, el siguiente paso es crear una suscripción a este tema. Siga los pasos indicados en Paso2: Creación de una suscripción a un tema de Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.

  1. Para el ARN del tema, utilice el ARN del tema creado en el paso Create an Amazon SNS topic. El ARN de tema tiene un aspecto similar al siguiente:

    arn:aws:sns:us-east-2:123456789012:your_topic
  2. En Protocol, seleccione Email.

  3. En Punto de conexión, escriba la dirección de correo electrónico donde desee que se reciban las notificaciones de Amazon SNS.

    Después de creada la suscripción, tendrá que confirmarla a través del cliente de correo electrónico.

Slack setup

Configuración de un Amazon Q Developer en el cliente de aplicaciones de chat - Slack

Después de Create an Amazon SNS topic, el siguiente paso es configurar el cliente para Slack.

Siga los pasos en Tutorial: Primeros pasos con Slack en la Guía del administrador de aplicaciones de chat de Amazon Q Developer.

Chime setup

Configuración de un Amazon Q Developer en el cliente de aplicaciones de chat - Chime

Después de Create an Amazon SNS topic, el siguiente paso es configurar Amazon Q Developer para Chime.

Siga los pasos en Tutorial: Primeros pasos con Amazon Chime en la Guía del administrador de aplicaciones de chat de Amazon Q Developer.

Uso de Amazon EventBridge para los resultados de GuardDuty

Con EventBridge, puede crear reglas para especificar los tipos de eventos que desee monitorear. Estas reglas también especifican los servicios y aplicaciones de destino que pueden realizar acciones automatizadas si se producen estos eventos. Un destino es un recurso o punto de conexión al que EventBridge envía un evento cuando el evento coincide con el patrón de eventos definido para una regla. Cada evento es un objeto JSON que se adapta al esquema de EventBridge para los eventos de AWS y contiene una representación de JSON de un resultado. Puede personalizar la regla para que envíe solo los eventos que cumplan determinados criterios. Para obtener más información, consulte [tema sobre el esquema de JSON]. Como los datos de los resultados están estructurados como eventos de EventBridge, puede monitorear, procesar y actuar en función de los resultados mediante el uso de otros servicios y herramientas.

Para recibir notificaciones acerca de resultados de GuardDuty basados en eventos, debe crear una regla de EventBridge y un destino para GuardDuty. Esta regla permite a EventBridge enviar notificaciones de resultados generados por GuardDuty al destino especificado en la regla.

nota

EventBridge y CloudWatch Events son el mismo servicio subyacente y la misma API. Sin embargo, EventBridge incluye características adicionales que le ayudan a recibir eventos de aplicaciones de software como servicio (SaaS) y de sus propias aplicaciones. Como el servicio y la API subyacentes son los mismos, el esquema de eventos de los resultados de GuardDuty también es el mismo.

Cómo funcionan los resultados archivados y no archivados en GuardDuty con EventBridge

En el caso de los resultados que se archivan de manera manual, la ocurrencia inicial y todas las posteriores de estos resultados (generados una vez que el archivado haya terminado) se envían a EventBridge en función de una frecuencia de notificación específica. Para obtener más información, consulte Entender la frecuencia de notificación de EventBridge en GuardDuty.

En el caso de los resultados que se archivan de manera automática con Reglas de supresión, la ocurrencia inicial y todas las posteriores de estos resultados (generados una vez que el archivado haya terminado) no se envían a EventBridge. Puede ver los resultados archivados de manera automática en la consola de GuardDuty.

Esquema de evento

Un patrón de eventos define los datos que EventBridge utiliza para determinar si se debe enviar el evento al destino. El evento de EventBridge para GuardDuty presenta el siguiente formato:

{ "version": "0", "id": "cd2d702e-ab31-411b-9344-793ce56b1bc7", "detail-type": "GuardDuty Finding", "source": "aws.guardduty", "account": "111122223333", "time": "1970-01-01T00:00:00Z", "region": "us-east-1", "resources": [], "detail": {GUARDDUTY_FINDING_JSON_OBJECT} }

El valor de detail devuelve los detalles en formato JSON de un solo resultado como objeto, en lugar de devolver toda la sintaxis de la respuesta resultados, que puede respaldar varios resultados dentro de una matriz.

Para obtener una lista completa de todos los parámetros incluidos en GUARDDUTY_FINDING_JSON_OBJECT, consulte GetFindings. El parámetro id que aparece en la GUARDDUTY_FINDING_JSON_OBJECT es el ID de resultado descrito anteriormente.

Creación de una regla de EventBridge para los resultados de GuardDuty

En los siguientes procedimientos se explica cómo utilizar la consola de Amazon EventBridge y AWS Command Line Interface(AWS CLI) para crear una regla de EventBridge para los resultados de GuardDuty. La regla detecta eventos de EventBridge que utilizan el esquema y el patrón de eventos para los resultados de GuardDuty y, a continuación, envía esos eventos a una función de AWS Lambda para su procesamiento.

AWS Lambda es un servicio informático que permite ejecutar código sin aprovisionar ni administrar servidores. El código se empaqueta y se carga en AWS Lambda como una función de Lambda. AWS Lambda ejecuta a continuación la función cuando esta se invoca. Una función se puede invocar manualmente, automáticamente en respuesta a eventos o en respuesta a solicitudes de aplicaciones o servicios. Para obtener más información acerca de cómo crear e invocar funciones de Lambda, consulte la Guía para desarrolladores de AWS Lambda.

Elija el método que prefiera para crear una regla de EventBridge que envíe el resultado de GuardDuty a un destino.

Console

Siga estos pasos para utilizar la consola de Amazon EventBridge para crear una regla que envíe automáticamente todos los eventos de resultados de GuardDuty a una función de Lambda para su procesamiento. La regla usa la configuración predeterminada para las reglas que se ejecutan cuando se reciben eventos específicos. Para obtener más información sobre la configuración de reglas o para aprender a crear una regla que utilice una configuración personalizada, consulte Creación de reglas que reaccionan a los eventos en la Guía del usuario de Amazon EventBridge.

Antes de crear la regla, cree la función de Lambda que quiere que la regla utilice como destino. Cuando cree la regla, tendrá que especificar esta función como destino. Su destino también puede ser el tema de SNS que creó anteriormente. Para obtener más información, consulte Configuración de un tema y un punto de conexión de Amazon SNS (correo electrónico, Slack y Amazon Chime).

Crear una regla para un evento con la consola
  1. Inicie sesión en Consola de administración de AWS y abra la consola de Amazon EventBridge en https://console.aws.amazon.com/events/.

  2. En el panel de navegación, en Buses, elija Reglas.

  3. En la sección Reglas, elija Crear regla.

  4. En la página Definir detalle de la regla, haga lo siguiente:

    1. En Nombre, ingrese el nombre de la regla.

    2. (Opcional) En Descripción, ingrese una breve descripción de la regla de autorización.

    3. En el caso del Bus de eventos, asegúrese de que esté seleccionada la opción predeterminada y que esté activada la opción Habilitar la regla en el bus de eventos seleccionado.

    4. En Tipo de regla, elija Regla con un patrón de evento.

    5. Cuando haya terminado, elija Siguiente.

  5. En la página Crear patrón de evento, realice una de las siguientes acciones:

    1. En Origen del evento, elija Eventos de AWS o eventos de socios de EventBridge.

    2. (Opcional) En el caso de un evento de muestra, revise un evento de resultados de muestra para que GuardDuty sepa qué puede contener un evento. Para ello, seleccione AWSeventos. A continuación, en Eventos de muestra, seleccione Resultados de GuardDuty.

    3. Opción 1: usar la forma de patrones, una plantilla que proporciona EventBridge

      En la sección Patrón de eventos, realice una de las siguientes acciones:

      1. En Método de creación, seleccione Usar forma de patrón.

      2. En Origen del evento, elija Servicios de AWS.

      3. En Servicio de AWS, elija GuardDuty.

      4. En Tipo de evento, elija Resultado de GuardDuty.

      Cuando haya terminado, elija Siguiente.

    4. Opción 2: Uso de un patrón de eventos personalizado en JSON

      En la sección Patrón de eventos, realice una de las siguientes acciones:

      1. En Método de creación, elija Patrón personalizado (editor JSON).

      2. En el patrón de eventos, pegue el siguiente JSON personalizado para crear una alerta con los resultados medios, altos y críticos. Para obtener más información, consulte Niveles de gravedad de los resultados.

        { "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "severity": [ 4, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9, 9, 9.0, 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8, 9.9, 10, 10.0 ] } }

      Cuando haya terminado, elija Siguiente.

  6. Opción A: Seleccionar Servicio de AWS - AWS Lambda como objetivo

    En la página Seleccionar destino(s), haga lo siguiente:

    1. Para los tipos de destino, seleccione Servicio de AWS.

    2. En Seleccione destino, elija Función de Lambda. Luego, en Función, elija la función de Lambda a la que quiera enviar los eventos de resultados.

    3. En Configurar version/alias, ingrese la configuración de versión o alias de la función de Lambda de destino.

    4. (Opcional) En Configuración adicional, introduzca una configuración personalizada para especificar qué datos de eventos desea enviar a la función de Lambda. También puede especificar cómo gestionar los eventos que no se envíen correctamente a la función.

    5. Cuando haya terminado, elija Siguiente.

  7. Opción B: Selección del tema de SNS como destino

    En la página Seleccionar destino(s), haga lo siguiente:

    1. Para los tipos de destino, seleccione Servicio de AWS.

    2. Para Seleccione un destino, elija Tema de SNS. A continuación, en Ubicación de destino, seleccione la opción adecuada en función de la ubicación de destino. En la lista Tema, seleccione el nombre del tema de SNS que creó.

    3. Amplíe Configuración adicional. En Configurar entrada de destino, seleccione Transformador de entrada).

    4. Elija Configurar transformador de entrada.

    5. Copie el siguiente código en el campo Ruta de entrada de la sección Transformador de entrada de destino.

      { "severity": "$.detail.severity", "Account_ID": "$.detail.accountId", "Finding_ID": "$.detail.id", "Finding_Type": "$.detail.type", "region": "$.region", "Finding_description": "$.detail.description" }
    6. Copie el código siguiente y péguelo en el campo Plantilla para dar formato al correo electrónico.

      "You have a severity <severity> GuardDuty finding type <Finding_Type> in the <region> Region." "Finding Description:" "<Finding_description>. " "For more details open the GuardDuty console at https://console.aws.amazon.com/guardduty/home?region=<region>#/findings?search=id%3D<Finding_ID>"
  8. En la página Configurar etiquetas, si lo desea, introduzca una o más etiquetas para asignarlas a la regla. A continuación, elija Siguiente.

  9. En la página Revisar y crear, revise cada configuración y compruebe que es correcta.

    Para cambiar una configuración, elija Editar en la sección que contiene la configuración y, a continuación, escriba la configuración adecuada. También puede usar las pestañas de navegación para ir a la página que contiene una configuración.

  10. Cuando termine de verificar la configuración, elija Crear regla.

API

El siguiente procedimiento muestra cómo utilizar comandos de la AWS CLI para crear una regla de EventBridge y un destino para GuardDuty. En concreto, el procedimiento muestra cómo crear una regla que permite a EventBridge enviar eventos de todos los resultados generados por GuardDuty a una función de AWS Lambda como destino para dicha regla.

nota

En el procedimiento anterior, se ha utilizado una función de Lambda como destino de la regla que desencadena EventBridge. También puede configurar otros recursos de AWS como destinos para desencadenar EventBridge. GuardDuty y EventBridge admiten los siguientes tipos de destino: instancias de Amazon EC2, secuencias de Amazon Kinesis, tareas de Amazon ECS, máquinas de estado de AWS Step Functions, el comando run y destinos integrados. Para obtener más información, consulte PutTargets en la Referencia de la API de Amazon EventBridge.

Creación de una regla y un destino
  1. Para crear una regla que permita a EventBridge enviar eventos para todos los resultados generados por GuardDuty, ejecute el siguiente comando de la CLI de EventBridge.

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"]}"

    Puede seguir personalizando la regla de modo que indique a EventBridge que envíe eventos únicamente a un subconjunto de resultados generados por GuardDuty. Este subconjunto se basa en los atributos de resultado o atributos especificados en la regla. Por ejemplo, utilice el siguiente comando de la CLI para crear una regla que permita a EventBridge enviar eventos únicamente de los resultados de GuardDuty con una gravedad de 5 u 8:

    aws events put-rule --name your-rule-name --event-pattern "{\"source\":[\"aws.guardduty\"],\"detail-type\":[\"GuardDuty Finding\"],\"detail\":{\"severity\":[5,8]}}"

    Para ello, puede utilizar cualquiera de los valores de propiedad que están disponibles en el archivo JSON de los resultados de GuardDuty.

  2. Para asociar una función de Lambda como un destino de la regla que ha creado en el paso 1, ejecute el siguiente comando de la CLI de CloudWatch.

    aws events put-targets --rule your-target-name --targets Id=1,Arn=arn:aws:lambda:us-east-1:111122223333:function:your_function

    Asegúrese de sustituir your-target-name en el comando anterior por la función de Lambda real para los eventos de GuardDuty.

  3. Para agregar los permisos necesarios para invocar el destino, ejecute el siguiente comando de la CLI de Lambda.

    aws lambda add-permission --function-name your-target-name --statement-id 1 --action 'lambda:InvokeFunction' --principal events.amazonaws.com

    Asegúrese de sustituir your_function en el comando anterior por la función de Lambda real para los eventos de GuardDuty.

Regla de EventBridge para entornos de varias cuentas de GuardDuty

Cuando utilice una cuenta de administrador delegado de GuardDuty, puede ver los eventos generados en las cuentas de miembro y tomar medidas con otras aplicaciones y servicios. Las reglas de EventBridge de su cuenta de administradror se desencadenarán en función de los resultados aplicables de sus cuentas de miembro. Si configura la función de resultados a través de EventBridge en la cuenta de administrador, recibirá notificaciones sobre los resultados tanto de la cuenta como de las cuentas de miembro. Por ejemplo, se puede usar EventBridge para enviar automáticamente tipos específicos de nuevos resultados a una función de Lambda que, a su vez, procesa y envía los datos a su sistema de gestión de incidentes y eventos de seguridad (SIEM).

Puede identificar la cuenta de miembro donde se originó el resultado de GuardDuty con el campo accountId de los detalles JSON del resultado. Para crear una regla de eventos personalizada para cuentas de miembros específicas, cree una nueva regla y use la siguiente plantilla en Patrón de eventos. Sustituya 123456789012 por el accountId de la cuenta de miembro para la que desee activar el evento.

{ "source": [ "aws.guardduty" ], "detail-type": [ "GuardDuty Finding" ], "detail": { "accountId": [ "123456789012" ] } }
nota

En este ejemplo, se crea una regla que coincide con todos los resultados del identificador de cuenta especificado. Se pueden incluir varios ID de cuenta separándolos con comas, siguiendo la sintaxis JSON.