Processar descobertas do GuardDuty com o Amazon EventBridge - Amazon GuardDuty

Processar descobertas do GuardDuty com o Amazon EventBridge

O GuardDuty publica (envia) descobertas como eventos para o Amazon EventBridge (antigo Amazon CloudWatch Events), um serviço de barramento de eventos sem servidor. O EventBridge fornece um stream de dados quase em tempo real de aplicações e serviços para destinos como tópicos do Amazon Simple Notification Service (Amazon SNS), funções do AWS Lambda e streams do Amazon Kinesis. Para obter mais informações, consulte o Guia do usuário do Amazon EventBridge.

O EventBridge permite o monitoramento e o processamento automatizados das descobertas do GuardDuty por meio do recebimento de eventos. O EventBridge recebe eventos tanto para descobertas recém-geradas quanto para descobertas agregadas, onde ocorrências subsequentes de uma descoberta existente são combinadas com a original. Todas as descobertas do GuardDuty recebem um ID de descoberta. O GuardDuty cria um evento do EventBridge para todas as descobertas com um ID de descoberta exclusivo. Para obter informações sobre como a agregação funciona no GuardDuty, consulte Agregação de descobertas do GuardDuty.

Além do monitoramento e processamento automatizados, o uso do EventBridge permite a retenção de longo prazo dos dados de suas descobertas. O GuardDuty armazena as descobertas por 90 dias. Com o EventBridge, você pode enviar dados de descobertas para sua plataforma de armazenamento preferida e armazenar os dados pelo tempo que quiser. Para reter as descobertas por mais tempo, o GuardDuty oferece suporte a Exportar as descobertas geradas para bucket do Amazon S3.

Noções básicas sobre a frequência das notificações do EventBridge no GuardDuty

Esta seção explica com que frequência você recebe notificações de descoberta por meio do EventBridge e como atualizar a frequência para ocorrências de descobertas subsequentes.

Notificações de descobertas recém-geradas com um ID de descoberta exclusivo

O GuardDuty envia essas notificações quase em tempo real quando gera uma descoberta com um ID de descoberta exclusivo. A notificação inclui todas as ocorrências subsequentes desse ID de descoberta durante o processo de geração da notificação.

A frequência das notificações das descobertas recém-geradas é quase em tempo real. Por padrão, você não pode modificar essa frequência.

Notificações para ocorrências de descoberta subsequentes

O GuardDuty agrega todas as ocorrências subsequentes de um tipo de descoberta determinado que acontecem em intervalos de seis horas em um único evento. Somente uma conta de administrador pode atualizar a frequência de notificação do EventBridge para ocorrências de descobertas subsequentes. Uma conta de membro não pode atualizar essa frequência em sua própria conta. Por exemplo, se a conta delegada do administrador do GuardDuty atualizar a frequência para uma hora, todas as contas de membros também terão uma frequência de notificação de uma hora sobre as ocorrências de descoberta subsequentes enviadas ao EventBridge. Para obter mais informações, consulte Múltiplas contas no Amazon GuardDuty.

Como uma conta de administrador, você pode personalizar a frequência padrão das notificações sobre as ocorrências de descobertas subsequentes. Valores possíveis são 15 minutos, 1 hora ou 6 horas (padrão). Para obter informações sobre como definir a frequência dessas notificações, consulte Etapa 5: Definir a frequência para exportar descobertas ativas atualizadas.

Para obter mais detalhes sobre a conta de administrador que recebe notificações do EventBridge para contas de membros, consulte Regra do EventBridge para ambientes de várias contas.

Configurar um tópico e um endpoint do Amazon SNS (e-mail, Slack e Amazon Chime)

O Amazon Simple Notification Service (Amazon SNS) é um serviço totalmente gerenciado que fornece entrega de mensagens de publicadores para assinantes. Os publicadores se comunicam de maneira assíncrona com os assinantes enviando mensagens para um tópico. Um tópico é um ponto de acesso lógico e um canal de comunicação que permite agrupar vários endpoints como AWS Lambda, Amazon Simple Queue Service (Amazon SQS), HTTP/S e um endereço de e-mail.

nota

Você pode adicionar um tópico do Amazon SNS a uma regra de evento do EventBridge durante ou após a criação da regra.

Criar um tópico do Amazon SNS

Para começar, você deve primeiro configurar um tópico no Amazon SNS e adicionar um endpoint. Para criar um tópico, consulte as etapas em Etapa 1: criar um tópico no Guia do desenvolvedor do Amazon Simple Notification Service. Depois que o tópico for criado, copie o ARN do tópico para a área de transferência. Você usará esse ARN de tópico para continuar com uma das configurações preferidas.

