O blog da AWS

Usando eventos de dados do CloudTrail com Athena e CloudWatch para criar uma trilha de auditoria para eventos de tabelas do DynamoDB

Por Matheus Arrais, Partner Solutions Architect na AWS e
Kimmy Wu, Arquiteta de Soluções na AWS

 

Indústrias altamente regulamentadas devem manter uma trilha de auditoria de eventos em vários níveis para atender aos requisitos de regulamentação e conformidade do setor. Os logs de dados fornecem visibilidade das operações realizadas no recurso ou dentro do recurso, incluindo atividades de API em nível de objeto, como excluir, atualizar e colocar itens. Com isso você pode usar o AWS CloudTrail para criar uma trilha de auditoria para eventos que ocorrem dentro de uma tabela do Amazon DynamoDB.

De acordo com as melhores práticas do AWS CloudTrail, você deve manter os logs de dados para projetos sensíveis à requisitos de segurança em um nível de trilha multi-regional. Para cargas de trabalho com requisitos de conformidade intensivos, recomendamos que você habilite os eventos de dados do bucket S3 para auditar o acesso aos arquivos de produção. Sendo particularmente importante quando há necessidade de auditar o acesso privilegiado aos dados armazenados no S3. O log de eventos de dados fornece a capacidade de auditar no nível de dados, incluindo alterações dentro do recurso que você está habilitando a visibilidade.

Por padrão, o CloudTrail registra logs dos dados de ações do usuário, atividades dos serviços e chamadas de API. Fornecendo o histórico de eventos da sua conta da AWS:

  • De forma segura: usando algoritmos padrão do setor SHA-256 para hash e SHA-256 com RSA para assinatura digital.
  • Habilitando a governança: centralizando todos os logs de API em um só lugar e validando sua integridade identificando se um arquivo de log foi excluído ou alterado.
  • Conformidade, auditoria operacional e auditoria de risco: já que todos os registros podem ser usados para inspeções forenses.

Por exemplo, você pode optar por registrar todas as atividades de API de eventos de dados vindo de tabelas do DynamoDB, buckets do Amazon Simple Storage Service (Amazon S3), AWS Lambda e Amazon Managed Blockchain. Ao criar uma trilha, todos os logs são entregues a um bucket S3 por padrão e além disso, também podem ser entregues ao Amazon CloudWatch Logs. Essa integração com o CloudWatch permite que você consulte, visualize e forneça alertas com base em ações registradas, para necessidades comerciais mais rigorosas, como um alerta para modificações de grupos de segurança. Para obter mais informações, consulte Monitorando arquivos de log do CloudTrail com o Amazon CloudWatch Logs.

Você pode usar seletores de eventos avançados para controle granular de log (por exemplo, para registrar todos os eventos, eventos somente leitura, eventos somente gravação ou eventos personalizados). O seletor de log avançado permite personalizar o nome do seletor, registrar ou excluir eventos de recursos, objetos, usuários ou roles específicos.

Neste blog post, compartilharemos práticas para manter o controle de eventos capturados na camada de plano de dados pelo AWS CloudTrail e demonstraremos como usar os eventos de dados com Amazon Athena e o Amazon CloudWatch para analisar atividades do Amazon DynamoDB:

  • Uma visualização multi-regional de todos os logs do Amazon DynamoDB com o Amazon Cloud Watch
  • Usando o Amazon Cloud Watch Log para consultar os logs para identificar ações por usuário
  • Usando o Amazon Athena para uma análise de log mais granular

Como requisito para começar, siga o passo a passo do blog post Amazon DynamoDB agora oferece suporte ao registro e ao monitoramento de auditoria usando AWS CloudTrail, habilitando o envio de informações para o CloudWatch Logs.

 

Figure 1: Ativar CloudWatch Logs – Dentro da criação do CloudTrail na caixa opcional CloudWatch Logs, marque a caixa de seleção ativar. Em Grupo de log, a nova opção é selecionada. Em roles do IAM, a nova opção é selecionada.

Vizualização multi-região

Quando ativado, esse recurso entrega todos os eventos para o mesmo bucket do S3, separados por região e tabela, criando um bucket centralizado para todos os logs, o que ajuda a criar regras de gerenciamento centralizadas para o conteúdo. A visualização multi-regional ajuda a equipe responsável a ter uma visão centralizada do conteúdo, a fim de ter uma visão única para manter a conformidade dos registros de dados. O seguinte exemplo é uma query no iCloudWatch Logs Insights que mostra a contagem de cada evento (DeleteItem, BatchWrite, Query, e Scan) dentro de tabela do DynamoDB, por região dentro de uma conta AWS nos últimos 45 minutos

stats count(*) by eventName, awsRegion

 

Figure 2: Consulta do CloudWatch Logs Insights – O log aws-cloudtrail-logs-ddb-dataplane no console do CloudWatch exibe eventos organizados por nome, região da AWS e contagem. stats count (*) por EventName, AWSRegion é inserido no campo de texto.

 

Figura 3: Guia Visualização – Na guia Visualização, os resultados da consulta são exibidos em um gráfico de barras para mostrar o número de chamadas de API para cada ação.

 

Seguindo as melhores práticas para multi-account da AWS, o bucket que contém os logs de auditoria deve ser criado usando uma conta dedicada para logs e auditoria.

