Come posso attivare la registrazione di AWS WAF e inviare i log a CloudWatch, Amazon S3 o Kinesis Data Firehose?

8 minuti di lettura
0

Desidero attivare la registrazione per AWS WAF e inviare i log ad Amazon CloudWatch, Amazon Simple Storage Service (Amazon S3) o Amazon Kinesis Data Firehose. Come posso si attivano i log di AWS WAF e quali sono le autorizzazioni richieste?

Breve descrizione

Innanzitutto, scegli una destinazione supportata per la tua ACL web AWS WAF. AWS WAF supporta le seguenti destinazioni dei log:

Assicurati di disporre delle autorizzazioni per le risorse necessarie per attivare i log di AWS WAF. Quindi, attiva i log di AWS WAF utilizzando la destinazione scelta.

Risoluzione

Per l'archiviazione dei log di AWS WAF, sono supportate le seguenti destinazioni:

File di log Amazon CloudWatch

Per inviare i log a un gruppo di log di CloudWatch Logs, scegli il gruppo di log di CloudWatch Logs come destinazione quando attivi i log di AWS WAF.

Crea un nuovo gruppo di log oppure usa un gruppo di log esistente. Una volta attivati, i log di AWS WAF vengono inviati ai gruppi di log nei flussi di log. È possibile analizzare questi log utilizzando Logs Insights. Per ulteriori informazioni, consulta Quali sono le opzioni disponibili per analizzare i log AWS WAF archiviati in CloudWatch o Amazon S3?

Quando utilizzi CloudWatch Logs, considera quanto segue:

  • I nomi dei gruppi di log devono iniziare con il prefisso aws-waf-logs-.
  • I gruppi di log devono trovarsi nello stesso account e nella stessa regione AWS dell'ACL Web. Per le ACL Web globali associate a CloudFront, il gruppo di log deve trovarsi nella regione Stati Uniti orientali (Virginia settentrionale).
  • Quando archiviano i log, i gruppi di log dispongono di quote per i gruppi di log.
  • I flussi di log creati nei gruppi di log presentano il seguente formato:
Region_web-acl-name_log-stream-number

Autorizzazioni necessarie

L'account che attiva i log di AWS WAF utilizzando il gruppo di log di CloudWatch Logs deve disporre delle seguenti autorizzazioni:

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

Queste autorizzazioni sono necessarie per modificare la configurazione di registrazione di ACL Web, configurare la distribuzione dei log e recuperare e modificare le autorizzazioni per un gruppo di log. Queste autorizzazioni devono essere associate all'utente che gestisce AWS WAF.

Quando vengono assegnate tali autorizzazioni, AWS aggiunge automaticamente la seguente policy alle policy basate sulle risorse di CloudWatch Logs. Ciò consente ai servizi di distribuzione di inviare i log a un gruppo di log di CloudWatch Logs.
Nota: il numero account e il nome della risorsa Amazon (ARN) saranno specifici del tuo account in base alla seguente policy.