Escolha um método preferido para estabelecer para onde você deseja enviar dados de descobertas do GuardDuty.

Email setup

Para configurar um endpoint de e-mail

Depois que você Create an Amazon SNS topic, a próxima etapa é criar uma assinatura para esse tópico. Siga as etapas em Etapa 2: criar uma assinatura para um tópico do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.

  1. Para ARN de tópico, use o ARN do tópico criado na etapa Create an Amazon SNS topic. O ARN do tópico é semelhante ao seguinte:

    arn:aws:sns:us-east-2:123456789012:your_topic
  2. Em Protocol (Protocolo), selecione Email.

  3. Para Endpoint, insira um endereço de e-mail no qual deseja receber as notificações do Amazon SNS.

    Após criar a assinatura, você precisa confirmá-la por meio de seu cliente de e-mail.

Slack setup

Para configurar o Amazon Q Developer em clientes de aplicações de bate-papo – Slack

Depois que você Create an Amazon SNS topic, a próxima etapa é configurar o cliente para o Slack.

Execute as etapas em Tutorial: comece a usar o Slack no Guia do administrador de aplicativos de chat do Amazon Q Developer.

Chime setup

Para configurar o Amazon Q Developer em clientes de aplicações de bate-papo – Chime

Depois que você Create an Amazon SNS topic, a próxima etapa é configurar o Amazon Q Developer para o Chime.

Execute as etapas em Tutorial: comece a usar o Amazon Chime no Guia do administrador de aplicativos de chat do Amazon Q Developer.

Usar o Amazon EventBridge para descobertas do GuardDuty

Com o EventBridge, você cria regras para especificar os eventos que deseja monitorar. Essas regras também especificam os serviços e aplicações de destino que podem realizar ações automatizadas se esses eventos ocorrerem. Um destino é um recurso ou endpoint para o qual o EventBridge envia um evento quando este corresponde ao padrão de evento definido na regra. Cada evento é um objeto JSON que está em conformidade com o esquema do EventBridge para eventos da AWS e contém uma representação do JSON de uma descoberta. Você pode personalizar a regra para enviar somente os eventos que atendam a determinados critérios. Para obter mais informações, consulte [tópico do esquema JSON]. Como os dados da descoberta são estruturados como um evento do EventBridge, você pode monitorar, processar e agir de acordo com as descobertas usando outras aplicações, serviços e ferramentas.

Para receber notificações sobre descobertas do GuardDuty com base em eventos, você deverá criar uma regra do EventBridge e um destino para o GuardDuty. Essa regra permite que o EventBridge envie notificações para descobertas que o GuardDuty gera ao destino especificado na regra.

nota

O CloudWatch Events e o EventBridge são o mesmo serviço subjacente e API. No entanto, o EventBridge inclui recursos adicionais que ajudam você a receber eventos de aplicações de software como serviço (SaaS) e de suas próprias aplicações. Como o serviço subjacente e a API são os mesmos, o esquema de eventos das descobertas do GuardDuty também é o mesmo.

Como as descobertas arquivadas e não arquivadas no GuardDuty funcionam com o EventBridge

Para as descobertas arquivadas manualmente, a ocorrência inicial e todas as ocorrências subsequentes dessas descobertas (geradas após a conclusão do arquivamento) são enviadas para o EventBridge com base em uma frequência de notificação específica. Para obter mais informações, consulte Noções básicas sobre a frequência das notificações do EventBridge no GuardDuty.

Para as descobertas arquivadas automaticamente com Regras de supressão, a ocorrência inicial e todas as ocorrências subsequentes dessas descobertas (geradas após a conclusão do arquivamento) não são enviadas para o EventBridge. Você pode visualizar essas descobertas arquivadas automaticamente no console do GuardDuty.

Esquema de eventos

Um padrão de eventos define os dados usados pelo EventBridge para determinar se o evento deve ser enviado ao destino. O evento do EventBridge para o GuardDuty tem o seguinte 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} }

O valor detail retorna os detalhes do JSON de uma única descoberta como um objeto, em vez de retornar a sintaxe de resposta descobertas inteira que oferece suporte a várias descobertas de uma matriz.

Para obter a lista completa de todos os parâmetros incluídos em GUARDDUTY_FINDING_JSON_OBJECT, consulte GetFindings. O parâmetro do id que aparece no GUARDDUTY_FINDING_JSON_OBJECT é o ID da descoberta descrito anteriormente.

Criando uma regra do EventBridge para as descobertas do GuardDuty

