Raccogli i log di Jamf Security Cloud

Supportato in:

Questo documento spiega come importare i log di Jamf Security Cloud in Google Security Operations utilizzando Google Cloud Storage o Amazon S3. Jamf Security Cloud è una piattaforma di difesa dalle minacce mobile e di sicurezza degli endpoint per i dispositivi Apple. Genera log degli eventi di rilevamento delle minacce, conformità e sicurezza dei dispositivi che riguardano la protezione a livello DNS, la prevenzione del phishing, il filtraggio dei contenuti e la valutazione del rischio del dispositivo. Jamf Security Cloud esporta i log utilizzando Data Streams. Ogni configurazione dello stream di dati invia esattamente un tipo di dati a una destinazione.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Accesso con privilegi al portale Jamf Security Cloud
  • Per il metodo 1: accesso con privilegi a Google Cloud (Google Cloud Storage, Cloud Run)
  • Per il metodo 2: accesso privilegiato ad AWS (S3, IAM)

Seleziona i tipi di stream di dati da esportare

Il parser Jamf Security Cloud supporta tutti e sei i tipi di stream di dati. Crea una configurazione dello stream di dati separata per ogni tipo di dati che vuoi importare:

  • Eventi di minaccia: eventi di minaccia rilevati, tra cui comunicazioni di rete dannose, malware e app rischiose
  • Traffico di rete: log del traffico di rete elaborati dall'infrastruttura di rete di Jamf
  • Eventi di accesso: richieste consentite e rifiutate dalle norme di Jamf Connect Zero Trust Network Access (ZTNA)
  • Dati sul dispositivo: informazioni sui dispositivi
  • Approfondimenti sulle app: informazioni sulle applicazioni installate sui dispositivi
  • Dati sulle vulnerabilità: dettagli su ogni vulnerabilità rilevata e sul dispositivo in cui è stata trovata

Metodo 1: Google Cloud Archiviazione

Jamf Security Cloud non dispone di una destinazione di archiviazione Google Cloud integrata e Jamf osserva che l'invio di dati direttamente a Google SecOps tramite l'integrazione HTTP non è supportato. Questo metodo utilizza la destinazione dello stream di dati HTTP generico per inviare eventi a una funzione Cloud Run di tua proprietà, che li scrive in un bucket Storage Google Cloud . Google SecOps inserisce il bucket utilizzando un feed Google Cloud Storage V2.

Crea un bucket di Google Cloud archiviazione

  1. Vai alla consoleGoogle Cloud .
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio jamf-security-cloud-logs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, a due regioni, multiregionale)
    Località Seleziona la posizione (ad esempio, us-central1)
    Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente)
    Controllo dell'accesso Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Attiva il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Crea un account di servizio per la funzione Cloud Run

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service account.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome del service account: inserisci jamf-sc-receiver-sa
    • Descrizione service account: inserisci Service account for the Cloud Run function that receives Jamf Security Cloud events
  4. Fai clic su Crea e continua.
  5. Fai clic su Fine.

Concedi al account di servizio l'accesso al bucket

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket.
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: inserisci l'email del account di servizio (ad esempio, jamf-sc-receiver-sa@PROJECT_ID.iam.gserviceaccount.com).
    • Assegna i ruoli: seleziona Storage Object Admin.
  6. Fai clic su Salva.

Crea la funzione Cloud Run per ricevere eventi

  1. Genera un token di autenticazione sicuro e salvalo per riferimento futuro (ad esempio, esegui openssl rand -hex 32). Jamf Security Cloud invia questo token in un'intestazione della richiesta e la funzione rifiuta le richieste senza.
  2. Nella console GCP, vai a Cloud Run.
  3. Fai clic su Crea servizio.
  4. Seleziona Funzione (usa un editor in linea per creare una funzione).
  5. Nella sezione Configura, fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome servizio jamf-sc-receiver
    Regione Seleziona la regione corrispondente al bucket Cloud Storage (ad esempio, us-central1).
    Tempo di esecuzione Seleziona Python 3.12 o versioni successive
  6. Nella sezione Autenticazione, seleziona Consenti chiamate non autenticate.

  7. Espandi Container, networking, sicurezza.

  8. Vai alla scheda Sicurezza:

    • Service account (Service account): seleziona jamf-sc-receiver-sa
  9. Vai alla scheda Container:

    1. Fai clic su Variabili e secret.
    2. Fai clic su + Aggiungi variabile per ogni variabile di ambiente:
    Nome variabile Valore di esempio Descrizione
    GCS_BUCKET jamf-security-cloud-logs Nome del bucket Cloud Storage
    GCS_PREFIX jamf-security-cloud/ Prefisso per i file di log
    AUTH_TOKEN <your-generated-token> Token inviato da Jamf Security Cloud nell'intestazione X-Auth-Token
  10. Fai clic su Crea.

  11. Attendi la creazione del servizio. Dopo aver creato il servizio, si apre automaticamente l'editor di codice incorporato.

  12. Inserisci main nel campo Entry point (Punto di ingresso).

  13. Nell'editor di codice incorporato, crea due file:

    • Primo file: main.py

      import hashlib
      import os
      from datetime import datetime, timezone
      
      import functions_framework
      from google.cloud import storage
      
      BUCKET = os.environ["GCS_BUCKET"]
      PREFIX = os.environ.get("GCS_PREFIX", "jamf-security-cloud/")
      AUTH_TOKEN = os.environ["AUTH_TOKEN"]
      
      storage_client = storage.Client()
      
      @functions_framework.http
      def main(request):
              if request.headers.get("X-Auth-Token") != AUTH_TOKEN:
                      return ("Unauthorized", 401)
      
              body = request.get_data()
              if not body:
                      return ("OK", 200)
      
              now = datetime.now(timezone.utc)
              digest = hashlib.sha256(body).hexdigest()[:12]
              object_name = f"{PREFIX}{now:%Y/%m/%d}/{now:%Y%m%dT%H%M%S%f}_{digest}.json"
              storage_client.bucket(BUCKET).blob(object_name).upload_from_string(
                      body, content_type="application/json"
              )
              return ("OK", 200)
      
    • Secondo file: requirements.txt

      functions-framework==3.*
      google-cloud-storage==2.*
      
  14. Fai clic su Salva e ridistribuisci.

  15. Copia e salva l'URL del servizio (ad esempio, https://jamf-sc-receiver-abc123-uc.a.run.app). Utilizzerai il nome host nella sezione successiva.

Configura uno stream di dati HTTP generico in Jamf Security Cloud

  1. Accedi al portale Jamf Security Cloud.
  2. Vai a Integrazioni > Stream di dati.
  3. Fai clic su Nuova configurazione.
  4. Seleziona il tipo di stream di dati (ad esempio Eventi di minaccia).
  5. Seleziona HTTP generico come tipo di destinazione dello stream di dati.
  6. Fai clic su Continua.
  7. Fornisci i seguenti dettagli di configurazione:
    • Protocollo: seleziona https
    • Nome host/IP del server: inserisci il nome host del servizio Cloud Run (ad esempio, jamf-sc-receiver-abc123-uc.a.run.app).
    • Porta: inserisci 443
    • Endpoint: inserisci /
    • Intestazioni aggiuntive: fai clic su Aggiungi intestazione e inserisci il nome X-Auth-Token con il token generato come valore.
  8. Fai clic su Testa configurazione e verifica che il test vada a buon fine.
  9. Fai clic sul pulsante di attivazione/disattivazione Abilita configurazione per attivare lo stream di dati.
  10. Fai clic su Salva.
  11. Ripeti questi passaggi per ogni tipo di stream di dati aggiuntivo che vuoi esportare.

Recuperare il account di servizio Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Feed.
  3. Fai clic su Aggiungi nuovo feed.
  4. Fai clic su Configura un singolo feed.
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona JAMF Security Cloud come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzata un'email del account di servizio univoca, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia l'indirizzo email. Lo utilizzerai nel passaggio successivo.

Concedi al account di servizio Google SecOps l'accesso al bucket

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket.
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage
  6. Fai clic su Salva.

Configurare un feed in Google SecOps per l'importazione da Google Cloud Storage

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Jamf Security Cloud logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona JAMF Security Cloud come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    Campo Valore
    URI bucket di archiviazione gs://jamf-security-cloud-logs/jamf-security-cloud/
    Opzione di eliminazione dell'origine Seleziona l'opzione di eliminazione in base alle tue preferenze.
    Età massima del file (giorni) Il valore predefinito è 180 giorni
    Spazio dei nomi dell'asset Lo spazio dei nomi dell'asset
    Etichette di importazione L'etichetta da applicare agli eventi di questo feed
    • Sostituisci jamf-security-cloud-logs con il nome del bucket effettivo.
    • Includi sempre la barra finale (/) alla fine dell'URI.
  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Metodo 2: Amazon S3

AWS S3 di proprietà del cliente è l'unica destinazione di spazio di archiviazione sul cloud supportata in modo nativo da Jamf Security Cloud Data Streams. Jamf Security Cloud scrive gli eventi direttamente nel tuo bucket S3 e Google SecOps li importa utilizzando un feed Amazon S3 V2.

Configura il bucket AWS S3 e il ruolo IAM per Jamf Security Cloud

  1. Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
  2. Salva il nome e la regione del bucket per riferimento futuro (ad esempio, jamf-security-cloud-logs).
  3. Crea un ruolo IAM che Jamf Security Cloud assume per caricare i dati nel bucket. Il ruolo richiede l'autorizzazione s3:PutObject sul bucket e l'account AWS di Jamf elencato come entità attendibile.

  4. Salva il ruolo IAM ARN per riferimento futuro.

Configura uno stream di dati AWS S3 di proprietà del cliente in Jamf Security Cloud

  1. Accedi al portale Jamf Security Cloud.
  2. Vai a Integrazioni > Stream di dati.
  3. Fai clic su Nuova configurazione.
  4. Seleziona il tipo di stream di dati (ad esempio Eventi di minaccia).
  5. Seleziona AWS S3 di proprietà del cliente come tipo di destinazione dello stream di dati.
  6. Fai clic su Continua.
  7. Fornisci i seguenti dettagli di configurazione:
    • Nome del bucket Amazon S3: inserisci il nome del bucket (ad esempio, jamf-security-cloud-logs).
    • Ruolo IAM assunto da Jamf: inserisci l'ARN del ruolo IAM che hai creato per Jamf Security Cloud
    • Regione: seleziona la regione del bucket S3
  8. Fai clic su Crea configurazione.
  9. (Facoltativo) In Impostazioni avanzate, seleziona JSON come formato del messaggio.

  10. Fai clic sul pulsante di attivazione/disattivazione Abilita configurazione per attivare lo stream di dati.

  11. Fai clic su Salva.

  12. Ripeti questi passaggi per ogni tipo di stream di dati aggiuntivo che vuoi esportare.

Crea un utente IAM e una chiave di accesso per Google SecOps

  1. Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
  2. Seleziona l'utente creato.
  3. Seleziona la scheda Credenziali di sicurezza.
  4. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  5. Seleziona Servizio di terze parti come Caso d'uso.
  6. Fai clic su Avanti.
  7. (Facoltativo) Aggiungi un tag di descrizione.
  8. Fai clic su Crea chiave di accesso.
  9. Fai clic su Scarica file .csv per salvare la chiave di accesso e la chiave di accesso segreta per riferimento futuro.
  10. Fai clic su Fine.
  11. Seleziona la scheda Autorizzazioni.
  12. Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
  13. Seleziona Aggiungi autorizzazioni.
  14. Seleziona Allega direttamente i criteri.
  15. Cerca la norma AmazonS3FullAccess.
  16. Seleziona la policy.
  17. Fai clic su Avanti.
  18. Fai clic su Aggiungi autorizzazioni.

Configura un feed in Google SecOps per l'importazione da Amazon S3

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Jamf Security Cloud logs).
  5. Seleziona Amazon S3 V2 come Tipo di origine.
  6. Seleziona JAMF Security Cloud come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    Campo Valore
    URI S3 s3://jamf-security-cloud-logs/
    Opzione di eliminazione dell'origine Seleziona l'opzione di eliminazione in base alle tue preferenze.
    Età massima del file (giorni) Il valore predefinito è 180 giorni
    ID chiave di accesso Chiave di accesso utente con accesso al bucket S3
    Chiave di accesso segreta Chiave segreta utente con accesso al bucket S3
    Spazio dei nomi dell'asset Lo spazio dei nomi dell'asset
    Etichette di importazione L'etichetta da applicare agli eventi di questo feed
    • Sostituisci jamf-security-cloud-logs con il nome effettivo del bucket S3.
  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
accessPoint_label additional.fields Unita
action_label additional.fields Unita
activated_label additional.fields Unita
alertId_label additional.fields Unita
appName_label additional.fields Unita
appRiskIndexThreshold_label additional.fields Unita
appVersion_label additional.fields Unita
app_id_label additional.fields Unita
carrierName_label additional.fields Unita
category_label additional.fields Unita
deploymentState_label additional.fields Unita
developer_label additional.fields Unita
deviceId_label additional.fields Unita
deviceModel_label additional.fields Unita
deviceName_label additional.fields Unita
deviceRiskIndex_label additional.fields Unita
device_os_label additional.fields Unita
device_user_name_label additional.fields Unita
eventTimeUtcMs_label additional.fields Unita
eventType_label additional.fields Unita
hwPlatform_label additional.fields Unita
imei_label additional.fields Unita
installationTimeUtcMs_label additional.fields Unita
installedBy_label additional.fields Unita
isoCountryCode_label additional.fields Unita
lastMdmCheckInUtcMs_label additional.fields Unita
lastNetworkTrafficUtcMs_label additional.fields Unita
lastUpdatedUtcMs_label additional.fields Unita
loc_isoCountryCode_label additional.fields Unita
mcc_label additional.fields Unita
mdmId_label additional.fields Unita
mnc_label additional.fields Unita
osVersion_label additional.fields Unita
packageName_label additional.fields Unita
parentId_label additional.fields Unita
parentId_label_1 additional.fields Unita
platform_label additional.fields Unita
profileId_label additional.fields Unita
profileName_label additional.fields Unita
profileStatus_label additional.fields Unita
recordType_label additional.fields Unita
resellerId_label additional.fields Unita
routeName_label additional.fields Unita
signatureId_id_label additional.fields Unita
signatureId_name_label additional.fields Unita
softwareId_label additional.fields Unita
softwareName_label additional.fields Unita
softwareVersion_label additional.fields Unita
ssid_label additional.fields Unita
system_label additional.fields Unita
threat_result_label additional.fields Unita
triggerTimeUtcMs_label additional.fields Unita
triggerType_label additional.fields Unita
types_list additional.fields Unita
userId_label additional.fields Unita
user_tld_label additional.fields Unita
vpnActive_label additional.fields Unita
wanderaAppVersion_label additional.fields Unita
wifiActive_label additional.fields Unita
event_data.receiptTime metadata.collected_timestamp Mappato direttamente
event_data.cve.description metadata.description Mappato direttamente
event_data_event_dataType_description metadata.description Mappato direttamente
event_data.timestamp metadata.event_timestamp Analizzato come yyyy-MM-ddTHH:mm:ss.SSSZ
has_principal metadata.event_type Mappato: trueSTATUS_UPDATE
has_user metadata.event_type Mappato: trueUSER_UNCATEGORIZED
event_data.md1.product metadata.product_event_type Mappato direttamente
md1.product metadata.product_event_type Mappato direttamente
event_data.device.externalId metadata.product_log_id Mappato direttamente
event_data.externalId metadata.product_log_id Mappato direttamente
md1.product metadata.product_name Mappato direttamente
event_data.md1.schemaVersion metadata.product_version Mappato direttamente
schemaVersion metadata.product_version Mappato direttamente
dns_answers network.dns.answers Unita
dns_questions network.dns.questions Unita
event_data.domain principal.administrative_domain Mappato direttamente
event_data.application principal.application Mappato direttamente
event_data.hostName principal.asset.hostname Mappato direttamente
event_data.source.ip principal.asset.ip Unita
event_data.device.userDeviceName principal.hostname Mappato direttamente
event_data.hostName principal.hostname Mappato direttamente
event_data.source.ip principal.ip Unita
event_data.source.port principal.port Rinominate/mappate
event_data_event_dataType_id principal.process.pid Mappato direttamente
event_data.cve.consoleUrl principal.url Mappato direttamente
event_data.event_dataUrl principal.url Mappato direttamente
device.user.email principal.user.email_addresses Unita
event_data.user.userEmail principal.user.email_addresses Unita
event_data.account.name principal.user.user_display_name Mappato direttamente
event_data.user.userName principal.user.user_display_name Mappato direttamente
customer.customerId principal.user.userid Mappato direttamente
customerId principal.user.userid Mappato direttamente
device.user.email principal.user.userid Mappato direttamente
event_data.account.customerId principal.user.userid Mappato direttamente
event_data.customerId principal.user.userid Mappato direttamente
actionforBlocked security_result.action Unita
event_data_event_dataType_name security_result.description Mappato direttamente
attribution_label security_result.detection_fields Unita
baseScore_label security_result.detection_fields Unita
cve_id_label security_result.detection_fields Unita
exploitAvailable_label security_result.detection_fields Unita
permission_label security_result.detection_fields Unita
threats_label security_result.detection_fields Unita
event_data.cve.severity security_result.severity Mappato direttamente
event_data.blockReason security_result.summary Mappato direttamente
event_data.cve.cveDetailUrl security_result.url_back_to_product Mappato direttamente
event_data.device.deviceId target.asset.asset_id Mappato direttamente
event_data.destination.name target.asset.hostname Mappato direttamente
device.carrier.ipAddress target.asset.ip Unita
device.network.assignedIp target.asset.ip Unita
device.network.publicIp target.asset.ip Unita
event_data.destination.ip target.asset.ip Unita
event_data.destinationIp target.asset.ip Unita
ip target.asset.ip Unita
app_id_md5 target.file.md5 Mappato direttamente
app_id_sha1 target.file.sha1 Mappato direttamente
app_id_sha256 target.file.sha256 Mappato direttamente
event_data.destination.name target.hostname Mappato direttamente
device.carrier.ipAddress target.ip Unita
device.network.assignedIp target.ip Unita
device.network.publicIp target.ip Unita
event_data.destination.ip target.ip Unita
event_data.destinationIp target.ip Unita
ip target.ip Unita
device.location.countryName target.location.country_or_region Mappato direttamente
event_data.location target.location.name Mappato direttamente
device.hw.wifiMacAddress target.mac Unita
device.network.bssid target.mac Unita
event_data.accessPointBssid target.mac Unita
event_data_device_os_osVersion target.platform_version Mappato direttamente
event_data.destination.port target.port Rinominate/mappate
event_data.device.deviceName target.resource.name Mappato direttamente
event_data.user.email target.user.email_addresses Unita
event_data.user.email target.user.userid Mappato direttamente
event_data.user.name target.user.userid Mappato direttamente
N/D metadata.event_type Costante: STATUS_UPDATE
N/D metadata.product_name Costante: JAMF_SECURITY_CLOUD
N/D metadata.vendor_name Costante: JAMF_SECURITY_CLOUD
N/D security_result.severity Costante: INFORMATIONAL
N/D target.platform Costante: WINDOWS

Log delle modifiche

Visualizza il log delle modifiche per questo parser

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