Como faço para ativar o registro em log do AWS WAF e enviar esses logs para o CloudWatch, Amazon S3 ou Kinesis Data Firehose?

Última atualização: 22/07/2022

Quero ativar o registro em log do AWS WAF e enviar esses logs para o Amazon CloudWatch, Amazon Simple Storage Service (Amazon S3) ou o Amazon Kinesis Data Firehose. Como faço para ativar o registro em log do AWS WAF e quais são as permissões necessárias?

Breve descrição

Primeiro, escolha um destino compatível para a sua ACL da web do AWS WAF. O registro em log do AWS WAF é compatível com os seguintes destinos de log:

Certifique-se de ter as permissões de recursos necessárias para ativar o registro de logs do AWS WAF. Em seguida, ative o registro de log do AWS WAF e use o destino escolhido.

Resolução

Os seguintes destinos são compatíveis com o armazenamento de seus logs do AWS WAF:

Amazon CloudWatch Logs

Para enviar os logs para um grupo de logs do CloudWatch Logs, escolha o grupo de logs do CloudWatch Logs como destino ao ativar os logs do AWS WAF.

Crie um novo grupo de logs ou use um grupo de logs existente. Quando ativados, os logs do AWS WAF são enviados para grupos de logs em fluxos de logs. Você pode analisar esses logs ao usar o Logs Insights. Para saber mais sobre isso, consulte a seção Quais são minhas opções para analisar os logs do AWS WAF que estão armazenados no CloudWatch ou no Amazon S3?

Considere o seguinte ao usar os logs do CloudWatch:

  • Os nomes dos grupos de logs devem começar com o prefixo aws-waf-logs-.
  • Os grupos de logs devem estar na mesma conta e região da AWS que a sua ACL da web. Para ACLs da web globais associadas ao CloudFront, o grupo de logs deve estar na região Leste dos EUA (Norte da Virgínia).
  • Os grupos de logs têm cotas para grupos de logs durante o armazenamento de logs.
  • Os fluxos de log criados em grupos de logs têm o seguinte formato:
Region_web-acl-name_log-stream-number

Permissões necessárias

A conta que ativa o registro de logs do AWS WAF ao usar um grupo de logs do CloudWatch Logs deve ter as seguintes permissões:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • logs:PutResourcePolicy
  • logs:DescribeResourcePolicies
  • logs:DescribeLogGroups

Essas permissões são necessárias para alterar a configuração de registro de logs da ACL da Web, configurar a entrega de logs e para recuperar e editar permissões para um grupo de logs. Essas permissões devem ser anexadas ao usuário que está gerenciando o AWS WAF.

Quando essas permissões são atribuídas, a AWS adiciona automaticamente a seguinte política nas políticas baseadas em recursos do CloudWatch Logs. Isso permite que os serviços de entrega enviem logs para um grupo de logs do CloudWatch Logs.
Observação: O número da conta e o nome do recurso da Amazon (ARN) serão específicos para sua conta para a política correspondente.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite20150319",
      "Effect": "Allow",
      "Principal": {
        "Service": ["delivery.logs.amazonaws.com"]
      },
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": ["arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*"],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": ["0123456789"]
        },
        "ArnLike": {
          "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"]
        }
      }
    }
  ]
}

Se você não conseguir visualizar os logs no seu grupo de logs, verifique se as permissões necessárias anteriores foram adicionadas à política baseada em recursos desse grupo de logs ao usar a API DescribeResourcePolicies. Você pode editar a política baseada em recursos para os serviços de logs ao usar PutResourcePolicy.

Para obter mais informações sobre permissões de grupos de logs, consulte a seção Habilitando o registro em log de determinados serviços da AWS.

Bucket do Amazon S3

Para enviar os logs para um bucket do Amazon S3, escolha o bucket do S3 como destino ao ativar os logs do AWS WAF.

As ACLs da Web publicam os arquivos de log em um bucket do S3 em intervalos de cinco minutos. O tamanho máximo do arquivo é de 75 megabytes (MB). Se o tamanho do arquivo exceder o máximo, um novo arquivo será registrado. Quando os registros de logs estão ativados, você pode analisá-los ao usar o Amazon Athena. Para obter mais informações, consulte a seção Consultando logs do AWS WAF.

Para registrar os logs do AWS WAF, o nome do bucket do S3 deve começar com o prefixo aws-waf-logs-.

Permissões necessárias

A conta que ativa os registro de logs do AWS WAF em um bucket do S3 deve ter as seguintes permissões:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • s3:PutBucketPolicy
  • s3:GetBucketPolicy

