Malware-Scans für Dateien automatisieren, die in Cloud Storage hochgeladen werden

Last reviewed 2024-07-16 UTC

In dieser Referenzarchitektur wird gezeigt, wie Sie eine ereignisgesteuerte Pipeline erstellen, mit der Sie das Prüfen von Dateien auf Malware wie Trojaner, Viren und anderen schädlichen Code automatisieren können. Ein manuelles Prüfen der großen Anzahl von Dateien, die auf Cloud Storage hochgeladen werden, ist für die meisten Anwendungen zu zeitaufwendig. Durch die Automatisierung des Prozesses können Sie Zeit sparen und effizienter arbeiten.

Die Pipeline in dieser Architektur verwendet Google Cloud-Produkte zusammen mit der Open-Source-Antivirus-Engine ClamAV. Sie können auch jede andere Anti-Malware-Engine verwenden, die in Linux-Containern On-Demand-Scans durchführt. In dieser Architektur wird ClamAV in einem Docker-Container ausgeführt, der in Cloud Run gehostet wird. Die Pipeline schreibt auch Logeinträge in Cloud Logging und zeichnet Messwerte in Cloud Monitoring auf.

Architektur

Das folgende Diagramm gibt einen Überblick über die Architektur:

Architektur der Malwarescan-Pipeline

Die Architektur zeigt die folgenden Pipelines:

  • Pipeline zum Scannen von von Nutzern hochgeladenen Dateien, die prüft, ob eine hochgeladene Datei Malware enthält.
  • Aktualisierte Pipeline der gespiegelten Malware-Datenbank von ClamAV, die eine aktuelle Spiegelung der von ClamAV verwendeten Malware-Datenbank bereitstellt.

Die Pipelines werden in den folgenden Abschnitten ausführlicher beschrieben.

Pipeline zum Scannen von von Nutzern hochgeladenen Dateien

Die Pipeline zum Scannen von Dateien funktioniert so:

  1. Endnutzer laden ihre Dateien in den nicht gescannten Cloud Storage-Bucket hoch.
  2. Der Eventarc-Dienst erfasst dieses Uploadereignis und informiert den Cloud Run-Dienst über diese neue Datei.
  3. Der Cloud Run-Dienst lädt die neue Datei aus dem nicht gescannten Cloud Storage-Bucket herunter und übergibt sie an den ClamAV-Malware-Scanner.
  4. Je nach Ergebnis des Malware-Scans führt der Dienst eine der folgenden Aktionen aus:
    • Wenn ClamAV feststellt, dass die Datei sauber ist, wird sie aus dem nicht gescannten Cloud Storage-Bucket in den sauberen Cloud Storage-Bucket verschoben.
    • Wenn ClamAV deklariert, dass die Datei Malware enthält, wird sie aus dem nicht gescannten Cloud Storage-Bucket in den unter Quarantäne gestellten Cloud Storage-Bucket verschoben.
  5. Der Dienst meldet das Ergebnis dieser Aktionen an Logging und Monitoring, damit Administratoren Maßnahmen ergreifen können.

Aktualisierte Pipeline der gespiegelten ClamAV Malware-Datenbank

Die Aktualisierte Pipeline der gespiegelten Malware-Datenbank von ClamAV speichert eine aktuelle private lokale Spiegelung der Datenbank in Cloud Storage. So wird sichergestellt, dass nur einmal pro Aktualisierung auf die öffentliche ClamAV-Datenbank zugegriffen wird, um die kleineren Differenzialaktualisierungsdateien und nicht die vollständige Datenbank herunterzuladen. Dadurch wird eine Ratenbegrenzung verhindert.

Diese Pipeline funktioniert so:

  1. Ein Cloud Scheduler-Job ist so konfiguriert, dass er alle zwei Stunden ausgelöst wird. Dies entspricht dem standardmäßigen Aktualisierungsprüfintervall, das vom ClamAV-freshclam-Dienst verwendet wird. Dieser Job sendet eine HTTP-POST-Anfrage an den Cloud Run-Dienst, die ihn anweist, die gespiegelte Malware-Datenbank zu aktualisieren.
  2. Die Cloud Run-Instanz kopiert den gespiegelten Malware-Datenbank aus dem Cloud Storage-Bucket in das lokale Dateisystem.
  3. Die Instanz führt dann das Tool ClamAV CVDUpdate aus, das alle verfügbaren Differenzialupdates herunterlädt und auf den gespiegelten Datenbank anwendet.
  4. Anschließend wird der aktualisierte gespiegelte Malware-Datenbank wieder in den Cloud Storage-Bucket kopiert.

Beim Start lädt der in der Cloud Run-Instanz ausgeführte Dienst ClamAV freshclam die Malware-Datenbank aus Cloud Storage herunter. Während der Laufzeit prüft der Dienst auch regelmäßig auf verfügbare Datenbankaktualisierungen und lädt diese aus dem Cloud Storage-Bucket herunter.

Überlegungen zum Design

Die folgenden Richtlinien können Ihnen bei der Entwicklung einer Architektur helfen, die den Anforderungen Ihrer Organisation hinsichtlich Zuverlässigkeit, Kosten und betriebliche Effizienz entspricht.

Zuverlässigkeit

Für einen effektiven Scan muss der ClamAV-Malwarescanner eine aktuelle Datenbank mit Malware-Signaturen verwalten. Der ClamAV-Dienst wird mit Cloud Run ausgeführt, einem zustandslosen Dienst. Beim Start einer Instanz des Dienstes muss ClamAV immer die neueste vollständige Malwaredatenbank herunterladen, die mehrere Hundert Megabyte groß ist.

Die öffentliche Malware-Datenbank für ClamAV wird in einem Content Distribution Network (CDN) gehostet, das diese Downloads hinsichtlich der Rate begrenzt. Wenn mehrere Instanzen gestartet werden und versuchen, die vollständige Datenbank herunterzuladen, kann die Ratenbegrenzung ausgelöst werden. Dadurch wird die von Cloud Run verwendete externe IP-Adresse 24 Stunden lang blockiert. Dadurch wird verhindert, dass der ClamAV-Dienst gestartet und die Malware-Datenbank aktualisiert wird.

Außerdem verwendet Cloud Run einen freigegebenen Pool externer IP-Adressen. Daher werden Downloads von Malware-Scan-Instanzen verschiedener Projekte vom CDN als von einer einzigen Adresse stammend betrachtet und ebenfalls blockiert.

Kostenoptimierung

In dieser Architektur werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.

Betriebliche Effizienz

Zum Auslösen logbasierter Warnungen für infizierte Dateien können Sie Logeinträge aus Logging verwenden. Das Einrichten dieser Benachrichtigungen wird jedoch nicht in dieser Architektur besprochen.

Bereitstellung

Informationen zum Bereitstellen dieser Architektur finden Sie unter Automatisierte Malware-Scans für Dateien bereitstellen, die in Cloud Storage hochgeladen wurden.

Nächste Schritte