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

Last reviewed 2023-05-17 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 die Effizienz verbessern.

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 scannt. 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:

  • Vom Nutzer hochgeladene Dateiscan-Pipeline, die prüft, ob eine hochgeladene Datei Malware enthält
  • ClamAV-Malware-Datenbank-Aktualisierungspipeline, die einen aktuellen Spiegel der von ClamAV verwendeten Malware-Datenbank verwaltet.

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

Vom Nutzer hochgeladene Pipeline zum Scannen von Dateien

Die Dateiscan-Pipeline funktioniert so:

  1. Endnutzer laden ihre Dateien in den nicht gescannten Cloud Storage-Bucket hoch.
  2. Der Eventarc-Dienst erfasst dieses Uploadereignis und teilt dem Cloud Run-Dienst mit, dass diese neue Datei verwendet wird.
  3. Der Cloud Run-Dienst lädt die neue Datei aus dem ungescannten Cloud Storage-Bucket herunter und übergibt sie an den ClamAV-Malware-Scanner.
  4. Je nach Ergebnis des Malwarescans führt der Dienst eine der folgenden Aktionen aus:
    • Wenn ClamAV deklariert, dass die Datei sauber ist, wird sie aus dem ungescannten Cloud Storage-Bucket in den sauberen Cloud Storage-Bucket verschoben.
    • Wenn ClamAV deklariert, dass die Datei Malware enthält, wird sie aus dem ungescannten 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 Aktionen ausführen können.

Pipeline zur Spiegelung der ClamAV-Malware-Datenbank

Die ClamAV-Malware-Datenbank-Aktualisierungspipeline sorgt für einen aktuellen privaten lokalen Spiegel der Datenbank in Cloud Storage. Dadurch wird sichergestellt, dass auf die öffentliche ClamAV-Datenbank nur einmal pro Aktualisierung zugegriffen wird, um die kleineren differenziellen Aktualisierungsdateien herunterzuladen, und nicht auf die vollständige Datenbank, wodurch eine Ratenbegrenzung verhindert wird.

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 Updateprüfintervall, das vom ClamAV-freshclam-Dienst verwendet wird. Dieser Job stellt eine HTTP-POST-Anfrage an den Cloud Run-Dienst, der ihn anweist, die Malware-Datenbankspiegelung zu aktualisieren.
  2. Die Cloud Run-Instanz kopiert die Malware-Datenbankspiegelung aus dem Cloud Storage-Bucket in das lokale Dateisystem.
  3. Die Instanz führt dann das ClamAV CVDUpdate-Tool aus, das alle verfügbaren differenziellen Aktualisierungen herunterlädt und auf die Datenbankspiegelung anwendet.
  4. Anschließend wird die aktualisierte Malware-Datenbankspiegelung in den Cloud Storage-Bucket kopiert.

Beim Start lädt der in der Cloud Run-Instanz ausgeführte ClamAV-Neustart die Malware-Datenbank aus Cloud Storage herunter. Während der Laufzeit überprüft der Dienst auch regelmäßig verfügbare Datenbankaktualisierungen aus dem Cloud Storage-Bucket und lädt sie 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 betrieblicher Effizienz entspricht.

Zuverlässigkeit

Für einen effektiven Scan muss der ClamAV-Malware-Scanner eine aktuelle Datenbank mit Malwaresignaturen 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 Malware-Datenbank herunterladen, die mehrere hundert Megabyte groß ist.

Die öffentliche Malware-Datenbank für ClamAV wird in einem Content Distribution Network (CDN) gehostet, was diese Downloads begrenzt. Wenn mehrere Instanzen gestartet werden und versuchen, die vollständige Datenbank herunterzuladen, kann eine 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 wird. Außerdem wird das Herunterladen von Malware-Datenbankupdates verhindert.

Außerdem verwendet Cloud Run einen freigegebenen Pool externer IP-Adressen. Daher werden Downloads von den Malware-Scaninstanzen verschiedener Projekte vom CDN als von einer einzelnen Adresse stammend angezeigt und lösen auch den Block aus.

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.

Operative Effizienz

Um logbasierte Warnungen für infizierte Dateien auszulösen, können Sie Logeinträge aus Logging verwenden. Das Einrichten dieser Benachrichtigungen wird in dieser Architektur jedoch nicht behandelt.

Bereitstellung

Informationen zum Bereitstellen dieser Architektur finden Sie unter Automatisches Scannen von Malware für Dateien, die in Cloud Storage hochgeladen werden.

Nächste Schritte