Armis-Sicherheitslücken-Logs erfassen

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 Rohdaten-Logs 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.

Hinweise

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, 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 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 erfahren Sie, 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. Rufen Sie Sicherheit > Secret Manager auf.
  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-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 value (Secret-Wert): Fügen Sie den Armis API Secret Key ein, den Sie zuvor abgerufen 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 Aufnahmeskripts 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 Ihres Google SecOps-Dienstkonto-Secrets 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 des Aufnahmeskripts 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 der 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 für 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 konvertiert.
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 KRITISCH, HOCH, MITTEL, NIEDRIG 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 Wert des Felds „severity“ wird diesem Feld zugeordnet.

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