Como faço para remover dados confidenciais dos meus logs do CloudFront?

4 minuto de leitura
0

Por padrão, os logs padrão do Amazon CloudFront capturam dados confidenciais para alguns de seus campos. Por questões de privacidade, quero remover essa parte dos logs.

Descrição breve

Observação: este artigo usa o exemplo do campo Client-IP (c-ip).

Por padrão, os logs do CloudFront capturamc-ipcomo um de seus campos. Há três maneiras de remover c-ip dos logs.

  • Acionar uma função do AWS Lambda para remover o campo na entrega do log no Amazon Simple Storage Service (Amazon S3).
  • Ter um processo do Amazon Elastic Compute Cloud (Amazon EC2) que execute em intervalos determinados para remover o campo.
  • Usar os logs em tempo real do CloudFront e remover o campo confidencial antes de enviar os dados de log para o Amazon S3.

Resolução

Acionar uma função do Lambda

Uma forma de remover o campo c-ip é usar os eventos de notificação do Amazon S3. Quando o CloudFront entregar o arquivo de log no bucket do Amazon S3, configure seu bucket para acionar uma função do Lambda.

Crie uma função do Lambda

1.    Abra o console do AWS Lambda.

2.    Em Functions (Funções), crie uma nova função do Lambda que desempenhe as seguintes configurações:

  • Use o nome do objeto do evento do Amazon S3.
  • Obtenha o objeto do bucket S3.

3.    Remova a coluna c-ip ou substitua os valores por dados anônimos.

Observação: substitua os valores para manter o mesmo formato caso outras aplicações realizem processamento adicional nos logs.

4.    Salve e faça o upload do log de volta para o Amazon S3.

Crie um novo evento

1.    No bucket de destino dos logs, acesse Properties ( Propriedades).

2.    Em Event notifications (Notificações de eventos), crie um novo evento.

3.    Selecione o tipo de evento Put e a função do Lambda de destino.

4.    Selecione a função do Lambda criada na etapa 1 e escolhaSave (Salvar).

Importante: para evitar uma invocação recursiva (loop infinito) com sua função do Lambda, faça o seguinte:

  • Faça com que seus logs do CloudFront sejam entregues em um prefixo de preparação inicial. Por exemplo, “original”.
  • Faça com que o evento do Amazon S3 seja acionado somente com esse prefixo.
  • Faça com que a função do Lambda entregue os logs em um prefixo diferente. Por exemplo, “processed”.

Se você entregar os log no mesmo prefixo, a função do Lambda será acionada novamente e criará uma invocação recursiva. Para obter mais informações, consulte Como evitar a invocação recursiva com o Amazon S3 e o AWS Lambda.

Observação: para manter os custos do Amazon S3 baixos, configure uma política de ciclo de vida do Amazon S3 para expirar os logs originais após um determinado período.

Ter um processo do Amazon EC2

Use o Amazon EventBridge para criar uma regra programada (cron) que inicia uma instância do EC2 e processa os arquivos de log em uma recorrência programada. Por exemplo, uma vez por dia. Quando o processo estiver concluído, interrompa a instância do EC2 até a próxima recorrência para não incorrer em custos adicionais.

1.    Configure o EventBridge e o Lambda para iniciar uma instância do EC2 em um determinado momento. Para obter mais informações, consulte Como interrompo e inicio instâncias do Amazon EC2 em intervalos regulares usando o Lambda?

2.    Na instância do EC2, implante um código que baixará os logs por um determinado período. Por exemplo, um dia inteiro. Remova a coluna c-ip para processar os logs ou substitua os valores da coluna por dados anônimos. Faça o upload dos logs processados de volta para o bucket do S3.

Opcional: mescle todos os logs processados em um único arquivo para economizar nos custos de transição do ciclo de vida do Amazon S3. Esse processo é útil se você pretende armazenar os logs por longos períodos.

Usar o Kinesis Data Firehose

Use os logs em tempo real do CloudFront para selecionar os campos que deseja salvar. Mais tarde, faça com que o Amazon Kinesis Data Firehose envie os dados de log para o Amazon S3.

Quando você configura os logs em tempo real do CloudFront, uma lista de campos incluídos em cada registro de log em tempo real torna-se disponível. Cada registro de log contém até 40 campos. Você tem a opção de receber todos os campos disponíveis ou somente os campos que deve monitorar e analisar a performance. Desative o campo c-ip para excluir o campo dos seus logs.

Observação: em função do uso do Amazon Kinesis Data Streams, essa pode ser uma opção cara. Considere as outras duas opções (Acionar uma função do Lambda ouTer um processo do Amazon EC2) para obter uma solução mais econômica.


AWS OFICIAL
AWS OFICIALAtualizada há um ano