Os procedimentos a seguir explicam como usar o console do Amazon EventBridge e a AWS Command Line Interface (AWS CLI) para criar uma regra do EventBridge para as descobertas do GuardDuty. A regra detecta eventos do EventBridge que usam o esquema e o padrão de evento para descobertas do GuardDuty e envia esses eventos para uma função do AWS Lambda para processamento.

O AWS Lambda é um serviço de computação que pode ser usado para executar código sem provisionamento ou gerenciamento de servidores. Você empacota o código e faz upload dele no AWS Lambda como uma função do Lambda. O AWS Lambda então executa a função quando ela é invocada. Uma função pode ser invocada manualmente por você, automaticamente em resposta a eventos ou em resposta a solicitações de aplicações ou serviços. Para obter mais informações sobre criar e invocar as funções do Lambda, consulte o Guia do desenvolvedor do AWS Lambda.

Escolha seu método preferido para criar uma regra do EventBridge que envia sua descoberta do GuardDuty para um destino.

Console

Siga estas etapas para usar o console do Amazon EventBridge para criar uma regra que envia automaticamente todos os eventos de descoberta do GuardDuty para uma função do Lambda para processamento. A regra usa configurações padrão para regras que são executadas quando eventos específicos são recebidos. Para obter detalhes sobre as configurações de regras ou para saber como criar uma regra que usa configurações personalizadas, consulte Criação de regras que reagem a eventos no Guia do usuário do Amazon EventBridge.

Antes de criar essa regra, crie a função do Lambda que deseja que a regra use como destino. Ao criar a regra, você precisará especificar essa função como o destino da regra. Seu destino também pode ser o tópico do SNS criado anteriormente. Para obter mais informações, consulte Configurar um tópico e um endpoint do Amazon SNS (e-mail, Slack e Amazon Chime).

