Saltar al contenido

¿Cómo envío los registros de AWS WAF a un bucket de Amazon S3 en una cuenta de registro centralizada?

3 minutos de lectura
0

Quiero enviar los registros de AWS WAF a un bucket de Amazon Simple Storage Service (Amazon S3) que se encuentra en otra cuenta o región de AWS.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Creación de un bucket de S3

Crea el bucket de S3 en la cuenta de registro centralizada de la región seleccionada. Para el nombre del bucket, introduce un nombre de bucket que comience por el prefijo aws-waf-logs-, como aws-waf-logs-example-bucket.

Adición de una política de bucket al bucket de S3

Agrega la siguiente política de bucket de S3 a tu bucket de S3:

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

En la política anterior, sustituye los siguientes valores:

  • Los ID de cuenta de aws:SourceAccount por los ID de las cuentas de origen a las que deseas enviar registros.
  • Los nombres de recursos de Amazon (ARN) de aws:SourceArn por los ARN de los recursos de origen que deseas publicar en los registros. Utiliza el siguiente formato: arn:aws:logs:region:source-account-id:*
  • aws-waf-logs-example-bucket por el nombre de tu bucket de S3.

Configuración de las ACL web para enviar los registros al bucket de S3

En el siguiente ejemplo, el bucket de S3 se encuentra en una cuenta o región diferente a la del AWS WAF. Para configurar la lista de control de acceso web (ACL web), debes ejecutar el comando put-logging-configuration desde la cuenta que posee la ACL web:

aws wafv2 put-logging-configuration --logging-configuration ResourceArn=arn:aws:wafv2:us-west-1:111111111111:regional/webacl/testing/b4a768c9-4895-4f35-9354-3049ab8acc29,LogDestinationConfigs=arn:aws:s3:::aws-waf-logs-example-bucket --region us-west-1

En el comando anterior, sustituye los siguientes valores:

  • El arn de ResourceArn por el ARN de tu ACL web.
  • El ARN de LogDestinationConfigs por el ARN del bucket de S3 que está en tu cuenta de registro centralizada.
  • us-west-1 por la región en la que se encuentra tu ACL web. Para las ACL web de la región de Amazon CloudFront (Global), sustituye us-west-1 por us-east-1.

Repite el paso anterior para cada ACL web de tu AWS WAF.

Cifrado del bucket de S3

AWS WAF admite el cifrado con buckets de S3 para las claves de cifrado del lado del servidor en Amazon S3 y AWS Key Management Service (AWS KMS). AWS WAF no admite el cifrado de las claves administradas de AWS.

Si usas las dos configuraciones siguientes, AWS WAF necesita permiso para usar la clave de KMS:

  • El destino del registro utiliza claves de cifrado del lado del servidor que almacena AWS KMS.
  • Usas una clave administrada por el cliente.

Para permitir que AWS WAF inicie sesión en tu bucket de S3, agrega la siguiente política de claves a tu clave de KMS:

{
  "Sid": "Allow AWS WAF to use the key",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "delivery.logs.amazonaws.com"
    ]
  },
  "Action": "kms:GenerateDataKey*",
  "Resource": "*"
}

Información relacionada

Permisos necesarios para publicar registros en Amazon S3

OFICIAL DE AWSActualizada hace 6 meses