¿Cómo activo el registro de AWS WAF y envío registros a CloudWatch, Amazon S3 o Kinesis Data Firehose?

Última actualización: 22-07-2022

Quiero activar el registro de AWS WAF y enviar los registros a Amazon CloudWatch, Amazon Simple Storage Service (Amazon S3) o Amazon Kinesis Data Firehose. ¿Cómo activo los registros de AWS WAF y cuáles son los permisos necesarios?

Descripción breve

En primer lugar, elija un destino compatible para su ACL web de AWS WAF. AWS WAF admite los siguientes destinos de registro:

Asegúrese de tener los permisos de recursos necesarios para activar los registros de AWS WAF. A continuación, active los registros de AWS WAF con el destino elegido.

Resolución

Se admiten los siguientes destinos para almacenar los registros de AWS WAF:

Registros de Amazon CloudWatch

Para enviar los registros a un grupo de registro de Registros de Amazon CloudWatch, elija el grupo de registro de Registros de Amazon CloudWatch como destino cuando active los registros de AWS WAF.

Cree un grupo de registro nuevo o utilice uno existente. Cuando se activa, los registros de AWS WAF se envían a los grupos de registro en las secuencias de registro. Puede analizar estos registros mediante la información de registros. Para obtener más información, consulte What are my options to analyze AWS WAF logs stored in CloudWatch or Amazon S3? ¿Cuáles son mis opciones para analizar los registros de AWS WAF almacenados en CloudWatch o Amazon S3?)

Tenga en cuenta lo siguiente cuando utilice los registros de CloudWatch:

  • Los nombres de los grupos de registro deben empezar por el prefijo aws-waf-logs-.
  • Los grupos de registro deben estar en la misma cuenta y región de AWS que la ACL web. Para las ACL web globales asociadas a CloudFront, el grupo de registro debe estar en la región Este de EE. UU. (Norte de Virginia).
  • Los grupos de registro tienen cuotas para los grupos de registro al almacenar registros.
  • Las secuencias de registro creadas en grupos de registro tienen el siguiente formato:
Region_web-acl-name_log-stream-number

Permisos necesarios

La cuenta que activa los registros de AWS WAF mediante el grupo de registro de Registros de Amazon CloudWatch debe tener los siguientes permisos:

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

Estos permisos son necesarios para cambiar la configuración de registros de la ACL web, configurar la entrega de registros y recuperar y editar los permisos de un grupo de registro. Estos permisos se deben adjuntar al usuario que administra AWS WAF.

Cuando se asignan estos permisos, AWS agrega automáticamente la siguiente política en las políticas basadas en recursos de Registros de Amazon CloudWatch. Esto permite que los servicios de entrega envíen registros a un grupo de registro de Registros de Amazon CloudWatch.
Nota: El número de cuenta y el nombre de recurso de Amazon (ARN) serán específicos de su cuenta para la siguiente política.

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

Si no ve registros en su grupo de registro, compruebe si se han agregado los permisos necesarios anteriores a la política basada en recursos del grupo de registro mediante la API DescribeResourcePolicies. Puede editar la política basada en recursos para los servicios de registros mediante PutResourcePolicy.

Para obtener más información sobre los permisos de los grupos de registro, consulte Enabling logging from certain AWS services (Habilitar los registros desde ciertos servicios de AWS).

Bucket de Amazon S3

Para enviar los registros a un bucket de Amazon S3, elija el bucket de S3 como destino al activar los registros de AWS WAF.

Las ACL web publican los archivos de registro en un bucket de S3 a intervalos de cinco minutos. El tamaño máximo de archivo es de 75 megabytes (MB). Si el tamaño del archivo supera el máximo, se registra un archivo nuevo. Cuando los registros están activados, puede analizarlos con Amazon Athena. Para obtener más información, consulte Querying AWS WAF logs (Consultar los registros de AWS WAF).

Los nombres de bucket de S3 para el registro de AWS WAF deben comenzar con el prefijo aws-waf-logs-.

Permisos necesarios

La cuenta que activa los registros de AWS WAF mediante un bucket de S3 debe tener los siguientes permisos:

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

Estos permisos son necesarios para activar los registros de AWS WAF y configurar la entrega de registros para un bucket de S3. También son necesarios para recuperar y editar la política del bucket para permitir la entrega de registros de AWS WAF a un bucket de S3.

