Implementa la soluzione Security Automations for AWS WAF utilizzando Terraform - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementa la soluzione Security Automations for AWS WAF utilizzando Terraform

Creato dal dott. Rahul Sharad Gaikwad (AWS) e Tamilselvan P (AWS)

aws-waf-automation-terraformArchivio di codice: -samples

Ambiente: PoC o pilota

Tecnologie: sicurezza, identità, conformità; infrastruttura; distribuzione dei contenuti; DevOps

Carico di lavoro: tutti gli altri carichi di lavoro

Servizi AWS: AWS WAF

Riepilogo

AWS WAF è un firewall per applicazioni Web che aiuta a proteggere le applicazioni dagli exploit comuni utilizzando regole personalizzabili, che definisci e distribuisci nelle liste di controllo degli accessi Web (ACL). La configurazione delle regole di AWS WAF può essere difficile, soprattutto per le organizzazioni che non dispongono di team di sicurezza dedicati. Per semplificare questo processo, Amazon Web Services (AWS) offre la soluzione Security Automations for AWS WAF, che distribuisce automaticamente un singolo ACL Web con un set di regole AWS WAF che filtrano gli attacchi basati sul Web. Durante l'implementazione di Terraform, puoi specificare quali funzionalità di protezione includere. Dopo aver distribuito questa soluzione, AWS WAF ispeziona le richieste Web alle distribuzioni CloudFront Amazon esistenti o agli Application Load Balancer e blocca tutte le richieste che non corrispondono alle regole.

La soluzione Security Automations for AWS WAF può essere implementata utilizzando AWS secondo le istruzioni contenute nella Security Automations for CloudFormation AWS WAF Implementation Guide. Questo modello fornisce un'opzione di implementazione alternativa per le organizzazioni che utilizzano HashiCorp Terraform come strumento preferito di infrastruttura come codice (IaC) per fornire e gestire la propria infrastruttura cloud. Quando distribuisci questa soluzione, Terraform applica automaticamente le modifiche nel cloud e distribuisce e configura le impostazioni e le funzionalità di protezione di AWS WAF.

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo.

  • AWS Command Line Interface (AWS CLI) installata e configurata con le autorizzazioni necessarie. Per ulteriori informazioni, consulta Getting started (documentazione AWS CLI).

  • Terraform installato e configurato. Per ulteriori informazioni, consulta Install Terraform (documentazione Terraform).

Versioni del prodotto

  • AWS CLI versione 2.4.25 o successiva

  • Terraform versione 1.1.9 o successiva

Architettura

Architettura Target

Questo modello implementa la soluzione Security Automations for AWS WAF. Per ulteriori informazioni sull'architettura di destinazione, consulta la panoramica dell'architettura nella Guida all'implementazione di Security Automations for AWS WAF. Per ulteriori informazioni sulle automazioni AWS Lambda in questa distribuzione, l'Application log parser, il parser di log AWS WAF, il parser di elenchi IP e il gestore di accesso, consulta i dettagli dei componenti nella Security Automations for AWS WAF Implementation Guide.

Distribuzione di Terraform

Quando corriterraform apply, Terraform esegue le seguenti operazioni:

  1. Terraform crea ruoli IAM e funzioni Lambda in base agli input del file testing.tfvars.

  2. Terraform crea regole ACL e set IP AWS WAF in base agli input del file testing.tfvars.

  3. Terraform crea i bucket Amazon Simple Storage Service (Amazon S3), le regole Amazon EventBridge , le tabelle del database AWS Glue e i gruppi di lavoro Amazon Athena in base agli input del file testing.tfvars.

  4. Terraform implementa lo CloudFormation stack AWS per fornire le risorse personalizzate.

  5. Terraform crea le risorse Amazon API Gateway in base agli input forniti dal file testing.tfvars.

Automazione e scalabilità

Puoi utilizzare questo modello per creare regole AWS WAF per più account AWS e regioni AWS per distribuire la soluzione Security Automations for AWS WAF in tutto il tuo ambiente cloud AWS.

Strumenti

Servizi AWS

  • AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.

  • AWS WAF è un firewall per applicazioni Web che ti aiuta a monitorare le richieste HTTP e HTTPS che vengono inoltrate alle risorse delle tue applicazioni Web protette.

Altri servizi

  • Git è un sistema di controllo delle versioni distribuito e open source.

  • HashiCorp Terraform è un'applicazione di interfaccia a riga di comando che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud.

Archivio di codice

Il codice per questo modello è disponibile nel repository GitHub AWS WAF Automation Using Terraform.

Best practice

  • Inserisci i file statici in bucket S3 separati.

  • Evita le variabili di codifica rigida.

  • Limita l'uso di script personalizzati.

  • Adotta una convenzione di denominazione.

Epiche

AttivitàDescrizioneCompetenze richieste

Installa Git.

Segui le istruzioni in Guida introduttiva (sito Web Git) per installare Git sulla tua workstation locale.

DevOps ingegnere

Clonare il repository.

Sulla tua workstation locale, inserisci il seguente comando per clonare il repository di codice. Per copiare il comando completo, incluso l'URL del repository, consultate la sezione Informazioni aggiuntive di questo modello.

git clone <repo-URL>.git
DevOps ingegnere

Aggiorna le variabili.

  1. Naviga nella directory clonata inserendo il seguente comando.

    cd terraform-aws-waf-automation
  2. In qualsiasi editor di testo, apri il file testing.tfvars.

  3. Aggiorna i valori delle variabili nel file testing.tfvars.

  4. Salva e chiudi il file.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Inizializza la configurazione Terraform.

Immettete il seguente comando per inizializzare la directory di lavoro che contiene i file di configurazione Terraform.

terraform init
DevOps ingegnere

Visualizza l'anteprima del piano Terraform.

Inserire il seguente comando. Terraform valuta i file di configurazione per determinare lo stato di destinazione per le risorse dichiarate. Quindi confronta lo stato di destinazione con lo stato attuale e crea un piano.

terraform plan -var-file="testing.tfvars"
DevOps ingegnere

Verifica il piano.

Rivedi il piano e conferma che configuri l'architettura richiesta nel tuo account AWS di destinazione.

DevOps ingegnere

Distribuire la soluzione.

  1. Immettere il seguente comando per applicare il piano.

    terraform apply -var-file="testing.tfvars"
  2. Immettere yes per confermare. Terraform crea, aggiorna o distrugge l'infrastruttura per raggiungere lo stato di destinazione dichiarato nei file di configurazione. Per ulteriori informazioni sulla sequenza, vedere l'implementazione di Terraform nella sezione Architettura di questo modello.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Verifica le modifiche.

  1. Nella console Terraform, verifica che gli output corrispondano ai risultati previsti.

  2. Accedi alla Console di gestione AWS.

  3. Verifica che gli output nella console Terraform siano stati distribuiti correttamente nel tuo account AWS.

DevOps ingegnere

(Facoltativo) Pulisci l'infrastruttura.

Se desideri rimuovere tutte le risorse e le modifiche alla configurazione apportate da questa soluzione, procedi come segue:

  1. Nella console Terraform, inserisci il seguente comando.

    terraform destroy -var-file="testing.tfvars”
  2. Immettere yes per confermare.

DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

Errore WAFV2 IPSet: WAFOptimisticLockException

Se si riceve questo errore quando si esegue il terraform destroy comando, è necessario eliminare manualmente i set IP. Per istruzioni, consulta Eliminazione di un set IP (documentazione AWS WAF).

Risorse correlate

Riferimenti AWS

Riferimenti Terraform

Informazioni aggiuntive

Il comando seguente clona il GitHub repository per questo pattern.

git clone https://github.com/aws-samples/aws-waf-automation-terraform-samples.git