Identificar o agente do usuário por eventos

Por exemplo, em um cenário em que precisamos identificar as ações de um usuário dentro da tabela de banco de dados do AWS DynamoDB, podemos identificar o usuário, que excluiu itens selecionando o Delete Item com uma data e hora específicas. O resultado mostra qual usuário executou a ação de exclusão.

stats count(*) by eventName like /DeleteItem/, userAgent, requestParameters.tableName, userIdentity.type

 

Figure 4: guia Logs – Na guia Logs, o número de chamadas de API Excluir é exibido em uma lista com colunas para EventName, UserAgent, RequestParameters, count e muito mais.

Use o Amazon Athena para uma análise mais granular

 O Amazon Athena é um serviço de consulta interativo que você pode usar para analisar dados no Amazon S3 usando SQL. Para criar uma tabela no Amazon Athena com base em sua trilha do CloudTrail, abra o console do AWS CloudTrail. No painel de navegação esquerdo, escolha Histórico de eventos e, em seguida, escolha “criar tabela do Athena”.

 

Figure 5: Histórico de eventos – No histórico de eventos do Cloud Trail, selecione o botão Criar tabela do Athena para a criação da tabela.

 

Insira um nome e um local de armazenamento para a tabela e em seguida, insira a consulta SQL. Para obter mais informações, consulte Querying AWS CloudTrail Logs.

Figure 6: CREATE EXTERNAL TABLE – Em Criar uma tabela no Amazon Athena, para Storage location, aws-cloudtrail-logs-ddb-dataplane é selecionado. No nome da tabela do Athena, cloudtrail_logs_aws_cloudtrail_logs_ddb_dataplane é inserido. O campo de texto exibe o código para CREATE EXTERNAL TABLE.

 

Depois que a tabela é criada, o Amazon Athena permite que você consulte o usuário e o evento com mais especificidade, incluindo intervalo de tempo. Essa flexibilidade adicional pode ser usada para solucionar problemas que afetam bancos de dados ou tabelas específicos. Por exemplo, a consulta a seguir retornará usuários ou funções que realizaram a operação de gravação entre 1º de maio e 31 de maio.

SELECT   useridentity.arn,
         eventsource,
         eventname,
         errorCode,
         errorMessage
FROM YOUR_ATHENA_TABLE
WHERE eventname='BatchWriteItem'
        AND eventtime >= '2021-05-01T00:00:00Z'
        AND eventtime < '2021-05-31T00:00:00Z'
GROUP BY  eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER BY  eventsource, eventname

Nessa consulta, você pode identificar qual usuário está fazendo solicitações não autorizadas para as tabelas do DynamoDB.

SELECT count (*) AS TotalEvents,
         useridentity.arn,
         eventsource,
         eventname,
         errorCode,
         errorMessage
FROM YOUR_ATHENA_TABLE
WHERE (errorcode LIKE '%Denied%'
        OR errorcode LIKE '%Unauthorized%')
        AND eventtime >= '2021-05-01T00:00:00Z'
        AND eventtime < '2021-05-31T00:00:00Z'
GROUP BY  eventsource, eventname, errorCode, errorMessage, useridentity.arn
ORDER BY  eventsource, eventname

Padrões de conformidade como GDPR e PCI DSS têm requisitos explícitos para capturar registros e auditorias em nível de dados. No PCI DSS 10.2.1 e 10.2.3, há um requisito de que as trilhas de auditoria reconstruam todos os acessos de usuários individuais aos dados do titular do cartão.

A consulta a seguir pode ajudar a identificar a conformidade de eventos de dados e coletar evidências para auditoria:

SELECT   useridentity.arn,
         eventsource,
         eventname,
         errorCode,
         errorMessage
FROM YOUR_ATHENA_TABLE
WHERE eventname='GetItem'
        AND eventtime >= '2021-05-01T00:00:00Z'
        AND eventtime < '2021-05-31T00:00:00Z'

Conclusion

Os logs de eventos de dados fornecido pelo CloudTrail coletará detalhes de eventos sobre itens, ações e autores, criando um local centralizado e seguro para todos os logs coletados. Ao usar o CloudWatch e o Amazon Athena, você pode coletar evidências de cada ação coletada para atender aos logs de conformidade e auditoria, como identificar uma ação do usuário para inspeções forenses. Ao criar uma visualização centralizada para a equipe responsável, ela ajuda a agregar maior valor em todas as entradas de análise de dados.

Para obter mais informações, consulte Logging DynamoDB Operations by Using AWS CloudTrail.

Este artigo foi traduzido do Blog da AWS em Inglês.

 


Sobre os autores

Matheus Arrais é um Partner Solutions Architect cujo foco é a estratégia de várias contas e serviços de gerenciamento e governança. Ele trabalha em estreita colaboração com parceiros para ajudar a oferecer a melhor solução para seus clientes. Fora do trabalho, Matheus tem uma paixão por ler, tocar bateria e viajar

 

 

 

Kimmy Wu é arquiteta de soluções que ajuda os clientes a criar workloads que os impulsionam em sua jornada de transformação digital para a AWS. Fora do trabalho, Kimmy é uma circense que adora viajar.