Cuando se asignan estos permisos, la siguiente política de ejemplo se agrega automáticamente a la política del bucket para permitir la entrega de registros al bucket de S3:
Nota: El número de cuenta y el nombre de recurso de Amazon (ARN) son específicos de su cuenta para la siguiente política.

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

Si no ve los registros de AWS WAF en el bucket de S3, compruebe si los permisos necesarios están presentes en la política del bucket mediante la API GetBucketPolicy. Puede editar la política del bucket con la API PutBucketPolicy.

Para enviar registros a otra cuenta o región de AWS, consulte How do I send AWS WAF logs to an Amazon S3 bucket in a centralized logging account? (¿Cómo envío los registros de AWS WAF a un bucket de Amazon S3 en una cuenta de registro centralizada?).

Amazon Kinesis Data Firehose

Para enviar los registros de AWS WAF a la secuencia de Kinesis Data Firehose, debe crear una secuencia de entrega. La secuencia de entrega tiene diferentes destinos para almacenar los registros.

Tenga en cuenta lo siguiente cuando utilice Kinesis Data Firehose:

  • El nombre de Kinesis Data Firehose debe empezar por el prefijo aws-waf-logs-.
  • La secuencia de entrega de Kinesis Data Firehose debe estar en la misma cuenta y región de AWS que la ACL web. Para las ACL web globales asociadas a CloudFront, el Kinesis Data Firehose debe estar en la región Este de EE. UU. (Norte de Virginia).
  • Un registro de AWS WAF equivale a un registro de Kinesis Data Firehose y está sujeto a las cuotas de Amazon Kinesis Data Firehose.
    Importante: Si recibe más de 10 000 solicitudes por segundo, los datos se limitarán y no se registrarán todas las solicitudes. Para evitar la limitación, debe solicitar un aumento en la cuota de Kinesis Data Firehose.

Permisos necesarios

La cuenta que activa los registros de AWS WAF mediante el destino de Kinesis Data Firehose debe tener los siguientes permisos:

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

Para obtener información sobre las funciones vinculadas a servicios y el permiso iam:CreateServiceLinkedRole, consulte Using service-linked roles for AWS WAF (Uso de funciones vinculadas a servicios para AWS WAF).

Para crear una secuencia de entrega de Kinesis Data Firehose, siga estos pasos:

  1. Abra la consola de Amazon Kinesis.
  2. En Region (Región), seleccione la región de AWS en la que creó la ACL web.
    Nota: Seleccione Global si su ACL web está configurada para Amazon CloudFront.
  3. En el panel de navegación, seleccione Delivery streams (Secuencias de entrega).
  4. Seleccione Create delivery stream (Crear secuencia de entrega).
  5. En Source (Origen), elija Direct PUT.
  6. En Destination (Destino), elija uno de los destinos disponibles para Kinesis Firehose.
  7. En Delivery stream name (Nombre de la secuencia de entrega), introduzca un nombre para la secuencia de entrega que comience por aws-waf-logs-.
  8. Confirme que Data transformation (Transformación de datos) y Record format conversion (Conversión de formato de registro estén Disabled (Desactivadas).
  9. Introduzca la configuración de destino según el método de destino elegido en el paso 6.
  10. (Opcional) En Buffer hints, compression and encryption (Sugerencias, compresión y cifrado de búfer), configúrelo según sus especificaciones o mantenga la configuración predeterminada.
  11. (Opcional) En Advanced settings (Configuración avanzada), configúrela según sus especificaciones o mantenga la configuración predeterminada.
  12. Revise la configuración de la secuencia de entrega. Si la configuración coincide con sus especificaciones, seleccione Create delivery stream (Crear secuencia de entrega).

Activar los registros de AWS WAF

Después de decidir el destino al que desea enviar los registros de AWS WAF, siga los pasos siguientes para activar el registro de AWS WAF:

  1. Abra la consola de AWS WAF.
  2. En Region (Región), seleccione la región de AWS en la que creó la ACL web.
    Nota: Seleccione Global si su ACL web está configurada para Amazon CloudFront.
  3. Seleccione su ACL web.
  4. Seleccione Logging and Metrics (Registro y métricas) y, a continuación, seleccione Enable (Activar).
  5. Elija el destino en el que desea almacenar los registros de AWS WAF de los destinos admitidos.
  6. En Redacted fields (Campos eliminados), seleccione los campos que desea omitir de los registros.
  7. En Filter logs (Filtrar registros), agregue el filtro para controlar qué solicitudes desea almacenar.
  8. Seleccione Save (Guardar).

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?