Automatizza la scansione antimalware per i file caricati su Cloud Storage

Last reviewed 2023-05-17 UTC

Questa architettura di riferimento mostra come creare una pipeline basata su eventi che può aiutarti ad automatizzare la valutazione dei file alla ricerca di malware come trojan, virus e altro codice dannoso. La valutazione manuale di un numero elevato di file caricati su Cloud Storage richiede troppo tempo per la maggior parte delle app. Automatizzare il 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 in container Linux. In questa architettura, ClamAV viene eseguito in un container Docker ospitato in Cloud Run. La pipeline scrive inoltre le voci di log in Cloud Logging e registra le metriche in Cloud Monitoring.

Architettura

Il seguente diagramma offre una panoramica dell'architettura:

Architettura della pipeline di analisi dei malware.

L'architettura mostra le seguenti pipeline:

  • Pipeline di analisi dei file caricati dall'utente, che verifica se un file caricato contiene malware.
  • La pipeline di aggiornamento del mirroring del database di malware ClamAV, che mantiene un mirror aggiornato del database del malware utilizzato da ClamAV.

Le pipeline sono descritte in maggiore dettaglio nelle sezioni seguenti.

Pipeline di scansione dei file caricati dall'utente

La pipeline di analisi dei file funziona nel seguente modo:

  1. Gli utenti finali caricano i propri file nel bucket Cloud Storage non scansionato.
  2. Il servizio Eventarc rileva questo evento di caricamento e indica al servizio Cloud Run questo nuovo file.
  3. Il servizio Cloud Run scarica il nuovo file dal bucket Cloud Storage non analizzato e lo passa allo strumento di scansione malware ClamAV.
  4. A seconda del risultato della scansione per il rilevamento di malware, il servizio esegue una delle seguenti azioni:
    • Se ClamAV dichiara che il file è pulito, viene spostato dal bucket Cloud Storage non analizzato nel bucket Cloud Storage pulito.
    • Se ClamAV dichiara che il file contiene malware, il file viene spostato dal bucket Cloud Storage non analizzato nel 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 mirroring del database ClamAV Malware

La pipeline di aggiornamento del mirroring del database ClamAV Malware mantiene un Mirror locale privato aggiornato del database in Cloud Storage. Ciò garantisce che al database pubblico ClamAV venga eseguito l'accesso solo una volta per aggiornamento per scaricare i file di aggiornamenti differenziali più piccoli e non all'intero database, il che impedisce qualsiasi limitazione della frequenza.

Questa pipeline funziona come segue:

  1. Un job Cloud Scheduler è configurato per l'attivazione ogni due ore, equivalente all'intervallo di controllo degli aggiornamenti predefinito utilizzato dal servizio ClamAV Freshclam. Questo job invia una richiesta HTTP POST al servizio Cloud Run indicandogli di aggiornare il mirroring del database del malware.
  2. L'istanza Cloud Run copia il mirroring del database di malware dal bucket Cloud Storage al file system locale.
  3. L'istanza esegue quindi lo strumento ClamAV CVDUpdate, che scarica tutti gli aggiornamenti differenziali disponibili e li applica al mirroring del database.
  4. Quindi, copia il mirroring del database di malware aggiornato nel bucket Cloud Storage.

All'avvio, il servizio ClamAV refreshclam in esecuzione nell'istanza Cloud Run scarica il database di malware da Cloud Storage. Durante il runtime, il servizio controlla e scarica regolarmente eventuali 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 una scansione efficace, lo strumento di scansione malware ClamAV deve mantenere un database aggiornato delle firme malware. Il servizio ClamAV viene eseguito utilizzando Cloud Run, un servizio stateless. All'avvio di un'istanza del servizio, ClamAV deve sempre scaricare il database di malware completo più recente, con dimensioni di diverse centinaia di megabyte.

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

Inoltre, Cloud Run utilizza un pool condiviso di indirizzi IP esterni. Di conseguenza, la CDN considera i download da istanze di scansione antimalware di diversi progetti come provenienti da un singolo indirizzo e attivano 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, vedi Eseguire il deployment della scansione automatica di malware per i file caricati su Cloud Storage.

Passaggi successivi