Raccogliere i log delle vulnerabilità di Armis

Supportato in:

Questo documento spiega come importare i log delle vulnerabilità di Armis in Google Security Operations utilizzando Google Cloud Functions. Il parser trasforma i log delle vulnerabilità di sicurezza formattati in formato JSON non elaborato in un formato strutturato conforme a UDM di Google SecOps. Estrae vari campi dal log non elaborato, li mappa ai campi UDM corrispondenti, esegue conversioni del tipo di dati e struttura l'output per l'importazione nella piattaforma Google SecOps.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza di Google SecOps con ID cliente e credenziali del account di servizio
  • Accesso privilegiato alla piattaforma Armis Centrix
  • Chiave segreta API e URL del server Armis
  • Accesso a Google Cloud con autorizzazioni per creare funzioni Cloud Functions, secret Secret Manager e job Cloud Scheduler
  • Licenza o accesso al modulo Armis Asset Vulnerability Management (AVM)

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Recuperare le credenziali del account di servizio Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'importazione (file JSON dell'account di servizio).
  4. Salva il file in modo sicuro, perché dovrai caricarlo in Google Secret Manager.

Recuperare la chiave segreta dell'API Armis

  1. Accedi alla piattaforma Armis Centrix.
  2. Vai a Impostazioni > Gestione API.
  3. Fai clic su Crea se devi generare una nuova chiave segreta API.
  4. Fai clic su Mostra per visualizzare la chiave segreta.
  5. Copia e salva la chiave segreta in modo sicuro.

Configura Google Secret Manager

Questa sezione ti guida nell'utilizzo di Google Secret Manager per archiviare in modo sicuro la chiave del account di servizio necessaria per l'integrazione.

Aggiungi il secret del account di servizio Google SecOps

  1. Accedi alla consoleGoogle Cloud .
  2. Vai a Sicurezza > Secret Manager.
  3. Fai clic su Crea secret.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome per il secret (ad esempio, secops-service-account).
    • Valore segreto: carica il file JSON dell'account di servizio Google SecOps scaricato in precedenza o incollane direttamente i contenuti.
  5. Fai clic su Crea secret.
  6. Copia l'ID risorsa del secret creato nel seguente formato:

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

Aggiungi il secret della chiave segreta dell'API Armis

  1. In Secret Manager, fai clic su Crea secret.
  2. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome per il secret (ad esempio, armis-api-secret).
    • Valore del secret: incolla la chiave segreta dell'API Armis che hai ottenuto in precedenza.
  3. Fai clic su Crea secret.
  4. Copia l'ID risorsa del secret creato nel seguente formato:

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

Scarica e prepara lo script di importazione

  1. Accedi al repository ufficiale degli script di importazione di Google SecOps all'indirizzo https://github.com/chronicle/ingestion-scripts.
  2. Scarica i contenuti della directory armis dal repository.
  3. Scarica la directory common dal repository (dipendenza obbligatoria).
  4. Crea una nuova directory per il deployment di Cloud Function sulla macchina locale.
  5. Copia i contenuti delle directory armis e common nella directory di deployment.