{
  "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 non vedi i log nel tuo gruppo di log, controlla se le autorizzazioni necessarie precedenti vengono aggiunte alla policy basata sulle risorse del tuo gruppo di log utilizzando l’API DescribeResourcePolicies. È possibile modificare la policy basata sulle risorse per i servizi di log utilizzando PutResourcePolicy.

Per ulteriori informazioni sulle autorizzazioni per i gruppi di log, consulta Abilitazione della registrazione da determinati servizi AWS.

Bucket Amazon S3

Per inviare i log a un bucket Amazon S3, scegli il Bucket S3 come destinazione quando attivi i log di AWS WAF.

Le ACL Web pubblicano i file di log in un bucket S3 a intervalli di cinque minuti. La dimensione massima dei file è 75 megabyte (MB). Se la dimensione di un file supera il limite massimo, viene registrato un nuovo file. Dopo aver attivato i log, puoi analizzarli utilizzando Amazon Athena. Per ulteriori informazioni, consulta Querying AWS WAF logs.

I nomi dei bucket S3 per la registrazione di AWS WAF devono iniziare con il prefisso aws-waf-logs-.

Autorizzazioni necessarie

L'account che attiva i log di AWS WAF utilizzando un bucket S3 deve disporre delle seguenti autorizzazioni:

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

Tali autorizzazioni sono necessarie per attivare la registrazione di AWS WAF e per configurare la distribuzione dei log per un bucket S3. Sono inoltre necessari per recuperare e modificare la policy del bucket per consentire la distribuzione dei log di AWS WAF a un bucket S3.

Quando vengono assegnate queste autorizzazioni, la seguente policy di esempio viene aggiunta automaticamente alla policy del bucket per consentire la distribuzione dei log al bucket S3:
Nota: il numero account e il nome della risorsa Amazon (ARN) sono specifici del tuo account per la seguente policy.

{
  "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 non vedi i log di AWS WAF nel bucket S3, controlla se nella policy del bucket sono presenti le autorizzazioni necessarie utilizzando l'API GetBucketPolicy. Puoi modificare la policy del bucket utilizzando l'API PutBucketPolicy.

Per inviare i log a un altro account o regione AWS, consulta Come si inviano i log di AWS WAF a un bucket Amazon S3 in un account di registrazione centralizzato?

Amazon Kinesis Data Firehose

Per inviare i log di AWS WAF allo stream di Kinesis Data Firehose, devi creare un flusso di distribuzione. Il flusso di distribuzione presenta diverse destinazioni in cui archiviare i log.

Quando usi Kinesis Data Firehose, considera quanto segue:

  • Il nome di Kinesis Data Firehose deve iniziare con il prefisso aws-waf-logs-.
  • Il flusso di distribuzione di Kinesis Data Firehose deve trovarsi nello stesso account e nella stessa regione AWS dell'ACL Web. Per le ACL Web globali associate a CloudFront, Kinesis Data Firehose deve trovarsi nella regione Stati Uniti orientali (Virginia settentrionale).
  • Un log di AWS WAF equivale a un record di Kinesis Data Firehose ed è soggetto alle quote di Amazon Kinesis Data Firehose.
    Importante: se ricevi più di 10.000 richieste al secondo, i tuoi dati vengono limitati e non verranno registrate tutte le richieste. Per evitare questa limitazione, è necessario richiedere un aumento della quota per Kinesis Data Firehose.

Autorizzazioni necessarie

L'account che attiva i log di AWS WAF utilizzando la destinazione Kinesis Data Firehose deve disporre delle seguenti autorizzazioni:

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

Per informazioni sui ruoli collegati ai servizi e sull'autorizzazione iam:CreateServiceLinkedRole, consulta Using service-linked roles for AWS WAF.

Per creare un flusso di distribuzione di Kinesis Data Firehose, esegui questi passaggi:

  1. Apri la console Amazon Kinesis.
  2. In Region (Regione), scegli la regione AWS in cui hai creato la tua ACL Web.
    Nota: seleziona Global (Globale) se l'ACL Web è configurata per Amazon CloudFront.
  3. Nel riquadro di navigazione, scegli Delivery streams (Flussi di distribuzione).
  4. Scegli Create delivery stream (Crea un flusso di distribuzione).
  5. In Source (Origine), scegli Direct PUT (PUT diretto).
  6. In Destination (Destinazione), scegli tra le destinazioni disponibili per Kinesis Firehose.
  7. In Delivery stream name (Nome del flusso di distribuzione), inserisci un nome per il flusso di consegna che inizi con aws-waf-logs-.
  8. Verifica che Data transformation (Trasformazione dei dati) e Record format conversion (Conversione del formato di record) siano entrambe Disabled (Disabilitate).
  9. Immetti le Destination settings (Impostazioni di destinazione) in base al metodo di destinazione scelto al passaggio 6.
  10. (Facoltativo) In Buffer hints, compression and encryption (Suggerimenti per il buffer, compressione e crittografia), esegui la configurazione in base alle tue specifiche oppure mantieni le impostazioni predefinite.
  11. (Facoltativo) In Advanced settings (Impostazioni avanzate), esegui la configurazione in base alle tue specifiche oppure mantieni le impostazioni predefinite.
  12. Controlla le impostazioni del flusso di distribuzione. Se le impostazioni corrispondono alle tue specifiche, scegli Create delivery stream (Crea un flusso di distribuzione).

Attiva i log di AWS WAF

Dopo aver deciso la destinazione a cui inviare i log di AWS WAF, attiva la registrazione di AWS WAF nel seguente modo:

  1. Apri la console di AWS WAF.
  2. In Region (Regione), scegli la regione AWS in cui hai creato la tua ACL Web.
    Nota: seleziona Global (Globale) se l'ACL Web è configurata per Amazon CloudFront.
  3. Seleziona la tua ACL Web.
  4. Scegli Logging and Metrics (Registrazione e parametri), quindi scegli Enable (Abilita).
  5. Scegli la Destination (Destinazione) in cui desideri archiviare i log di AWS WAF tra le destinazioni supportate.
  6. In Redacted fields (Campi oscurati), scegli i campi che desideri omettere dai log.
  7. In Filter logs (Filtra log), aggiungi il filtro per controllare quali richieste desideri archiviare.
  8. Scegli Salva.
AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa