Configura la registrazione centralizzata su scala aziendale 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à.

Configura la registrazione centralizzata su scala aziendale utilizzando Terraform

Creato da Aarti Rajput (AWS), Yashwant Patel (AWS) e Nishtha Yadav (AWS)

Riepilogo

La registrazione centralizzata è fondamentale per l'infrastruttura cloud di un'organizzazione, perché offre visibilità sulle operazioni, sulla sicurezza e sulla conformità. Man mano che l'organizzazione ridimensiona il proprio AWS ambiente su più account, una strategia strutturata di gestione dei log diventa fondamentale per eseguire operazioni di sicurezza, soddisfare i requisiti di audit e raggiungere l'eccellenza operativa.

Questo modello fornisce un framework scalabile Account AWS e sicuro per centralizzare i log di più servizi, per consentire una gestione dei log su scala aziendale in implementazioni complesse. AWS La soluzione è automatizzata utilizzando Terraform, uno strumento di infrastruttura come codice (IaC) che garantisce implementazioni coerenti e ripetibili e riduce al minimo la configurazione manuale. HashiCorp Combinando Amazon CloudWatch Logs, Amazon Data Firehose e Amazon Simple Storage Service (Amazon S3), puoi implementare una solida pipeline di aggregazione e analisi dei log che offre:

  • Gestione centralizzata dei log in tutta l'organizzazione in AWS Organizations

  • Raccolta automatizzata dei log con controlli di sicurezza integrati

  • Elaborazione scalabile dei log e archiviazione durevole

  • Report di conformità e audit trail semplificati

  • Informazioni operative e monitoraggio in tempo reale

La soluzione raccoglie i log dai contenitori, dalle funzioni e dalle istanze di database Amazon Elastic Kubernetes Service (Amazon EKS AWS Lambda ) tramite Logs. CloudWatch Inoltra automaticamente questi log a un account di registrazione dedicato utilizzando i filtri di abbonamento. CloudWatch Firehose gestisce la pipeline di streaming di log ad alta velocità verso Amazon S3 per lo storage a lungo termine. Amazon Simple Queue Service (Amazon SQS) è configurato per ricevere notifiche di eventi di Amazon S3 al momento della creazione di oggetti. Ciò consente l'integrazione con i servizi di analisi, tra cui:

  • Amazon OpenSearch Service per la ricerca, la visualizzazione e l'analisi dei log in tempo reale

  • Amazon Athena per interrogazioni basate su SQL

  • Amazon EMR per l'elaborazione su larga scala

  • Lambda per la trasformazione personalizzata

  • Amazon QuickSight per dashboard

Tutti i dati vengono crittografati utilizzando AWS Key Management Service (AWS KMS) e l'intera infrastruttura viene implementata utilizzando Terraform per una configurazione coerente tra gli ambienti.

Questo approccio di registrazione centralizzato consente alle organizzazioni di migliorare il proprio livello di sicurezza, mantenere i requisiti di conformità e ottimizzare l'efficienza operativa nell'intera infrastruttura. AWS

Prerequisiti e limitazioni

Prerequisiti

Per istruzioni sulla configurazione AWS Control Tower degli account AFT e Application, consulta la sezione Epics.

Account richiesti

La tua organizzazione AWS Organizations dovrebbe includere questi account:

  • Account dell'applicazione: uno o più account di origine in cui Servizi AWS (Amazon EKS, Lambda e Amazon RDS) eseguono e generano log

  • Account Log Archive: un account dedicato per l'archiviazione e la gestione centralizzate dei log

Versioni del prodotto

Architettura

Il diagramma seguente illustra un'architettura di registrazione AWS centralizzata che fornisce una soluzione scalabile per la raccolta, l'elaborazione e l'archiviazione dei log da più account di applicazioni in un account Log Archive dedicato. Questa architettura gestisce in modo efficiente i log provenienti da Servizi AWS, tra cui Amazon RDS, Amazon EKS e Lambda, e li indirizza attraverso un processo semplificato ai bucket S3 regionali nell'account Log Archive.

