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

Last reviewed 2024-07-16 UTC

In dieser Referenzarchitektur erfahren Sie, 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 und die 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:

  • 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 Dateiprüfungspipeline 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 die Datei als virenfrei deklariert, wird sie aus dem nicht gescannten Cloud Storage-Bucket in den sauberen Cloud Storage-Bucket verschoben.
    • Wenn ClamAV feststellt, dass die Datei Malware enthält, wird sie aus dem nicht gescannten Cloud Storage-Bucket in den Quarantäne-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 Malware-Datenbank von ClamAV

Die Aktualisierte Pipeline der gespiegelten Malware-Datenbank von ClamAV verwaltet einen aktuellen privaten lokalen Spiegel der Datenbank in Cloud Storage. So wird sichergestellt, dass nur einmal pro Update auf die öffentliche ClamAV-Datenbank zugegriffen wird, um die kleineren Differenzial-Update-Dateien herunterzuladen, und nicht auf die vollständige Datenbank. 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. Das entspricht dem Standardintervall für die Aktualisierungsüberprüfung, 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 sucht der Dienst regelmäßig nach verfügbaren Datenbankupdates und lädt sie 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

Damit der ClamAV-Malware-Scanner effektiv scannen kann, muss er eine aktuelle Datenbank mit Malware-Signaturen verwalten. Der ClamAV-Dienst wird mit Cloud Run ausgeführt, einem zustandslosen Dienst. Beim Starten 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, 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

Sie können mit Logeinträgen aus Logging logbasierte Warnungen für infizierte Dateien auslösen. 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