Para criar uma regra de evento usando o console
  1. Faça login noConsole de gerenciamento da AWS e abra o console do Amazon EventBridge em https://console.aws.amazon.com/events/.

  2. No painel de navegação, em Barramentos, selecione Regras.

  3. Na seção Regras, selecione Criar regra.

  4. Em Definir detalhe da regra, faça o seguinte:

    1. Em Nome, insira um nome para a regra.

    2. (Opcional) Em Descrição, insira uma breve descrição da regra.

    3. Para Barramento de eventos, verifique se o padrão está selecionado e Habilitar a regra nos barramentos de eventos selecionados está ligado.

    4. Para Tipo de regra, escolha Regra com padrão de evento.

    5. Ao terminar, escolha Avançar.

  5. Na página Criar padrão de evento, faça o seguinte:

    1. Em Origem do evento, escolha Eventos da AWS ou eventos de parceiro do EventBridge.

    2. (Opcional) Para Evento de amostra, analise um evento de descoberta de amostra para o GuardDuty para saber o que um evento pode conter. Para fazer isso, selecione eventos da AWS. Em seguida, em Eventos de amostra, escolha Descoberta do GuardDuty.

    3. Opção 1 – usar o formulário padrão, um modelo fornecido pelo EventBridge

      Na seção Padrão de evento, faça o seguinte:

      1. Para Método de criação, selecione Usar formulário padrão.

      2. Para Origem do evento, escolha Serviços da AWS.

      3. Para AWS service (Serviço da AWS), escolha GuardDuty.

      4. No menu Tipo de evento, escolha Descoberta do GuardDuty.

      Ao terminar, escolha Avançar.

    4. Opção 2 – usar padrão de evento personalizado em JSON

      Na seção Padrão de evento, faça o seguinte:

      1. Para Método de criação, selecione Padrão personalizado (editor JSON).

      2. Para Padrão de evento, cole o seguinte JSON personalizado que criará um alerta para descobertas médias, altas e críticas. Para obter mais informações, consulte Níveis de gravidade das descobertas.

        { "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 ] } }

      Ao terminar, escolha Avançar.

  6. Opção A – selecionar AWS service (Serviço da AWS) – AWS Lambda como destino

    Na página Selecionar destino(s), faça o seguinte:

    1. Para Tipos de destino, selecione AWS service (Serviço da AWS).

    2. Para Selecionar um destino, escolha Função do Lambda. Em seguida, para Função, selecione a função do Lambda para a qual deseja enviar eventos de descoberta.

    3. Para Configurar versão/alias, insira as configurações de versão ou alias para a função do Lambda de destino.

    4. (Opcional) Para Configurações adicionais, insira configurações personalizadas para especificar quais dados de eventos você deseja enviar para a função do Lambda. Você também pode especificar como lidar com eventos que não são entregues à função com sucesso.

    5. Ao terminar, escolha Avançar.

  7. Opção B – selecionar tópico do SNS como destino

    Na página Selecionar destino(s), faça o seguinte:

    1. Para Tipos de destino, selecione AWS service (Serviço da AWS).

    2. Em Select a target (Selecionar um destino), escolha SNS topic (Tópico do SNS). Em seguida, para Localização de destino, selecione a opção adequada com base na sua localização de destino. Em Tópico, escolha o nome do tópico do SNS criado.

    3. Expanda Additional settings (Configurações adicionais). Em Configurar entrada do destino, escolha Transformador de entrada.

    4. Escolha Configurar o transformador de entrada.

    5. Copie o código a seguir e cole-o no campo Caminho de entrada na seção 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 o código a seguir e cole-o no campo Modelo para formatar o e-mail.

      "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. Na página Configurar tags, insira opcionalmente uma ou mais tags a serem atribuídas à regra. Escolha Próximo.

  9. Na página Revisar e criar, analise as configurações da regra e verifique se estão corretas.

    Para alterar uma configuração, selecione Editar para a configuração e insira a configuração correta. Você também pode usar as guias de navegação para acessar a página que contém uma configuração.

  10. Quando terminar de verificar as configurações, selecione Criar regra.

API

O procedimento a seguir mostra como usar os comandos da AWS CLI para criar uma regra do EventBridge e um destino para o GuardDuty. Especificamente, o procedimento mostra como criar uma regra que habilite o EventBridge para enviar eventos para todas as descobertas que o GuardDuty gera para uma função do AWS Lambda como destino para a regra.

nota

Nesse exemplo, estamos usando uma função do Lambda como destino para a regra que aciona o EventBridge. Você também pode configurar outros recursos da AWS como destinos para acionar o EventBridge. O GuardDuty e o EventBridge oferecem suporte aos seguintes tipos de destino: instâncias do Amazon EC2, fluxos do Amazon Kinesis, tarefas do Amazon ECS, máquinas de estado do AWS Step Functions, o comando run e destinos integrados. Para obter mais informações, consulte PutTargets na Referência de API do Amazon EventBridge.

Para criar uma regra e um destino
  1. Para criar uma regra que habilite o EventBridge para enviar eventos para todas as descobertas geradas pelo GuardDuty, execute o seguinte comando da CLI do EventBridge.

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

    Você pode personalizar ainda mais sua regra para que ela instrua o EventBridge a enviar eventos somente para um subconjunto das descobertas geradas pelo GuardDuty. Esse subconjunto é baseado no atributo ou nos atributos da descoberta especificado(s) na regra. Por exemplo, use o seguinte comando da CLI para criar uma regra que permita que o EventBridge envie apenas eventos para as descobertas do GuardDuty com uma gravidade de 5 ou 8:

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

    Para isso, você pode usar qualquer um dos valores de propriedade disponíveis no JSON para as descobertas do GuardDuty.

  2. Para anexar uma função do Lambda como destino para a regra que você criou na etapa 1, execute o seguinte comando da CLI do CloudWatch.

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

    Substitua your-target-name no comando acima pela sua função do Lambda real para os eventos do GuardDuty.

  3. Para adicionar as permissões necessárias para invocar o destino, execute o seguinte comando da CLI do Lambda.

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

    Substitua your_function no comando acima pela sua função do Lambda real para os eventos do GuardDuty.

Regra do EventBridge para ambientes de várias contas do GuardDuty

Ao usar uma conta delegada de administrador do GuardDuty, você pode visualizar os eventos gerados nas contas de membros e realizar ações usando outras aplicações e serviços. As regras do EventBridge na sua conta de administrador serão acionadas com base nas descobertas aplicáveis das suas contas de membros. Caso configure notificações de descobertas por meio do EventBridge em sua conta de administrador, você receberá notificações de descobertas da sua conta e das contas de membros. Por exemplo, você pode usar o EventBridge para enviar tipos específicos de descobertas para uma função do Lambda que, por sua vez, processa e envia os dados para seu sistema de gerenciamento de incidentes e eventos de segurança (SIEM).

Você pode identificar a conta de membro da qual a descoberta do GuardDuty se originou com o campo accountId dos detalhes do JSON da descoberta. Para criar uma regra de evento personalizada para contas de membros específicas, crie uma nova regra e use o modelo a seguir em Padrão de eventos. Substitua 123456789012 pela accountId da conta de membro para a qual você deseja acionar o evento.

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

Esse exemplo cria uma regra que corresponde a todas as descobertas do ID da conta especificada. Você pode incluir vários IDs de conta separando-os com vírgulas, seguindo a sintaxe JSON.