Configura le variabili di ambiente

  1. Apri il file .env.yml in un editor di testo.
  2. Modifica il file con la seguente configurazione:

    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
    
    • Sostituisci i seguenti valori:

      • <YOUR_CUSTOMER_ID>: il tuo ID cliente Google SecOps
      • projects/{project_id}/secrets/{chronicle-secret-id}/versions/{version_id}: il percorso completo dell'ID risorsa del secret del tuo account di servizio Google SecOps da Secret Manager
      • <YOUR_NAMESPACE>: Spazio dei nomi facoltativo per i log di Google Security Operations (ad esempio, armis-vulnerabilities)
      • <your-armis-instance>: il sottodominio del tenant Armis (ad esempio, se il tuo URL è https://company.armis.com, utilizza company)
      • projects/{project_id}/secrets/{armis-secret-id}/versions/{version_id}: il percorso completo dell'ID risorsa del secret dell'API Armis da Secret Manager

Esegui il deployment della Cloud Function

  1. Apri Cloud Shell o il terminale locale con gcloud CLI installato.
  2. Vai alla directory contenente i file dello script di importazione.
  3. Esegui questo comando:

    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
    

Esegui il deployment utilizzando Cloud Function (1ª gen.) (alternativa)

  • Esegui questo comando:

    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
    

Crea un job Cloud Scheduler

  1. Nella console Google Cloud , vai a Cloud Scheduler.
  2. Fai clic su Crea job.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome per il job (ad esempio, armis-vulnerabilities-scheduler).
    • Regione: seleziona la stessa regione della tua Cloud Function (ad esempio, us-central1).
    • Frequenza: inserisci la pianificazione utilizzando la sintassi cron (ad esempio, */10 * * * * ogni 10 minuti).
    • Fuso orario: seleziona il fuso orario che preferisci (ad esempio UTC).
  4. Fai clic su Continua.
  5. Seleziona HTTP come tipo di destinazione.
  6. Fornisci i seguenti dettagli di configurazione:
    • URL: nella console Cloud Functions, vai alla scheda TRIGGER della funzione e copia l'URL del trigger. Incollalo qui.
    • Metodo HTTP: seleziona POST.
  7. Fai clic su Intestazione di autenticazione > Aggiungi token OIDC.
  8. Seleziona il service account utilizzato dalla Cloud Function.
  9. Fai clic su Crea.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
affectedDevicesCount read_only_udm.security_result.detection_fields.value Mappatura diretta, convertita in stringa.
attackComplexity read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
attackVector read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
availabilityImpact read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
avmRating read_only_udm.security_result.detection_fields.value Mappatura diretta.
botnet read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Concatenati in un'unica stringa se esistono più botnet.
cisaDueDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
collection_time.nanos read_only_udm.metadata.event_timestamp.nanos Mappatura diretta.
collection_time.seconds read_only_udm.metadata.event_timestamp.seconds Mappatura diretta.
commonName read_only_udm.extensions.vulns.vulnerabilities.name Mappatura diretta.
confidentialityImpact read_only_udm.security_result.detection_fields.value Mappatura diretta.
cveUid read_only_udm.extensions.vulns.vulnerabilities.cve_id Mappatura diretta.
cvssScore read_only_udm.extensions.vulns.vulnerabilities.cvss_base_score Mappatura diretta, convertita in float.
descrizione read_only_udm.metadata.description Mappatura diretta.
epssPercentile read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
epssScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
exploitabilityScore read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
firstReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.first_found Analizzato in timestamp, gestisce formati con e senza millisecondi.
firstWeaponizedReferencePublishDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
hasRansomware read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
id read_only_udm.metadata.product_log_id Mappatura diretta.
impactScore read_only_udm.security_result.detection_fields.value Mappatura diretta, convertita in stringa.
integrityImpact read_only_udm.security_result.detection_fields.value Mappatura diretta.
isWeaponized read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
latestExploitUpdate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
numOfExploits read_only_udm.security_result.detection_fields.value Mappatura diretta, convertita in stringa.
numberOfThreatActors read_only_udm.security_result.detection_fields.value Mappatura diretta, convertita in stringa.
orgPriorityManualChangeReason read_only_udm.security_result.detection_fields.value Mappatura diretta.
orgPriorityManualChangedBy read_only_udm.principal.user.userid Mappatura diretta.
orgPriorityManualUpdateTime read_only_udm.principal.labels.value Mappatura diretta.
privilegesRequired read_only_udm.security_result.detection_fields.value Mappatura diretta.
publishedDate read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
reportedByGoogleZeroDays read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta, convertita in stringa.
ambito read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
gravità read_only_udm.extensions.vulns.vulnerabilities.severity Mappato su CRITICA, ALTA, MEDIA, BASSA in base al valore. Il valore originale è mappato anche su severity_details.
stato read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Mappatura diretta.
threatTags read_only_udm.extensions.vulns.vulnerabilities.about.labels.value Concatenati in un'unica stringa se esistono più tag di minaccia.
userInteraction read_only_udm.about.labels.value Mappatura diretta.
vulnerabilities_matches read_only_udm.metadata.url_back_to_product Mappatura diretta.
read_only_udm.metadata.event_type Imposta il valore su "GENERIC_EVENT".
read_only_udm.metadata.product_name Imposta il valore su "ARMIS".
read_only_udm.metadata.vendor_name Imposta il valore su "ARMIS".
read_only_udm.metadata.log_type Imposta il valore su "ARMIS_VULNERABILITIES".
read_only_udm.extensions.vulns.vulnerabilities.severity_details Il valore del campo "severity" è mappato a questo campo

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.