Architettura di registrazione centralizzata AWS per la raccolta di log da più account di applicazioni.

Il flusso di lavoro include cinque processi:

  1. Processo di flusso di log

    • Il processo di flusso di log inizia negli account dell'applicazione, dove vengono Servizi AWS generati vari tipi di log, ad esempio log generali, di errore, di controllo, di query lente da Amazon RDS, log del piano di controllo da Amazon EKS e log di esecuzione di funzioni ed errori da Lambda.

    • CloudWatch funge da punto di raccolta iniziale. Raccoglie questi registri a livello di gruppo di log all'interno di ciascun account dell'applicazione.

    • In CloudWatch, i filtri di abbonamento determinano quali registri devono essere inoltrati all'account centrale. Questi filtri offrono un controllo granulare sull'inoltro dei log, in modo da poter specificare modelli di log esatti o flussi di log completi per la centralizzazione.

  2. Trasferimento dei log tra account

    • I log vengono spostati nell'account Log Archive. CloudWatch i filtri di abbonamento facilitano il trasferimento tra account e preservano il contesto regionale.

    • L'architettura stabilisce più flussi paralleli per gestire diverse fonti di log in modo efficiente, per garantire prestazioni e scalabilità ottimali.

  3. Elaborazione dei log nell'account Log Archive

    • Nell'account Log Archive, Firehose elabora i flussi di log in entrata.

    • Ogni regione mantiene flussi di distribuzione Firehose dedicati in grado di trasformare, convertire o arricchire i log in base alle esigenze.

    • Questi stream Firehose inviano i log elaborati ai bucket S3 nell'account Log Archive, che si trova nella stessa regione degli account dell'applicazione di origine (Regione A nel diagramma) per mantenere i requisiti di sovranità dei dati.

  4. Notifiche e flussi di lavoro aggiuntivi

    • Quando i log raggiungono i bucket S3 di destinazione, l'architettura implementa un sistema di notifica utilizzando Amazon SQS.

    • Le code SQS regionali consentono l'elaborazione asincrona e possono attivare flussi di lavoro, analisi o sistemi di avviso aggiuntivi in base ai log archiviati.

  5. AWS KMS per motivi di sicurezza

    L'architettura incorpora funzionalità AWS KMS di sicurezza. AWS KMS fornisce chiavi di crittografia per i bucket S3. Ciò garantisce che tutti i log archiviati mantengano la crittografia inattiva, mantenendo al contempo la crittografia regionale per soddisfare i requisiti di residenza dei dati.

Strumenti

Servizi AWS

Altri strumenti

  • Terraform è uno strumento di infrastruttura come codice (IaC) HashiCorp che ti aiuta a creare e gestire risorse cloud e locali.

Codice

Il codice per questo modello è disponibile nel repository di registrazione GitHub centralizzato.

Best practice

Epiche

AttivitàDescrizioneCompetenze richieste

Configura un AWS Control Tower ambiente con AFT.

  1. Esegui la distribuzione AWS Control Tower seguendo le istruzioni contenute nella AWS Control Tower documentazione.

  2. Implementate AFT seguendo le istruzioni contenute nella AWS Control Tower documentazione.

Amministratore AWS

Abilita la condivisione delle risorse per l'organizzazione.

  1. Configura AWS Command Line Interface (AWS CLI) con le credenziali dell'account di gestione, che forniscono le autorizzazioni amministrative per la gestione. AWS Control Tower

  2. Esegui il seguente AWS CLI comando in qualsiasi momento: Regione AWS

    aws ram enable-sharing-with-aws-organization

    Ciò consente la condivisione delle risorse all'interno dell'organizzazione in AWS Organizations tutte le regioni che supportano AWS Resource Access Manager (AWS RAM).

Amministratore AWS

Verifica o fornisci gli account delle applicazioni.

