In diesem Dokument wird beschrieben, wie Sie die Architektur unter Malware-Scans für Dateien automatisieren, die in Cloud Storage hochgeladen werden bereitstellen.
In diesem Bereitstellungsleitfaden wird davon ausgegangen, dass Sie mit den grundlegenden Funktionen der folgenden Technologien vertraut sind:
Architektur
Das folgende Diagramm zeigt die Bereitstellungsarchitektur, die Sie in diesem Dokument erstellen.
Das Diagramm zeigt die folgenden zwei Pipelines, die von dieser Architektur verwaltet werden:
- Pipeline zum Scannen von 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.
Weitere Informationen zur Architektur finden Sie unter Malware-Scans für Dateien automatisieren, die in Cloud Storage hochgeladen werden.
Ziele
Spiegelung der ClamAV-Malware-Definitionsdatenbank in einem Cloud Storage-Bucket erstellen.
Cloud Run-Dienst mit den folgenden Funktionen erstellen:
- Dateien in einem Cloud Storage-Bucket auf Malware mithilfe von ClamAV scannen und gescannte Dateien in saubere Buckets oder Quarantäne-Buckets auf Basis des Scanergebnisses verschieben.
- Gespiegelte ClamAV-Malware-Definitionsdatenbank in Cloud Storage verwalten
Erstellen eines Eventarc-Triggers um den Malwarescan-Dienst auszulösen, wenn eine Datei in Cloud Storage hochgeladen wird.
Erstellen Sie einen Cloud Scheduler-Job, um den Malwarescan-Dienst auszulösen, um die Spiegelung der Malware-Definitionsdatenbank in Cloud Storage zu aktualisieren.
Kosten
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.
Hinweis
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Cloud Run, Eventarc, Logging, Cloud Scheduler, Pub/Sub, and Cloud Build APIs.
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
In dieser Bereitstellung führen Sie alle Befehle über Cloud Shell aus.
Umgebung einrichten
In diesem Abschnitt weisen Sie Einstellungen für Werte zu, die in der gesamten Bereitstellung verwendet werden, z. B. Regionen und Zonen.
In dieser Bereitstellung verwenden Sie us-central1
als Region für den Cloud Run-Dienst und us
als Speicherort für den Eventarc-Trigger und Cloud Storage-Buckets.
Legen Sie in Cloud Shell gängige Shell-Variablen fest, einschließlich Region und Standort:
REGION=us-central1 LOCATION=us PROJECT_ID=PROJECT_ID SERVICE_NAME="malware-scanner" SERVICE_ACCOUNT="${SERVICE_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"
Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID.Initialisieren Sie die
gcloud
-Umgebung mit Ihrer Projekt-ID:gcloud config set project "${PROJECT_ID}"
Erstellen Sie drei Cloud Storage-Buckets mit eindeutigen Namen:
gcloud storage buckets create "gs://unscanned-${PROJECT_ID}" --location="${LOCATION}" gcloud storage buckets create "gs://quarantined-${PROJECT_ID}" --location="${LOCATION}" gcloud storage buckets create "gs://clean-${PROJECT_ID}" --location="${LOCATION}"
${PROJECT_ID}
wird verwendet, um sicherzustellen, dass die Bucket-Namen eindeutig sind.Diese drei Buckets enthalten die hochgeladenen Dateien in verschiedenen Phasen der Pipeline zum Scannen von Dateien:
unscanned-PROJECT_ID
: Enthält Dateien, bevor sie gescannt werden. Die Nutzer laden ihre Dateien in diesen Bucket hoch.quarantined-PROJECT_ID
: Enthält Dateien, die vom Malwarescanner gescannt wurden und Malware enthalten.clean-PROJECT_ID
: Enthält Dateien, die vom Malwarescanner gescannt wurden und nicht infiziert sind.
Erstellen Sie einen vierten Cloud Storage-Bucket:
gcloud storage buckets create "gs://cvd-mirror-${PROJECT_ID}" --location="${LOCATION}"
${PROJECT_ID}
wird verwendet, damit der Bucket-Name eindeutig ist.Dieser Bucket
cvd-mirror-PROJECT_ID
wird verwendet, um eine lokale Spiegelung der Malware-Definitionsdatenbank zu verwalten. Dadurch wird verhindert, dass die Ratenbegrenzung vom ClamAV-CDN ausgelöst wird.
Dienstkonto für den Malwarescanner-Dienst einrichten
In diesem Abschnitt erstellen Sie ein Dienstkonto, das für den Malwarescanner-Dienst verwendet werden soll. Anschließend weisen Sie dem Dienstkonto die entsprechenden Rollen zu, damit es Berechtigungen zum Lesen und Schreiben in den Cloud Storage-Buckets hat. Die Rollen sorgen dafür, dass das Konto nur minimale Berechtigungen und nur Zugriff auf die benötigten Ressourcen hat.
Erstellen Sie das Dienstkonto
malware-scanner
:gcloud iam service-accounts create ${SERVICE_NAME}
Weisen Sie den Buckets die Rolle „Objektadministrator“ zu. Die Rolle erlaubt dem Dienst Dateien aus dem ungescannten Bucket zu lesen und zu löschen sowie Dateien in die unter Quarantäne gestellten und sauberen Buckets zu schreiben.
gcloud storage buckets add-iam-policy-binding "gs://unscanned-${PROJECT_ID}" \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role=roles/storage.objectAdmin gcloud storage buckets add-iam-policy-binding "gs://clean-${PROJECT_ID}" \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role=roles/storage.objectAdmin gcloud storage buckets add-iam-policy-binding "gs://quarantined-${PROJECT_ID}" \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role=roles/storage.objectAdmin gcloud storage buckets add-iam-policy-binding "gs://cvd-mirror-${PROJECT_ID}" \ --member="serviceAccount:${SERVICE_ACCOUNT}" --role=roles/storage.objectAdmin
Weisen Sie die Rolle „Messwert-Autor“ zu, mit der der Dienst Messwerte in Monitoring schreiben kann:
gcloud projects add-iam-policy-binding \ "${PROJECT_ID}" \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role=roles/monitoring.metricWriter
Malwarescanner-Dienst in Cloud Run erstellen
In diesem Abschnitt stellen Sie den Malwarescanner-Dienst in Cloud Run bereit. Der Dienst wird in einem Docker-Container ausgeführt, der Folgendes enthält:
- Eine
Dockerfile
zum Erstellen eines Container-Images mit dem Dienst, der Node.js-Laufzeit, dem Google Cloud SDK und ClamAV-Binärdateien. - Die Node.js-Dateien für den Cloud Run-Dienst für Malwarescanner.
- Eine
config.json
-Konfigurationsdatei zur Angabe Ihrer Cloud Storage-Bucket-Namen. - Ein
updateCvdMirror.sh
-Shell-Skript zum Aktualisieren der ClamAV-Malware-Definitionsdatenbank in Cloud Storage. - Ein
cloud-run-proxy
-Dienst als Proxy fürfreshclam
-HTTP-Anfragen, die authentifizierten Zugriff auf Cloud Storage APIs bieten. - Ein
bootstrap.sh
-Shell-Skript zum Ausführen der erforderlichen Dienste beim Starten der Instanz.
So stellen Sie den Dienst bereit:
Klonen Sie in Cloud Shell das GitHub-Repository, das die Codedateien enthält:
git clone https://github.com/GoogleCloudPlatform/docker-clamav-malware-scanner.git
Wechseln Sie in das Verzeichnis
cloudrun-malware-scanner
:cd docker-clamav-malware-scanner/cloudrun-malware-scanner
Bearbeiten Sie die Konfigurationsdatei
config.json
, um die von Ihnen erstellten Cloud Storage-Buckets anzugeben. Da die Bucket-Namen auf der Projekt-ID basieren, können Sie einen Such- und Ersetzungsvorgang verwenden:sed "s/-bucket-name/-${PROJECT_ID}/" config.json.tmpl > config.json
Sie können die aktualisierte Konfigurationsdatei aufrufen:
cat config.json
Führen Sie eine erste Population der gespiegelten ClamAV-Malware-Datenbank in Cloud Storage durch:
python3 -m venv pyenv . pyenv/bin/activate pip3 install crcmod cvdupdate ./updateCvdMirror.sh "cvd-mirror-${PROJECT_ID}" deactivate
Der Befehl führt eine lokale Installation des
CVDUpdate
-Tools aus und verwendet es zum Herunterladen der Malware-Datenbank. Der Befehl lädt dann die Datenbank in den zuvor erstellten Bucketcvd-mirror-PROJECT_ID
hoch.Sie können den Inhalt des gespiegelten Buckets prüfen:
gcloud storage ls "gs://cvd-mirror-${PROJECT_ID}/cvds"
Der Bucket sollte mehrere CVD-Dateien mit der vollständigen Malware-Datenbank, mehrere
.cdiff
-Dateien mit den differenziellen Aktualisierungen des Tages und zwei.json
-Dateien mit Konfigurations- und Statusinformationen enthalten.Erstellen und stellen Sie den Cloud Run-Dienst mit dem Dienstkonto bereit, das Sie zuvor erstellt haben:
gcloud beta run deploy "${SERVICE_NAME}" \ --source . \ --region "${REGION}" \ --no-allow-unauthenticated \ --memory 4Gi \ --cpu 1 \ --concurrency 20 \ --min-instances 1 \ --max-instances 5 \ --no-cpu-throttling \ --cpu-boost \ --service-account="${SERVICE_ACCOUNT}"
Der Befehl erstellt eine Cloud Run-Instanz mit 1 vCPU und 4 GiB RAM. Diese Größe ist für diese Bereitstellung akzeptabel. In einer Produktionsumgebung sollten Sie jedoch eine größere CPU- und Speichergröße für die Instanz und einen größeren
--max-instances
-Parameter auswählen. Welche Ressourcen Sie möglicherweise benötigen, hängt davon ab, wie viel Traffic der Dienst verarbeiten muss.Der Befehl enthält die folgenden Spezifikationen:
- Der Parameter
--concurrency
gibt die Anzahl der gleichzeitigen Anfragen an, die jede Instanz verarbeiten kann. - Mit dem Parameter
--no-cpu-throttling
kann die Instanz Vorgänge im Hintergrund ausführen, z. B. Malware-Definitionen aktualisieren. - Der Parameter
--cpu-boost
verdoppelt die Anzahl der vCPUs beim Start der Instanz, um die Startlatenz zu reduzieren. - Der Parameter
--min-instances 1
behält mindestens eine aktive Instanz bei, da die Startzeit für jede Instanz relativ hoch ist. - Der Parameter
--max-instances 5
verhindert, dass der Dienst zu hoch skaliert wird.
- Der Parameter
Geben Sie bei Aufforderung
Y
ein, um den Dienst zu erstellen und bereitzustellen. Build und Bereitstellung dauern etwa zehn Minuten. Nach Abschluss wird die folgende Meldung angezeigt:Service [malware-scanner] revision [malware-scanner-UNIQUE_ID] has been deployed and is serving 100 percent of traffic. Service URL: https://malware-scanner-UNIQUE_ID.a.run.app
Speichern Sie den Wert
Service URL
aus der Ausgabe des Bereitstellungsbefehls in einer Shell-Variablen. Sie verwenden den Wert später, wenn Sie einen Cloud Scheduler-Job erstellen.SERVICE_URL="SERVICE_URL"
Führen Sie den folgenden Befehl aus, um den ausgeführten Dienst und die ClamAV-Version zu prüfen:
curl -D - -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
${SERVICE_URL}
Der Cloud Run-Dienst erfordert, dass alle Aufrufe authentifiziert werden und die authentifizierenden Identitäten die Berechtigung run.routes.invoke
für den Dienst haben. Die Berechtigung fügen Sie im nächsten Abschnitt hinzu.
Cloud Storage-Trigger für Eventarc erstellen
In diesem Abschnitt fügen Sie Berechtigungen hinzu, damit Eventarc Cloud Storage-Ereignisse erfassen kann und erstellen einen Trigger, um diese Ereignisse an den Cloud Run-Dienst malware-scanner
zu senden.
Wenn Sie ein vorhandenes Projekt verwenden, das vor dem 8. April 2021 erstellt wurde, fügen Sie dem Pub/Sub-Dienstkonto die Rolle
iam.serviceAccountTokenCreator
hinzu:PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)") PUBSUB_SERVICE_ACCOUNT="service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member="serviceAccount:${PUBSUB_SERVICE_ACCOUNT}"\ --role='roles/iam.serviceAccountTokenCreator'
Diese Rolle ist nur für ältere Projekte erforderlich und ermöglicht Pub/Sub, den Cloud Run-Dienst aufzurufen.
Weisen Sie in Cloud Shell dem Cloud Storage-Dienstkonto die Rolle „Pub/Sub-Publisher“ zu:
STORAGE_SERVICE_ACCOUNT=$(gcloud storage service-agent --project="${PROJECT_ID}") gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member "serviceAccount:${STORAGE_SERVICE_ACCOUNT}" \ --role "roles/pubsub.publisher"
Erlauben Sie dem Dienstkonto
malware-scanner
den Cloud Run-Dienst aufzurufen und als Eventarc-Ereignisempfänger zu fungieren:gcloud run services add-iam-policy-binding "${SERVICE_NAME}" \ --region="${REGION}" \ --member "serviceAccount:${SERVICE_ACCOUNT}" \ --role roles/run.invoker gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ --member "serviceAccount:${SERVICE_ACCOUNT}" \ --role "roles/eventarc.eventReceiver"
Erstellen Sie einen Eventarc-Trigger, um das endgültige Objektereignis im nicht gescannten Cloud Storage-Bucket zu erfassen und an Ihren Cloud Run-Dienst zu senden. Der Trigger verwendet das Dienstkonto
malware-scanner
zur Authentifizierung:BUCKET_NAME="unscanned-${PROJECT_ID}" gcloud eventarc triggers create "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \ --destination-run-service="${SERVICE_NAME}" \ --destination-run-region="${REGION}" \ --location="${LOCATION}" \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=${BUCKET_NAME}" \ --service-account="${SERVICE_ACCOUNT}"
Wenn Sie einen der folgenden Fehler erhalten, warten Sie eine Minute und führen Sie den Befehl noch einmal aus:
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: The request was invalid: Bucket "unscanned-PROJECT_ID" was not found. Please verify that the bucket exists.
ERROR: (gcloud.eventarc.triggers.create) FAILED_PRECONDITION: Invalid resource state for "": Permission denied while using the Eventarc Service Agent. If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent. Otherwise, verify that it has Eventarc Service Agent role.
Ändern Sie die Frist für die Nachrichtenbestätigung in dem zugrunde liegenden Pub/Sub-Abo, das vom Eventarc-Trigger verwendet wird, auf zwei Minuten. Der Standardwert von zehn Sekunden ist zu kurz für große Dateien oder hohe Lasten.
SUBSCRIPTION_NAME=$(gcloud eventarc triggers describe \ "trigger-${BUCKET_NAME}-${SERVICE_NAME}" \ --location="${LOCATION}" \ --format="get(transport.pubsub.subscription)") gcloud pubsub subscriptions update "${SUBSCRIPTION_NAME}" --ack-deadline=120
Der Trigger wird zwar sofort erstellt, es kann jedoch bis zu zehn Minuten dauern, bis er wirksam wird und Ereignisse filtert.
Cloud Scheduler-Job erstellen, um Updates der gespiegelten ClamAV-Datenbank auszulösen
Erstellen Sie einen Cloud Scheduler-Job, der eine HTTP-
POST
-Anfrage im Cloud Run-Dienst mit einem Befehl ausführt, um die gespiegelte Malware-Definitionsdatenbank zu aktualisieren. Damit nicht zu viele Clients denselben Zeitraum verwenden, muss ClamAV den Job in einer zufälligen Minute zwischen 3 und 57 planen, wobei Vielfache von 10 vermieden werden sollten.while : ; do # set MINUTE to a random number between 3 and 57 MINUTE="$((RANDOM%55 + 3))" # exit loop if MINUTE isn't a multiple of 10 [[ $((MINUTE % 10)) != 0 ]] && break done gcloud scheduler jobs create http \ "${SERVICE_NAME}-mirror-update" \ --location="${REGION}" \ --schedule="${MINUTE} */2 * * *" \ --oidc-service-account-email="${SERVICE_ACCOUNT}" \ --uri="${SERVICE_URL}" \ --http-method=post \ --message-body='{"kind":"schedule#cvd_update"}' \ --headers="Content-Type=application/json"
Das
--schedule
-Befehlszeilenargument definiert, wann der Job im Unix-Cron-Stringformat ausgeführt wird. Der angegebene Wert gibt an, dass der Job alle zwei Stunden zur genau zufällig generierten Minute ausgeführt werden soll.
Dieser Job aktualisiert nur das gespiegelte ClamAV in Cloud Storage. Der ClamAV-Refresh-Daemon in jeder Instanz von Cloud Run prüft den Spiegel alle 30 Minuten auf neue Definitionen und aktualisiert den ClamAV-Daemon.
Pipeline durch Hochladen von Dateien testen
Zum Testen der Pipeline laden Sie eine saubere Datei (ohne Malware) und eine Testdatei hoch, die eine infizierte Datei nachahmt:
Erstellen Sie eine Beispieltextdatei oder verwenden Sie eine vorhandene saubere Datei, um die Pipeline-Prozesse zu testen.
Kopieren Sie in Cloud Shell die Beispieldatendatei in den ungescannten Bucket:
gcloud storage cp FILENAME "gs://unscanned-${PROJECT_ID}"
Ersetzen Sie
FILENAME
durch den Namen der sauberen Textdatei. Der Malwarescanner-Dienst prüft jedes Dokument und verschiebt es in einen entsprechenden Bucket. Diese Datei wird in den sauberen Bucket verschoben.Warten Sie ein paar Sekunden, bis die Pipeline die Datei verarbeitet hat. Prüfen Sie dann, ob sich die verarbeitete Datei im sauberen Bucket befindet:
gcloud storage ls "gs://clean-${PROJECT_ID}" --recursive
Sie können prüfen, ob die Datei aus dem ungescannten Bucket entfernt wurde:
gcloud storage ls "gs://unscanned-${PROJECT_ID}" --recursive
Laden Sie eine Datei mit dem Namen
eicar-infected.txt
, die die EICAR-Standard-Anti-Malware-Testsignatur enthält, in den nicht gescannten Bucket:echo -e 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' \ | gcloud storage cp - "gs://unscanned-${PROJECT_ID}/eicar-infected.txt"
Dieser Textstring hat eine Signatur, die Malwarescanner für Testzwecke auslöst. Diese Testdatei ist ein weit verbreiteter Test, bei dem es sich nicht um Malware handelt und die für Ihre Workstation harmlos ist. Wenn Sie versuchen, eine Datei mit diesem String auf einem Computer mit einem installierten Malwarescanner zu erstellen, können Sie eine Warnung auslösen.
Warten Sie einige Sekunden und prüfen Sie dann im Quarantäne-Bucket, ob die Datei die Pipeline erfolgreich durchlaufen hat.
gcloud storage ls "gs://quarantined-${PROJECT_ID}" --recursive
Der Dienst protokolliert auch einen Logging-Logeintrag, wenn eine mit Malware infizierte Datei erkannt wird.
Sie können prüfen, ob die Datei aus dem ungescannten Bucket entfernt wurde:
gcloud storage ls "gs://unscanned-${PROJECT_ID}" --recursive
Aktualisierungsmechanismus für Datenbankdefinitionen für Malware-Definitionen testen
Lösen Sie in Cloud Shell die Prüfung auf Aktualisierungen aus. Erzwingen Sie dazu die Ausführung des Cloud Scheduler-Jobs:
gcloud scheduler jobs run "${SERVICE_NAME}-mirror-update" --location="${REGION}"
Die Ergebnisse dieses Befehls werden nur in den detaillierten Logs angezeigt.
Dienst überwachen
Sie können den Dienst mit Cloud Logging und Cloud Monitoring überwachen.
Detaillierte Logs ansehen
Rufen Sie in der Google Cloud Console die Seite "Log-Explorer" von Cloud Logging auf.
Wenn der Filter Logfelder nicht angezeigt wird, klicken Sie auf Logfelder.
Klicken Sie im Filter Logfelder auf Cloud Run Revision.
Klicken Sie im Abschnitt Servicename des Filters Logfelder auf Malware-Scanner.
Die Ergebnisse der Logabfrage enthalten die Logs des Dienstes, darunter mehrere Zeilen mit den Scananfragen und dem Status der zwei hochgeladenen Dateien:
Scan request for gs://unscanned-PROJECT_ID/FILENAME, (##### bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/FILENAME: CLEAN (##### bytes in #### ms)
...
Scan request for gs://unscanned-PROJECT_ID/eicar-infected.txt, (69 bytes) scanning with clam ClamAV CLAMAV_VERSION_STRING
Scan status for gs://unscanned-PROJECT_ID/eicar-infected.txt: INFECTED stream: Eicar-Signature FOUND (69 bytes in ### ms)
Die Ausgabe zeigt die ClamAV-Version und die Überarbeitung der Malware-Datenbanksignatur sowie den Malware-Namen für die infizierte Testdatei. Sie können diese Logmeldungen verwenden, um Warnungen für den Fall von Malware oder für Fehler beim Scannen einzurichten.
Die Ausgabe zeigt auch die Aktualisierungslogs für Malware-Definitionen:
Starting CVD Mirror update
CVD Mirror update check complete. output: ...
Wenn der Spiegel aktualisiert wurde, enthält die Ausgabe zusätzliche Zeilen:
CVD Mirror updated: DATE_TIME - INFO: Downloaded daily.cvd. Version: VERSION_INFO
Freshclam-Update-Logs werden alle 30 Minuten angezeigt:
DATE_TIME -> Received signal: wake up
DATE_TIME -> ClamAV update process started at DATE_TIME
DATE_TIME -> daily.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> main.cvd database is up-to-date (version: VERSION_INFO)
DATE_TIME -> bytecode.cvd database is up-to-date (version: VERSION_INFO)
Wenn die Datenbank aktualisiert wurde, sehen die Logzeilen für Aktualität in etwa so aus:
DATE_TIME -> daily.cld updated (version: VERSION_INFO)
Messwerte ansehen
Der Dienst generiert die folgenden Messwerte zu Monitoring- und Benachrichtigungszwecken:
- Anzahl der verarbeiteten Bereinigungsdateien:
custom.googleapis.com/opencensus/malware-scanning/clean_files
- Anzahl der verarbeiteten infizierten Dateien:
custom.googleapis.com/opencensus/malware-scanning/infected_files
- Zeit, die für das Scannen von Dateien aufgewendet wurde:
custom.googleapis.com/opencensus/malware-scanning/scan_duration
- Gesamtzahl gescannter Byte:
custom.googleapis.com/opencensus/malware-scanning/bytes_scanned
- Anzahl der fehlgeschlagenen Malware-Scans:
custom.googleapis.com/opencensus/malware-scanning/scans_failed
- Anzahl der Überprüfungen der CVD-Mirror-Aktualisierung:
custom.googleapis.com/opencensus/malware-scanning/cvd-mirror-updates
Sie können diese Messwerte im Metrics Explorer von Cloud Monitoring ansehen:
Rufen Sie in der Google Cloud Console die Cloud Monitoring-Seite "Metrics Explorer" auf.
Klicken Sie auf das Feld Messwert auswählen und geben Sie den Filterstring
malware
ein.Wählen Sie den Messwert OpenCensus/Malware-Scanning/clean_files aus. Das Diagramm zeigt einen Datenpunkt, der angibt, wann die saubere Datei gescannt wurde.
Sie können Messwerte verwenden, um die Pipeline zu überwachen und Warnungen zu erstellen, wenn Malware erkannt wird oder Dateien nicht verarbeitet werden können.
Die generierten Messwerte haben die folgenden Labels, die Sie für die Filterung und Aggregation verwenden können, um detaillierte Informationen mit Metrics Explorer anzuzeigen:
source_bucket
destination_bucket
clam_version
cloud_run_revision
Mehrere Buckets verarbeiten
Der Malwarescanner-Dienst kann Dateien aus mehreren Quell-Buckets scannen und die Dateien an separate, unter Quarantäne gestellte Buckets senden. Obwohl diese erweiterte Konfiguration nicht im Rahmen dieser Bereitstellung ist, finden Sie hier eine Zusammenfassung der erforderlichen Schritte:
Erstellen Sie nicht gescannte, bereinigte und unter Quarantäne gestellte Cloud Storage-Buckets mit eindeutigen Namen.
Weisen Sie dem Dienstkonto
malware-scanner
in jedem Bucket die entsprechenden Rollen zu.Bearbeiten Sie die Konfigurationsdatei
config.json
, um die Bucket-Namen für jede Konfiguration anzugeben:{ "buckets": [ { "unscanned": "unscanned-bucket-1-name", "clean": "clean-bucket-1-name", "quarantined": "quarantined-bucket-1-name" }, { "unscanned": "unscanned-bucket-2-name", "clean": "clean-bucket-2-name", "quarantined": "quarantined-bucket-2-name" } ] "ClamCvdMirrorBucket": "cvd-mirror-bucket-name" }
Für jeden nicht gescannten Bucket erstellen Sie einen Eventarc-Trigger. Erstellen Sie für jeden Bucket einen eindeutigen Triggernamen.
Der Cloud Storage-Bucket muss sich im selben Projekt und in derselben Region wie der Eventarc-Trigger befinden.
Bereinigen
Im folgenden Abschnitt wird erläutert, wie Sie zukünftige Gebühren für das Google Cloud-Projekt vermeiden können, das Sie in dieser Bereitstellung verwendet haben.
Google Cloud-Projekt löschen
Damit Ihrem Google Cloud-Konto die in dieser Bereitstellung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie das Google Cloud-Projekt löschen.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Dokumentation zu Cloud Storage ansehen
- Weitere Referenzarchitekturen, Diagramme und Best Practices finden Sie im Cloud-Architekturcenter.