Automatizzare la scansione antimalware per i file caricati su Cloud Storage

Last reviewed 2024-07-16 UTC

Questa architettura di riferimento mostra come creare una pipeline basata su eventi che può aiutarti ad automatizzare la valutazione dei file per rilevare malware come trojan, virus e altro codice dannoso. La valutazione manuale del gran numero di file caricati in Cloud Storage richiede troppo tempo per la maggior parte delle app. L'automazione del processo può aiutarti a risparmiare tempo e migliorare l'efficienza.

La pipeline in questa architettura utilizza i prodotti Google Cloud insieme al motore antivirus open source ClamAV. Puoi anche utilizzare qualsiasi altro motore antimalware che esegua la scansione on demand nei container Linux. In questa architettura, ClamAV viene eseguito in un container Docker ospitato in Cloud Run. La pipeline scrive anche le voci di log in Cloud Logging e registra le metriche in Cloud Monitoring.

Architettura

Il seguente diagramma fornisce una panoramica dell'architettura:

Architettura della pipeline di scansione antimalware.

L'architettura mostra le seguenti pipeline:

  • Pipeline di scansione dei file caricati dagli utenti, che verifica se un file caricato contiene malware.
  • Pipeline di aggiornamento del mirror del database di malware ClamAV, che gestisce un mirror aggiornato del database di malware utilizzato da ClamAV.

Le pipeline sono descritte in modo più dettagliato nelle sezioni seguenti.

Pipeline di scansione dei file caricati dagli utenti

La pipeline di scansione dei file funziona nel seguente modo:

  1. Gli utenti finali caricano i propri file nel bucket Cloud Storage unscanned.
  2. Il servizio Eventarc rileva questo evento di caricamento e comunica al servizio Cloud Run il nuovo file.
  3. Il servizio Cloud Run scarica il nuovo file dal bucket Cloud Storage non sottoposto a scansione e lo passa allo scanner malware ClamAV.
  4. A seconda del risultato della scansione antimalware, il servizio esegue una delle seguenti azioni:
    • Se ClamAV dichiara che il file è pulito, viene spostato dal bucket Cloud Storage non scansionato al bucket Cloud Storage pulito.
    • Se ClamAV dichiara che il file contiene malware, questo viene spostato dal bucket Cloud Storage non analizzato al bucket Cloud Storage in quarantena.
  5. Il servizio segnala il risultato di queste azioni a Logging e Monitoring per consentire agli amministratori di intervenire.

Pipeline di aggiornamento del mirror del database di malware ClamAV

La pipeline di aggiornamento del mirror del database di malware ClamAV mantiene un mirror locale privato aggiornato del database in Cloud Storage. In questo modo, il database pubblico ClamAV viene consultato una sola volta per aggiornamento per scaricare i file di aggiornamento differenziale più piccoli e non l'intero database, il che impedisce qualsiasi limitazione della frequenza.

Questa pipeline funziona nel seguente modo:

  1. Un job Cloud Scheduler è configurato per essere attivato ogni due ore, lo stesso intervallo di controllo degli aggiornamenti predefinito utilizzato dal servizio freshclam di ClamAV. Questo job invia una richiesta HTTP POST al servizio Cloud Run, chiedendogli di aggiornare il mirror del database di malware.
  2. L'istanza Cloud Run copia il mirror del database di malware dal bucket Cloud Storage al file system locale.
  3. L'istanza esegue quindi lo strumento ClamAV CVDUpdate, che scarica gli aggiornamenti differenziali disponibili e li applica al mirror del database.
  4. Dopodiché, copia di nuovo il mirror del database dei malware aggiornato nel bucket Cloud Storage.

All'avvio, il servizio ClamAV freshclam in esecuzione nell'istanza Cloud Run scarica il database dei malware da Cloud Storage. Durante l'esecuzione, il servizio verifica e scarica regolarmente gli aggiornamenti del database disponibili dal bucket Cloud Storage.

Considerazioni sulla progettazione

Le seguenti linee guida possono aiutarti a sviluppare un'architettura che soddisfi i requisiti della tua organizzazione in termini di affidabilità, costi ed efficienza operativa.

Affidabilità

Per eseguire la scansione in modo efficace, lo scanner di malware ClamAV deve mantenere un database aggiornato delle firme del malware. Il servizio ClamAV viene eseguito utilizzando Cloud Run, che è un servizio stateless. All'avvio di un'istanza del servizio, ClamAV deve sempre scaricare il database completo più recente di malware, che ha dimensioni di diverse centinaia di megabyte.

Il database pubblico di malware per ClamAV è ospitato su una rete di distribuzione dei contenuti (CDN), che limita la velocità di questi download. Se vengono avviate più istanze e tentano di scaricare l'intero database, può essere attivata limitazione di frequenza. In questo modo, l'indirizzo IP esterno utilizzato da Cloud Run viene bloccato per 24 ore. In questo modo, il servizio ClamAV non si avvia e non vengono scaricati gli aggiornamenti del database di malware.

Inoltre, Cloud Run utilizza un pool condiviso di indirizzi IP esterni. Di conseguenza, i download dalle istanze di scansione malware di progetti diversi vengono visualizzati dalla CDN come provenienti da un unico indirizzo e attivano anche il blocco.

Ottimizzazione dei costi

Questa architettura utilizza i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

Efficienza operativa

Per attivare avvisi basati su log per i file infetti, puoi utilizzare le voci di log di Logging. Tuttavia, la configurazione di questi avvisi non rientra nell'ambito di questa architettura.

Deployment

Per eseguire il deployment di questa architettura, consulta Eseguire il deployment della scansione antimalware automatizzata per i file caricati in Cloud Storage.

Passaggi successivi