Armis-Sicherheitslücken-Logs erfassen

Parserversion:2.0

Unterstützt in:

In diesem Dokument wird beschrieben, wie Sie Armis Vulnerabilities-Logs mit Google Cloud Functions in Google Security Operations aufnehmen. Der Parser wandelt Rohprotokolle zu Sicherheitslücken im JSON-Format in ein strukturiertes Format um, das dem Google SecOps UDM entspricht. Es werden verschiedene Felder aus dem Rohlog extrahiert, den entsprechenden UDM-Feldern zugeordnet, Datentypkonvertierungen durchgeführt und die Ausgabe für die Aufnahme in die Google SecOps-Plattform strukturiert.

Hinweis

Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:

  • Google SecOps-Instanz mit Kunden-ID und Anmeldedaten für das Dienstkonto
  • Privilegierter Zugriff auf die Armis Centrix-Plattform
  • Armis-API-Secret-Schlüssel und Server-URL
  • Zugriff auf Google Cloud mit Berechtigungen zum Erstellen von Cloud Functions-Funktionen, Secret Manager-Secrets und Cloud Scheduler-Jobs
  • Armis Asset Vulnerability Management (AVM)-Lizenz oder Modulzugriff

Google SecOps-Kundennummer abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Profile auf.
  3. Kopieren und speichern Sie die Kunden-ID aus dem Bereich Organisationsdetails.

Anmeldedaten für das Google SecOps-Dienstkonto abrufen

  1. Melden Sie sich in der Google SecOps-Konsole an.
  2. Rufen Sie die SIEM-Einstellungen > Collection Agents auf.
  3. Laden Sie die Ingestion Authentication File (JSON-Datei des Dienstkontos) herunter.
  4. Speichern Sie die Datei an einem sicheren Ort, da Sie sie in Google Secret Manager hochladen müssen.

Armis-API-Secret-Schlüssel abrufen

  1. Melden Sie sich auf der Armis Centrix-Plattform an.
  2. Gehen Sie zu den Einstellungen > API-Verwaltung.
  3. Klicken Sie auf Erstellen, wenn Sie einen neuen API-Secret-Schlüssel generieren müssen.
  4. Klicken Sie auf Anzeigen, um den geheimen Schlüssel aufzurufen.
  5. Kopieren Sie den geheimen Schlüssel und speichern Sie ihn sicher.

Google Secret Manager konfigurieren

In diesem Abschnitt wird beschrieben, wie Sie Google Secret Manager verwenden, um den für die Integration erforderlichen Dienstkontoschlüssel sicher zu speichern.

Google SecOps-Dienstkonto-Secret hinzufügen

  1. Melden Sie sich in der Google Cloud Console an.
  2. Gehen Sie zu Sicherheit > Secret Manager.
  3. Klicken Sie auf Secret erstellen.
  4. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen Namen für das Secret ein (z. B. secops-service-account).
    • Secret value (Geheimer Wert): Laden Sie die JSON-Datei des Google SecOps-Dienstkontos hoch, die Sie zuvor heruntergeladen haben, oder fügen Sie ihren Inhalt direkt ein.
  5. Klicken Sie auf Secret erstellen.
  6. Kopieren Sie die Ressourcen-ID des erstellten Secrets im folgenden Format:

    projects/{project_id}/secrets/{secret_id}/versions/{version_id}
    

Secret für den Armis API-Secret-Schlüssel hinzufügen

  1. Klicken Sie in Secret Manager auf Secret erstellen.
  2. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen Namen für das Secret ein (z. B. armis-api-secret).
    • Secret-Wert: Fügen Sie den Armis-API-Secret-Schlüssel ein, den Sie zuvor erhalten haben.
  3. Klicken Sie auf Secret erstellen.
  4. Kopieren Sie die Ressourcen-ID des erstellten Secrets im folgenden Format:

    projects/{project_id}/secrets/{secret_id}/versions/{version_id}`
    

Aufnahmeskript herunterladen und vorbereiten

  1. Rufen Sie das offizielle Google SecOps-Repository für Ingestion-Scripts unter https://github.com/chronicle/ingestion-scripts auf.
  2. Laden Sie den Inhalt des Verzeichnisses armis aus dem Repository herunter.
  3. Laden Sie das Verzeichnis common aus dem Repository herunter (erforderliche Abhängigkeit).
  4. Erstellen Sie auf Ihrem lokalen Computer ein neues Verzeichnis für die Bereitstellung der Cloud Function.
  5. Kopieren Sie den Inhalt der Verzeichnisse armis und common in Ihr Bereitstellungsverzeichnis.

Umgebungsvariablen konfigurieren

  1. Öffnen Sie die Datei .env.yml in einem Texteditor.
  2. Bearbeiten Sie die Datei mit der folgenden Konfiguration:

    CHRONICLE_CUSTOMER_ID: <YOUR_CUSTOMER_ID>
    CHRONICLE_REGION: "us"
    CHRONICLE_SERVICE_ACCOUNT: projects/{project_id}/secrets/{chronicle-secret-id}/versions/{version_id}
    CHRONICLE_NAMESPACE: <YOUR_NAMESPACE>
    POLL_INTERVAL: "10"
    ARMIS_SERVER_URL: https://<your-armis-instance>.armis.com
    ARMIS_API_SECRET_KEY: projects/{project_id}/secrets/{armis-secret-id}/versions/{version_id}
    HTTPS_PROXY: 
    CHRONICLE_DATA_TYPE: ARMIS_VULNERABILITIES
    
    • Ersetzen Sie die folgenden Werte:

      • <YOUR_CUSTOMER_ID>: Ihre Google SecOps-Kunden-ID
      • projects/{project_id}/secrets/{chronicle-secret-id}/versions/{version_id}: Der vollständige Ressourcen-ID-Pfad des Secrets Ihres Google SecOps-Dienstkontos aus dem Secret Manager.
      • <YOUR_NAMESPACE>: Optionaler Namespace für Google Security Operations-Logs (z. B. armis-vulnerabilities)
      • <your-armis-instance>: Die Subdomain Ihres Armis-Tenants (wenn Ihre URL beispielsweise https://company.armis.com lautet, verwenden Sie company)
      • projects/{project_id}/secrets/{armis-secret-id}/versions/{version_id}: Der vollständige Ressourcen-ID-Pfad Ihres Armis API-Secrets aus Secret Manager.

Cloud Functions-Funktion bereitstellen

  1. Öffnen Sie die Cloud Shell oder Ihr lokales Terminal mit installierter gcloud CLI.
  2. Rufen Sie das Verzeichnis auf, das die Dateien für das Aufnahmeskript enthält.
  3. Führen Sie dazu diesen Befehl aus:

    gcloud functions deploy armis-vulnerabilities-ingestion \
      --gen2 \
      --entry-point main \
      --trigger-http \
      --runtime python39 \
      --env-vars-file .env.yml \
      --memory 512MB \
      --timeout 3600s \
      --region us-central1
    

Mit Cloud Function (1. Generation) bereitstellen (Alternative)

  • Führen Sie dazu diesen Befehl aus:

    gcloud functions deploy armis-vulnerabilities-ingestion \
      --entry-point main \
      --trigger-http \
      --runtime python39 \
      --env-vars-file .env.yml \
      --memory 512MB \
      --timeout 540s \
      --region us-central1
    

Cloud Scheduler-Job erstellen

  1. Rufen Sie in der Google Cloud Console Cloud Scheduler auf.
  2. Klicken Sie auf Job erstellen.
  3. Geben Sie die folgenden Konfigurationsdetails an:
    • Name: Geben Sie einen Namen für den Job ein, z. B. armis-vulnerabilities-scheduler.
    • Region: Wählen Sie dieselbe Region wie Ihre Cloud Function aus (z. B. us-central1).
    • Häufigkeit: Geben Sie den Zeitplan in der Cron-Syntax ein, z. B. */10 * * * * für alle 10 Minuten.
    • Zeitzone: Wählen Sie Ihre bevorzugte Zeitzone aus, z. B. UTC.
  4. Klicken Sie auf Weiter.
  5. Wählen Sie HTTP als Zieltyp aus.
  6. Geben Sie die folgenden Konfigurationsdetails an:
    • URL: Rufen Sie in der Cloud Functions Console den Tab TRIGGER Ihrer Funktion auf und kopieren Sie die Trigger-URL. Fügen Sie ihn hier ein.
    • HTTP-Methode: Wählen Sie POST aus.
  7. Klicken Sie auf Auth-Header > OIDC-Token hinzufügen.
  8. Wählen Sie das Dienstkonto aus, das von Cloud Function verwendet wird.
  9. Klicken Sie auf Erstellen.

UDM-Zuordnungstabelle

Logfeld UDM-Zuordnung Logik
affectedDevicesCount read_only_udm.security_result.detection_fields.value Direkte Zuordnung, in String konvertiert.
attackComplexity read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
attackVector read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
availabilityImpact read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
avmRating read_only_udm.security_result.detection_fields.value Direkte Zuordnung.
Botnets read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Wenn mehrere Botnetze vorhanden sind, werden sie zu einem einzelnen String verkettet.
cisaDueDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
collection_time.nanos read_only_udm.metadata.event_timestamp.nanos Direkte Zuordnung.
collection_time.seconds read_only_udm.metadata.event_timestamp.seconds Direkte Zuordnung.
commonName read_only_udm.extensions.vulns.vulnerabilities.name Direkte Zuordnung.
confidentialityImpact read_only_udm.security_result.detection_fields.value Direkte Zuordnung.
cveUid read_only_udm.extensions.vulns.vulnerabilities.cve_id Direkte Zuordnung.
cvssScore read_only_udm.extensions.vulns.vulnerabilities.cvss_base_score Direkte Zuordnung, in Gleitkommazahl umgewandelt.
Beschreibung read_only_udm.metadata.description Direkte Zuordnung.
epssPercentile read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
epssScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
exploitabilityScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
firstReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.first_found Wird in einen Zeitstempel geparst. Es werden Formate mit und ohne Millisekunden unterstützt.
firstWeaponizedReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
hasRansomware read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
id read_only_udm.metadata.product_log_id Direkte Zuordnung.
impactScore read_only_udm.security_result.detection_fields.value Direkte Zuordnung, in String konvertiert.
integrityImpact read_only_udm.security_result.detection_fields.value Direkte Zuordnung.
isWeaponized read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
latestExploitUpdate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
numOfExploits read_only_udm.security_result.detection_fields.value Direkte Zuordnung, in String konvertiert.
numberOfThreatActors read_only_udm.security_result.detection_fields.value Direkte Zuordnung, in String konvertiert.
orgPriorityManualChangeReason read_only_udm.security_result.detection_fields.value Direkte Zuordnung.
orgPriorityManualChangedBy read_only_udm.principal.user.userid Direkte Zuordnung.
orgPriorityManualUpdateTime read_only_udm.principal.labels.value Direkte Zuordnung.
privilegesRequired read_only_udm.security_result.detection_fields.value Direkte Zuordnung.
publishedDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
reportedByGoogleZeroDays read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung, in String konvertiert.
Bereich read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
die Ausprägung read_only_udm.extensions.vulns.vulnerabilities.severity Entspricht CRITICAL, HIGH, MEDIUM, LOW basierend auf dem Wert. Der ursprüngliche Wert wird auch severity_details zugeordnet.
Status read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Direkte Zuordnung.
threatTags read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Wenn mehrere Threat-Tags vorhanden sind, werden sie zu einem einzelnen String verkettet.
userInteraction read_only_udm.about.labels.value Direkte Zuordnung.
vulnerabilities_matches read_only_udm.metadata.url_back_to_product Direkte Zuordnung.
read_only_udm.metadata.event_type Legen Sie diesen Wert auf „GENERIC_EVENT“ fest.
read_only_udm.metadata.product_name Legen Sie diesen Wert auf „ARMIS“ fest.
read_only_udm.metadata.vendor_name Legen Sie diesen Wert auf „ARMIS“ fest.
read_only_udm.metadata.log_type Legen Sie diesen Wert auf „ARMIS_VULNERABILITIES“ fest.
read_only_udm.extensions.vulns.vulnerabilities.severity_details Der Feldwert „severity“ wird diesem Feld zugeordnet.

Änderungsprotokoll

Änderungsprotokoll für diesen Parser ansehen

Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten