Automatizzare la scansione di malware 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 dell'ampio numero di file caricati su 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 esegue 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 di malware.

L'architettura mostra le seguenti pipeline:

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

Le pipeline sono descritte in maggiore dettaglio 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 file nel bucket Cloud Storage non sottoposto a scansione.
  2. Il servizio Eventarc rileva questo evento di caricamento e comunica al servizio Cloud Run la presenza di questo nuovo file.
  3. Il servizio Cloud Run scarica il nuovo file dal bucket Cloud Storage non analizzato e lo passa allo scanner di malware ClamAV.
  4. A seconda del risultato della scansione del malware, il servizio esegue una delle seguenti azioni:
    • Se ClamAV dichiara che il file è pulito, viene spostato dal bucket Cloud Storage non analizzato al bucket Cloud Storage pulito.
    • Se ClamAV dichiara che il file contiene malware, viene spostato dal bucket Cloud Storage non sottoposto a scansione al bucket Cloud Storage quarantined.
  5. Il servizio registra il risultato di queste azioni in Logging e Monitoring per consentire agli amministratori di intervenire.

Pipeline di aggiornamento del mirroring del database di malware ClamAV

La pipeline di aggiornamento del mirror del database di malware ClamAV mantiene aggiornato un mirror locale privato del database in Cloud Storage. In questo modo, viene eseguito un solo accesso al database pubblico di ClamAV per ogni aggiornamento per scaricare i file di aggiornamento differenziale più piccoli e non il database completo, il che impedisce qualsiasi limitazione di frequenza.

Questa pipeline funziona nel seguente modo:

  1. Un job Cloud Scheduler è configurato per attivarsi ogni due ore, che corrisponde all'intervallo di controllo degli aggiornamenti predefinito utilizzato dal servizio ClamAV freshclam. Questo job invia una richiesta HTTP POST al servizio Cloud Run per chiedergli 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 eventuali aggiornamenti differenziali disponibili e li applica al mirror del database.
  4. Quindi, copia il mirror aggiornato del database del malware 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 controlla e scarica regolarmente gli aggiornamenti del database disponibili dal bucket Cloud Storage.

Note sul layout

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 scansioni efficaci, 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 l'ultimo database completo di malware, che ha dimensioni di diverse centinaia di megabyte.

Il database pubblico dei malware per ClamAV è ospitato su una rete di distribuzione di contenuti (CDN), che limita la frequenza di questi download. Se vengono avviate più istanze e tentano di scaricare il database completo, può essere attivato il limitazione di frequenza. Ciò comporta il blocco dell'indirizzo IP esterno utilizzato da Cloud Run per 24 ore. In questo modo viene impedito l'avvio del servizio ClamAV, nonché il download degli aggiornamenti del database dei malware.

Inoltre, Cloud Run utilizza un pool condiviso di indirizzi IP esterni. Di conseguenza, i download provenienti da istanze di scansione malware di progetti diversi vengono considerati dalla CDN come provenienti da un singolo 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 gli avvisi basati su log per i file infetti, puoi utilizzare le voci di log generate da Logging. Tuttavia, la configurazione di questi avvisi esula dall'ambito di questa architettura.

Deployment

Per eseguire il deployment di questa architettura, consulta Eseguire il deployment della scansione automatica del malware per i file caricati su Cloud Storage.

Passaggi successivi