Per fornire nuovi account dell'Applicazione per il tuo caso d'uso, creali tramite AFT. Per ulteriori informazioni, consulta Fornire un nuovo account con AFT nella AWS Control Tower documentazione.

Amministratore AWS
AttivitàDescrizioneCompetenze richieste

Copia il contenuto della Application_account cartella nel aft-account-customizations repository.

  1. Crea una cartella denominata Application_account nel percorso principale del aft-account-customizations repository. Questo repository viene creato automaticamente quando configuri AFT (vedi l'epopea precedente).

  2. Passate alla directory principale del scale-using-terraform repository centralised-logging-at-enterprise-, copiate il contenuto della aft/account directory e incollatelo nella Application_account directory che avete creato nel passaggio 1 del repository. aft-account-customizations

  3. Dalla directory principale del centralised-logging-at-enterprise-scale-using-terraform repository, copia il contenuto della Application_account directory nella Application_account/terraform directory del repository. aft-account-customizations

  4. Nel aft-account-customizations/Application_account/terraform.tfvars file, conferma che tutti i parametri vengano passati come argomenti nei file di configurazione Terraform corrispondenti.

DevOps ingegnere

Rivedi e modifica i parametri di input per la configurazione dell'account dell'applicazione.

In questo passaggio, configuri il file di configurazione per la creazione di risorse negli account dell'applicazione, inclusi gruppi di CloudWatch log, filtri di CloudWatch sottoscrizione, ruoli e policy IAM e dettagli di configurazione per le funzioni Amazon RDS, Amazon EKS e Lambda.

Nel tuo aft-account-customizations repository, nella Application_account cartella, configura i parametri di input nel terraform.tfvars file in base ai requisiti della tua organizzazione:

  • environment: il nome dell'ambiente (ad esempio, proddev,staging) in cui verranno distribuite le risorse.

  • account_name: Il nome del Account AWS luogo in cui verranno create le risorse.

  • log_archive_account_id: L' Account AWS ID in cui verranno archiviati i log.

  • admin_role_name: il nome del ruolo amministrativo che verrà utilizzato per la gestione delle risorse.

  • tags: Una mappa di coppie chiave-valore che rappresentano tag comuni da applicare a tutte le risorse.

  • rds_config: un oggetto che contiene i dettagli di configurazione per le istanze Amazon RDS.

  • allowed_cidr_blocks: Un elenco di blocchi CIDR a cui è consentito accedere alle risorse.

  • destination_name:Una variabile utilizzata per creare l'Amazon Resource Name (ARN) della CloudWatch destinazione in cui verranno trasmessi i log.

  • rds_parameters:Un oggetto che contiene le impostazioni del gruppo di parametri Amazon RDS.

  • vpc_config: un oggetto che contiene i dettagli di configurazione del VPC.

  • eks_config: un oggetto che contiene i dettagli di configurazione per i cluster Amazon EKS.

  • lambda_config: un oggetto che contiene i dettagli di configurazione per le funzioni Lambda.

  • restrictive_cidr_range: Un elenco di intervalli CIDR restrittivi per le regole dei gruppi di sicurezza.

  • target_account_id: L' Account AWS ID dell'account Log Archive di destinazione in cui verranno distribuite le risorse.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Copia il contenuto della Log_archive_account cartella nel aft-account-customizations repository.

  1. Crea una cartella denominata Log_archive_account nel percorso principale del aft-account-customizations repository. Questo repository viene creato automaticamente quando configuri AFT.

  2. Passate alla directory principale del centralised-logging-at-enterprise-scale-using-terraform repository, copiate il contenuto della aft/account directory e incollatelo nella Log_archive_account directory creata nel passaggio precedente del repository. aft-account-customizations

  3. Dalla directory principale del centralised-logging-at-enterprise-scale-using-terraform repository, copia il contenuto della Log_archive_account directory nella Log_archive_account/terraform directory del repository. aft-account-customizations

  4. Nel aft-account-customizations/Log_archive_account/terraform.tfvars file, conferma che tutti i parametri vengano passati come argomenti nei file di configurazione Terraform corrispondenti.

DevOps ingegnere

Rivedi e modifica i parametri di input per la configurazione dell'account Log Archive.

In questo passaggio, configuri il file di configurazione per la creazione di risorse nell'account Log Archive, inclusi i flussi di distribuzione Firehose, i bucket S3, le code SQS e i ruoli e le policy IAM.

Nella Log_archive_account cartella del tuo aft-account-customizations repository, configura i parametri di input nel terraform.tfvars file in base ai requisiti della tua organizzazione:

  • environment: il nome dell'ambiente (ad esempio, proddev,staging) in cui verranno distribuite le risorse.

  • destination_name: variabile utilizzata per creare l'ARN della CloudWatch destinazione in cui verranno trasmessi i log.

  • source_account_ids: Un elenco di quelle a Account AWS IDs cui è consentito inserire filtri di sottoscrizione nella destinazione del registro. Puoi inserire tutti gli account IDs che desideri abilitare per la registrazione centralizzata.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Opzione 1: distribuisci i file di configurazione Terraform da AFT.

In AFT, la pipeline AFT viene attivata dopo aver inviato il codice con le modifiche alla configurazione nel repository. GitHub aft-account-customizations AFT rileva automaticamente le modifiche e avvia il processo di personalizzazione dell'account.

Dopo aver apportato modifiche ai file Terraform (terraform.tfvars), esegui il commit e invia le modifiche al tuo repository: aft-account-customizations

$ git add * $ git commit -m "update message" $ git push origin main
Nota

Se stai usando un ramo diverso (ad esempiodev), sostituiscilo main con il nome del ramo.

DevOps ingegnere

Opzione 2: distribuisci manualmente il file di configurazione Terraform.

Se non utilizzi AFT o desideri distribuire la soluzione manualmente, puoi utilizzare i seguenti comandi Terraform dalle cartelle and: Application_account Log_archive_account

  1. Clona il GitHub repository e configura i parametri di input nel file. terraform.tfvars

  2. Esegui il comando seguente:

    $ terraform init
  3. Anteprima delle modifiche:

    $ terraform plan

    Questo comando valuta la configurazione di Terraform per determinare lo stato desiderato delle risorse e la confronta con lo stato attuale dell'infrastruttura.

  4. Applica le modifiche:

    $ terraform apply
  5. Rivedi le modifiche pianificate e digita quando richiesto per procedere con l'applicazione.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Verifica i filtri di abbonamento.

Per verificare che i filtri di sottoscrizione inoltrino correttamente i log dai gruppi di log degli account dell'applicazione all'account Log Archive:

  1. Nell'account dell'applicazione, apri la CloudWatch console.

  2. Nel pannello di navigazione a sinistra, scegli Log groups (Gruppi di log).

  3. Seleziona ogni gruppo di log (/aws/rds,/aws/eks,/aws/lambda) e scegli la scheda Filtri di abbonamento.

    Dovresti vedere filtri di abbonamento attivi che puntano all'ARN di destinazione, in base al nome specificato nel file di configurazione Terraform.

  4. Scegli un filtro di abbonamento per verificarne la configurazione e lo stato.

DevOps ingegnere

Verifica gli stream Firehose.

Per verificare che i flussi Firehose nell'account Log Archive elaborino correttamente i log dell'applicazione:

  1. Nell'account Log Archive, apri la console Firehose.

  2. Nel riquadro di navigazione a sinistra, scegli Firehose stream.

  3. Scegli uno stream Firehose e verifica quanto segue:

    • La destinazione mostra il bucket S3 corretto.

    • La scheda Monitoraggio mostra le metriche di consegna corrette.

    • L'orario di consegna recente è aggiornato.

DevOps ingegnere

Convalida i bucket S3 centralizzati.

Per verificare che i bucket S3 centralizzati ricevano e organizzino correttamente i log:

  1. Nell'account Log Archive, apri la console Amazon S3.

  2. Seleziona ogni bucket di registrazione centrale.

  3. Naviga attraverso la struttura delle cartelle:. AWSLogs/AccountID/Region/Service

    Dovresti vedere i file di registro organizzati per timestamp () YYYY/MM/DD/HH.

  4. Scegli un file di registro recente e verificane il formato e l'integrità dei dati.

DevOps ingegnere

Convalida le code SQS.

Per verificare che le code SQS ricevano notifiche per i nuovi file di registro:

  1. Nell'account Log Archive, apri la console Amazon SQS.

  2. Nel riquadro di navigazione sinistro scegliere Queues (Code).

  3. Seleziona ogni coda configurata e scegli Invia e ricevi messaggi.

    Dovresti vedere messaggi che contengono notifiche di eventi S3 per i nuovi file di registro.

  4. Scegli un messaggio per verificare che contenga le informazioni corrette sull'oggetto S3.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Opzione 1: rimuovere il file di configurazione Terraform da AFT.

Quando rimuovi i file di configurazione Terraform e inserisci le modifiche, AFT avvia automaticamente il processo di rimozione delle risorse.

  1. Vai al repository. aft-account-customizations

  2. Vai alla directory terraform.

  3. Eliminare i seguenti file:

    • modulesdirectory

    • iam.tf

    • versions.tf

    • variables.tf

    • outputs.tf

    • terraform.tfvars

  4. Cancella il contenuto del main.tf file.

  5. Invia le modifiche al repository:

    # Stage all changes $ git add * # Commit cleanup changes $ git commit -m "Remove AFT customizations" # Push to repository $ git push origin main
    Nota

    Se utilizzi un ramo diverso (ad esempiodev), sostituiscilo main con il nome del ramo.

DevOps ingegnere

Opzione 2: ripulisci manualmente le risorse Terraform.

Se non utilizzi AFT o desideri pulire le risorse manualmente, usa i seguenti comandi Terraform dalle cartelle Application_account andLog_archive_account:

  1. Inizializza la configurazione Terraform:

    $ terraform init

    Questo comando inizializza Terraform e garantisce l'accesso allo stato corrente.

  2. Anteprima delle modifiche alla pulizia:

    $ terraform destroy

    Questo comando valuta quali risorse verranno distrutte e confronta lo stato desiderato con lo stato attuale dell'infrastruttura.

  3. Esegui la pulizia. Quando richiesto, digita per confermare ed eseguire il piano di distruzione.

DevOps ingegnere

Risoluzione dei problemi

ProblemaSoluzione

La destinazione CloudWatch Logs non è stata creata o è inattiva.

Convalida quanto segue:

  1. Nell'account Log Archive, verifica che la politica di destinazione includa:

    • L'account principale di origine corretto.

    • L'azione corretta (logs:PutSubscriptionFilter).

    • Un ARN di destinazione valido.

  2. Verificate che lo stream Firehose esista e sia attivo.

  3. Verifica che il ruolo IAM associato alla destinazione disponga delle autorizzazioni per Firehose.

Il filtro di sottoscrizione non è riuscito o è bloccato nello stato In sospeso.

Verifica quanto segue:

  1. Nell'account Application, verifica che il ruolo IAM abbia:

    • Autorizzazioni per chiamarePutSubscriptionFilter.

    • Un rapporto di fiducia con CloudWatch Logs.

  2. Verificare che l'ARN di destinazione sia corretto.

  3. Controlla CloudWatch i log per messaggi di errore specifici.

Lo stream di distribuzione di Firehose non mostra alcun record in entrata.

Verificare quanto segue:

  1. Verificare che il ruolo IAM di Firehose abbia:

    • Autorizzazioni per scrivere su Amazon S3.

    • Accesso alla AWS KMS chiave se la crittografia è abilitata.

  2. Rivedi le CloudWatch metriche per:

    • IncomingRecords

    • DeliveryToS3.Records

  3. Verifica le impostazioni del buffer e le configurazioni di consegna.

Risorse correlate