Essas permissões são necessárias para ativar o registro em log do AWS WAF e configurar a entrega de logs para um bucket do S3. Elas também são necessárias para recuperar e editar a política do bucket, permitindo a entrega de logs do AWS WAF para um bucket do S3.

Quando essas permissões são atribuídas, uma política como a seguir é adicionada automaticamente à política do bucket para permitir a entrega de logs ao bucket do S3:
Observação: O número da conta e o Nome do recurso da Amazon (ARN) são específicos para a sua conta para a política correspondente.

{
  "Version": "2012-10-17",
  "Id": "AWSLogDeliveryWrite20150319",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::my-bucket",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    }
  ]
}

Se você não conseguir visualizar os logs do AWS WAF no bucket do S3, verifique se as permissões necessárias estão presentes na política desse bucket ao usar a API GetBucketPolicy. Você pode editar a política do bucket ao usar a API PutBucketPolicy.

Para enviar logs para outra conta ou Região da AWS, consulte a seção Como enviar logs do AWS WAF para um bucket do Amazon S3 em uma conta de registro em log centralizada?

Amazon Kinesis Data Firehose

Para enviar os logs do AWS WAF para o fluxo do Kinesis Data Firehose, você deve criar um fluxo de entrega. O fluxo de entrega tem destinos diferentes para armazenar os logs.

Considere o seguinte ao usar o Kinesis Data Firehose:

  • O nome do Kinesis Data Firehose deve começar com o prefixo aws-waf-logs-.
  • O fluxo de entrega do Kinesis Data Firehose deve estar na mesma conta e Região da AWS que sua ACL da web. Para ACLs da web globais associadas ao CloudFront, o Kinesis Data Firehose deve estar na região Leste dos EUA (Norte da Virgínia).
  • Um log do AWS WAF é equivalente a um registro do Kinesis Data Firehose e está sujeito às Cotas do Amazon Kinesis Data Firehose.
    Importante: se você receber mais de 10.000 solicitações por segundo, seus dados serão limitados e nem todas as solicitações serão registradas. Para evitar esse controle de utilização, você deve solicitar um aumento na cota do Kinesis Data Firehose.

Permissões necessárias

A conta que ativa os registros de logs do AWS WAF e que usa o Kinesis Data Firehose como destino deve ter as seguintes permissões:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • iam:CreateServiceLinkedRole
  • firehose:ListDeliveryStreams

Para obter mais informações sobre as funções vinculadas à serviços e à permissão iam:CreateServiceLinkedRole, consulte a seção Usando funções vinculadas a serviços para o AWS WAF.

Para criar um fluxo de entrega para o Kinesis Data Firehose, siga as seguintes etapas:

  1. Abra o console do Amazon Kinesis.
  2. Em Região, selecione a região da AWS em que você criou sua ACL da Web.
    Observação: selecione Global se a sua ACL da Web estiver configurada para o Amazon CloudFront.
  3. No painel de navegação, escolhaFluxos de entrega.
  4. Escolha Criar fluxo de entrega.
  5. Em Origem, escolha Direct PUT.
  6. Para Destino, escolha um dos destinos disponíveis para o Kinesis Firehose.
  7. Em Nome do fluxo de entrega, insira um nome para seu fluxo de entrega com o prefixo aws-waf-logs-.
  8. Confirme se a transformação de dados e a conversão de formato de registro estão ambas desativadas.
  9. Insira as configurações de Destino com base no método de destino escolhido na etapa 6.
  10. (Opcional) Em Buffer hints, Compactação e criptografia, configure de acordo com suas especificações ou mantenha as configurações padrão.
  11. (Opcional) Em Configurações avançadas, configure de acordo com suas especificações ou mantenha as configurações padrão.
  12. Revise as configurações do fluxo de entrega. Se as configurações das suas especificações estiverem corretas, escolhaCriar fluxo de entrega.

Ativar os registros em log do AWS WAF

Depois de decidir o destino para os logs do AWS WAF, ative o registro em log do AWS WAF através das seguintes etapas:

  1. Abra o console do AWS WAF.
  2. Em Região, selecione a região da AWS em que você criou sua ACL da Web.
    Observação: selecione Global se a sua ACL da Web estiver configurada para o Amazon CloudFront.
  3. Selecione sua ACL da Web.
  4. Escolha Registro e métricas e, em seguida, escolha Ativar.
  5. Escolha o Destino, que é onde você deseja armazenar os logs do AWS WAF, dentre as opções compatíveis.
  6. Para Campos omitidos, selecione os campos que você deseja omitir dos logs.
  7. Em Filtro de logs, adicione o filtro para controlar quais solicitações você deseja armazenar.
  8. Escolha Salvar.

Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?