Raccogliere i log delle attività di SentinelOne

Supportato in:

Questo documento spiega come importare i log attività di SentinelOne in Google Security Operations utilizzando Google Cloud Storage V2.

SentinelOne Singularity è una piattaforma di protezione autonoma degli endpoint che offre funzionalità di prevenzione, rilevamento e risposta in tempo reale su endpoint, carichi di lavoro cloud e dispositivi IoT. Il Log delle attività acquisisce gli eventi amministrativi e operativi nel tuo ambiente SentinelOne, inclusi gli accessi degli utenti, le modifiche alle policy, le azioni di gestione delle minacce, le installazioni degli agenti e le modifiche alla configurazione del sistema. Questi log attività possono essere esportati tramite l'API REST di SentinelOne e scritti in un bucket GCS per l'importazione da parte di Google SecOps.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Cloud Storage abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per creare servizi Cloud Run, argomenti Pub/Sub e job Cloud Scheduler
  • Una console di gestione SentinelOne Singularity con accesso API
  • Un account utente del servizio SentinelOne con ruolo Visualizzatore o superiore

Generare un token API SentinelOne

  1. Accedi alla console di gestione SentinelOne all'indirizzo https://<your-management-url>.sentinelone.net.
  2. Vai a Impostazioni > Utenti > Utenti di servizio.
  3. Fai clic su Azioni > Crea nuovo utente del servizio.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome descrittivo (ad esempio, SIEM Activity Log Integration)
    • Data di scadenza: imposta una data di scadenza o lascia il valore predefinito
    • Livello di ambito: seleziona l'ambito appropriato (Account o Sito).
    • Ruolo: seleziona Visualizzatore (il minimo richiesto per la lettura dei log attività)
  5. Fai clic su Create User (Crea utente).
  6. Viene visualizzata una finestra di dialogo con il token API.
  7. Copia e salva il token API in modo sicuro.

Verifica l'accesso API

  • Testa le tue credenziali prima di procedere con l'integrazione:

    S1_BASE_URL="https://your-management-url.sentinelone.net"
    S1_API_TOKEN="your-api-token"
    
    curl -s -X GET "${S1_BASE_URL}/web/api/v2.1/activities?limit=2" \
        -H "Authorization: ApiToken ${S1_API_TOKEN}" \
        | python3 -m json.tool
    
  • Una risposta corretta restituisce un oggetto JSON con l'array data contenente i record di attività e un oggetto pagination:

    {
        "data": [
            {
                "id": "123456789",
                "activityType": 27,
                "activityUuid": "a2c8037c-e6df-436d-b92b-bc09a418717e",
                "createdAt": "2026-03-29T10:30:00.000000Z",
                "primaryDescription": "User logged in",
                "accountId": "123456",
                "accountName": "My Account",
                "siteId": "789012",
                "data": {}
            }
        ],
        "pagination": {
            "nextCursor": "eyJpZCI6...",
            "totalItems": 1500
        }
    }
    

Se visualizzi questi errori:

  • HTTP 401 (Non autorizzato): verifica che il token API sia corretto e non sia scaduto.
  • HTTP 403 (Non consentito): verifica che l'utente del servizio disponga dell'ambito e del ruolo appropriati.

Crea un bucket Google Cloud Storage

  1. Vai alla console Google 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 sentinelone-activity-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 degli accessi Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Abilita 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

La funzione Cloud Run richiede un account di servizio con autorizzazioni di scrittura nel bucket GCS e di invocazione da parte di Pub/Sub.

Crea service account

  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 s1-activity-collector-sa
    • Descrizione service account: inserisci Service account for Cloud Run function to collect SentinelOne Activity logs
  4. Fai clic su Crea e continua.
  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto, aggiungi i seguenti ruoli:
    1. Fai clic su Seleziona un ruolo.
    2. Cerca e seleziona Storage Object Admin.
    3. Fai clic su + Aggiungi un altro ruolo.
    4. Cerca e seleziona Cloud Run Invoker.
    5. Fai clic su + Aggiungi un altro ruolo.
    6. Cerca e seleziona Cloud Functions Invoker.
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Questi ruoli sono necessari per:

  • Storage Object Admin: scrive i log nel bucket GCS e gestisce i file di stato
  • Cloud Run Invoker: consente a Pub/Sub di richiamare la funzione
  • Cloud Functions Invoker: consente la chiamata di funzioni

Concedi autorizzazioni IAM sul bucket GCS

Concedi al account di servizio le autorizzazioni di scrittura sul bucket GCS:

  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, s1-activity-collector-sa@PROJECT_ID.iam.gserviceaccount.com).
    • Assegna i ruoli: seleziona Storage Object Admin.
  6. Fai clic su Salva.

Crea un argomento Pub/Sub

Crea un argomento Pub/Sub a cui Cloud Scheduler pubblicherà e a cui la funzione Cloud Run si iscriverà.

  1. Nella console Google Cloud, vai a Pub/Sub > Argomenti.
  2. Fai clic su Crea argomento.
  3. Fornisci i seguenti dettagli di configurazione:
    • ID argomento: inserisci s1-activity-trigger
    • Lascia invariate le altre impostazioni predefinite.
  4. Fai clic su Crea.

Crea una funzione Cloud Run per raccogliere i log

La funzione Cloud Run verrà attivata dai messaggi Pub/Sub di Cloud Scheduler per recuperare i log attività dall'API REST di SentinelOne e scriverli in GCS.

  1. Nella console Google Cloud, vai a Cloud Run.
  2. Fai clic su Crea servizio.
  3. Seleziona Funzione (utilizza un editor in linea per creare una funzione).
  4. Nella sezione Configura, fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome servizio s1-activity-collector
    Regione Seleziona la regione corrispondente al tuo bucket GCS (ad esempio, us-central1)
    Tempo di esecuzione Seleziona Python 3.12 o versioni successive.
  5. Nella sezione Trigger (facoltativo):

    1. Fai clic su + Aggiungi trigger.
    2. Seleziona Cloud Pub/Sub.
    3. In Seleziona un argomento Cloud Pub/Sub, scegli l'argomento s1-activity-trigger.
    4. Fai clic su Salva.
  6. Nella sezione Autenticazione:

    1. Seleziona Richiedi autenticazione.
    2. Controlla Identity and Access Management (IAM).
  7. Scorri verso il basso ed espandi Container, networking, sicurezza.

  8. Vai alla scheda Sicurezza:

    • Service account: seleziona il account di servizio s1-activity-collector-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 sentinelone-activity-logs Nome bucket GCS
    GCS_PREFIX sentinelone-activities Prefisso per i file di log
    STATE_KEY sentinelone-activities/state.json Percorso file di stato
    S1_BASE_URL https://your-mgmt-url.sentinelone.net URL della console di gestione SentinelOne
    S1_API_TOKEN your-api-token Token API SentinelOne
    PAGE_SIZE 1000 Record per pagina API (max 1000)
    MAX_RECORDS 50000 Numero massimo di record per esecuzione
    LOOKBACK_HOURS 2 Periodo di riferimento iniziale
  10. Scorri verso il basso nella sezione Variabili e secret fino a Richieste:

    • Timeout richiesta: inserisci 540 secondi (9 minuti).
  11. Vai alla scheda Impostazioni:

    • Nella sezione Risorse:
      • Memoria: seleziona 512 MiB o un valore superiore.
      • CPU: seleziona 1
  12. Nella sezione Scalabilità della revisione:

    • Numero minimo di istanze: inserisci 0
    • Numero massimo di istanze: inserisci 100 (o modifica in base al carico previsto)
  13. Fai clic su Crea.

  14. Attendi la creazione del servizio (1-2 minuti).

  15. Dopo aver creato il servizio, si aprirà automaticamente l'editor di codice incorporato.

Aggiungi codice per la funzione

  1. Inserisci main nel campo Entry point (Punto di ingresso).
  2. Nell'editor di codice incorporato, crea due file:

    • Primo file:main.py:

      import functions_framework
      from google.cloud import storage
      import json
      import os
      import urllib3
      from datetime import datetime, timezone, timedelta
      import time
      
      # Initialize HTTP client with timeouts
      http = urllib3.PoolManager(
        timeout=urllib3.Timeout(connect=5.0, read=60.0),
        retries=False,
      )
      
      # Initialize Storage client
      storage_client = storage.Client()
      
      # Environment variables
      GCS_BUCKET = os.environ.get('GCS_BUCKET')
      GCS_PREFIX = os.environ.get('GCS_PREFIX', 'sentinelone-activities').strip('/')
      STATE_KEY = os.environ.get('STATE_KEY') or f"{GCS_PREFIX}/state.json"
      S1_BASE_URL = os.environ.get('S1_BASE_URL', '').rstrip('/')
      S1_API_TOKEN = os.environ.get('S1_API_TOKEN')
      PAGE_SIZE = int(os.environ.get('PAGE_SIZE', '1000'))
      MAX_RECORDS = int(os.environ.get('MAX_RECORDS', '50000'))
      LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '2'))
      
      ACTIVITIES_ENDPOINT = '/web/api/v2.1/activities'
      
      def parse_datetime(value):
        """Parse ISO datetime string to datetime object."""
        if not value:
          return None
        if value.endswith("Z"):
          value = value[:-1] + "+00:00"
        try:
          return datetime.fromisoformat(value)
        except Exception:
          try:
            return datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%f')
          except Exception:
            return None
      
      @functions_framework.cloud_event
      def main(cloud_event):
        """
        Cloud Run function triggered by Pub/Sub to fetch
        SentinelOne Activity records and write to GCS.
      
        Args:
          cloud_event: CloudEvent object containing Pub/Sub message
        """
      
        if not all([GCS_BUCKET, S1_BASE_URL, S1_API_TOKEN]):
          print('Error: Missing required environment variables')
          return
      
        try:
          bucket = storage_client.bucket(GCS_BUCKET)
      
          # Load state
          state = load_state(bucket, STATE_KEY)
      
          # Determine time window
          now = datetime.now(timezone.utc)
          last_time = None
      
          if isinstance(state, dict) and state.get("last_event_time"):
            try:
              last_time = parse_datetime(state["last_event_time"])
              # Overlap by 2 minutes to catch delayed events
              if last_time:
                last_time = last_time - timedelta(minutes=2)
            except Exception as e:
              print(f"Warning: Could not parse last_event_time: {e}")
      
          if last_time is None:
            last_time = now - timedelta(hours=LOOKBACK_HOURS)
      
          print(
            f"Fetching activity logs from "
            f"{last_time.isoformat()} to {now.isoformat()}"
          )
      
          # Fetch activity logs
          records, newest_event_time = fetch_activity_logs(
            start_time=last_time,
            end_time=now,
          )
      
          if not records:
            print("No new activity records found.")
            save_state(bucket, STATE_KEY, now.isoformat())
            return
      
          # Write to GCS as NDJSON
          timestamp = now.strftime('%Y%m%d_%H%M%S')
          object_key = f"{GCS_PREFIX}/logs_{timestamp}.ndjson"
          blob = bucket.blob(object_key)
      
          ndjson = '\n'.join(
            [json.dumps(record, ensure_ascii=False) for record in records]
          ) + '\n'
          blob.upload_from_string(
            ndjson, content_type='application/x-ndjson'
          )
      
          print(
            f"Wrote {len(records)} records to "
            f"gs://{GCS_BUCKET}/{object_key}"
          )
      
          # Update state
          if newest_event_time:
            save_state(bucket, STATE_KEY, newest_event_time)
          else:
            save_state(bucket, STATE_KEY, now.isoformat())
      
          print(f"Successfully processed {len(records)} records")
      
        except Exception as e:
          print(f'Error processing activity logs: {str(e)}')
          raise
      
      def load_state(bucket, key):
        """Load state from GCS."""
        try:
          blob = bucket.blob(key)
          if blob.exists():
            state_data = blob.download_as_text()
            return json.loads(state_data)
        except Exception as e:
          print(f"Warning: Could not load state: {e}")
        return {}
      
      def save_state(bucket, key, last_event_time_iso):
        """Save the last event timestamp to GCS state file."""
        try:
          state = {'last_event_time': last_event_time_iso}
          blob = bucket.blob(key)
          blob.upload_from_string(
            json.dumps(state, indent=2),
            content_type='application/json'
          )
          print(f"Saved state: last_event_time={last_event_time_iso}")
        except Exception as e:
          print(f"Warning: Could not save state: {e}")
      
      def fetch_activity_logs(start_time, end_time):
        """
        Fetch activity logs from SentinelOne REST API with
        cursor-based pagination.
      
        Args:
          start_time: Start time for log query
          end_time: End time for log query
      
        Returns:
          Tuple of (records list, newest_event_time ISO string)
        """
        url = f"{S1_BASE_URL}{ACTIVITIES_ENDPOINT}"
        headers = {
          'Authorization': f'ApiToken {S1_API_TOKEN}',
          'Content-Type': 'application/json',
        }
      
        # Format timestamps for SentinelOne API
        start_str = start_time.strftime('%Y-%m-%dT%H:%M:%S.000000Z')
      
        records = []
        newest_time = None
        cursor = None
        backoff = 1.0
      
        while True:
          if len(records) >= MAX_RECORDS:
            print(f"Reached max_records limit ({MAX_RECORDS})")
            break
      
          params = {
            'createdAt__gt': start_str,
            'limit': str(PAGE_SIZE),
            'sortBy': 'createdAt',
            'sortOrder': 'asc',
          }
      
          if cursor:
            params['cursor'] = cursor
      
          try:
            response = http.request(
              'GET', url,
              fields=params,
              headers=headers
            )
      
            # Handle rate limiting with exponential backoff
            if response.status == 429:
              retry_after = int(
                response.headers.get(
                  'Retry-After', str(int(backoff))
                )
              )
              print(
                f"Rate limited (429). "
                f"Retrying after {retry_after}s..."
              )
              time.sleep(retry_after)
              backoff = min(backoff * 2, 30.0)
              continue
      
            # Handle token expiry
            if response.status == 401:
              print(
                "API token is invalid or expired. "
                "Generate a new token in SentinelOne console."
              )
              return records, newest_time
      
            backoff = 1.0
      
            if response.status != 200:
              print(f"HTTP Error: {response.status}")
              response_text = response.data.decode('utf-8')
              print(f"Response body: {response_text}")
              return records, newest_time
      
            data = json.loads(response.data.decode('utf-8'))
            result = data.get('data', [])
            pagination = data.get('pagination', {})
            total_items = pagination.get('totalItems', 0)
            next_cursor = pagination.get('nextCursor')
      
            if not result:
              print("No more results (empty page)")
              break
      
            print(
              f"Retrieved {len(result)} events "
              f"(total: {total_items})"
            )
            records.extend(result)
      
            # Track newest event time
            for event in result:
              try:
                event_time = event.get('createdAt')
                if event_time:
                  if newest_time is None:
                    newest_time = event_time
                  else:
                    current_dt = parse_datetime(event_time)
                    newest_dt = parse_datetime(newest_time)
                    if (
                      current_dt and newest_dt
                      and current_dt > newest_dt
                    ):
                      newest_time = event_time
              except Exception as e:
                print(
                  f"Warning: Could not parse "
                  f"event time: {e}"
                )
      
            # Check pagination
            if not next_cursor:
              print("Reached last page")
              break
      
            cursor = next_cursor
      
          except Exception as e:
            print(f"Error fetching activity logs: {e}")
            return records, newest_time
      
        print(f"Retrieved {len(records)} total activity records")
        return records, newest_time
      
    • Secondo file:requirements.txt:

      functions-framework==3.*
      google-cloud-storage==2.*
      urllib3>=2.0.0
      
  3. Fai clic su Esegui il deployment per salvare la funzione ed eseguirne il deployment.

  4. Attendi il completamento del deployment (2-3 minuti).

Crea un job Cloud Scheduler

Cloud Scheduler pubblicherà messaggi nell'argomento Pub/Sub a intervalli regolari, attivando la funzione Cloud Run.

  1. Nella console Google Cloud, vai a Cloud Scheduler.
  2. Fai clic su Crea job.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome s1-activity-collector-hourly
    Regione Seleziona la stessa regione della funzione Cloud Run
    Frequenza 0 * * * * (ogni ora, allo scoccare dell'ora)
    Fuso orario Seleziona il fuso orario (UTC consigliato)
    Tipo di target Pub/Sub
    Argomento Seleziona l'argomento s1-activity-trigger
    Corpo del messaggio {} (oggetto JSON vuoto)
  4. Fai clic su Crea.

Opzioni di frequenza di pianificazione

Scegli la frequenza in base al volume dei log e ai requisiti di latenza:

Frequenza Espressione cron Caso d'uso
Ogni 10 minuti */10 * * * * Volume elevato, quasi in tempo reale
Ogni ora 0 * * * * Standard (consigliato)
Ogni 2 ore 0 */2 * * * Abbassa il volume

Testare l'integrazione

  1. Nella console Cloud Scheduler, trova il tuo job.
  2. Fai clic su Forza esecuzione per attivare il job manualmente.
  3. Attendi alcuni secondi.
  4. Vai a Cloud Run > Servizi.
  5. Fai clic sul nome della funzione s1-activity-collector.
  6. Fai clic sulla scheda Log.
  7. Verifica che la funzione sia stata eseguita correttamente. Cerca:

    Fetching activity logs from YYYY-MM-DDTHH:MM:SS+00:00 to YYYY-MM-DDTHH:MM:SS+00:00
    Retrieved X events (total: Y)
    Wrote X records to gs://sentinelone-activity-logs/sentinelone-activities/logs_YYYYMMDD_HHMMSS.ndjson
    Successfully processed X records
    
  8. Vai a Cloud Storage > Bucket.

  9. Fai clic sul nome del bucket.

  10. Vai alla cartella del prefisso sentinelone-activities/.

  11. Verifica che sia stato creato un nuovo file .ndjson con il timestamp corrente.

Se nei log vengono visualizzati errori:

  • HTTP 400: controlla che l'URL della console di gestione SentinelOne non abbia una barra finale. Verifica che parametri di ricerca siano corretti.
  • HTTP 401: il token API non è valido o è scaduto. Genera un nuovo token nella console SentinelOne in Impostazioni > Utenti > Utenti di servizio.
  • HTTP 403: l'utente del servizio non dispone di autorizzazioni sufficienti. Verifica il ruolo e il livello di ambito.
  • HTTP 429: limitazione della frequenza: la funzione riproverà automaticamente con backoff esponenziale.
  • Variabili di ambiente mancanti: verifica che tutte le variabili richieste siano impostate nella configurazione della funzione Cloud Run.

Configura un feed in Google SecOps per importare i log attività di SentinelOne

  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, SentinelOne Activity Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Attività SentinelOne come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email del account di servizio univoco, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

  9. Fai clic su Avanti.

  10. Specifica i valori per i seguenti parametri di input:

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://sentinelone-activity-logs/sentinelone-activities/
      
      • Sostituisci:
        • sentinelone-activity-logs: il nome del bucket GCS.
        • sentinelone-activities: (Facoltativo) prefisso/percorso della cartella in cui vengono archiviati i log (lascia vuoto per la radice).
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
    • Età massima del file: includi i file modificati nell'ultimo numero di 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

  11. Fai clic su Avanti.

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

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel tuo bucket GCS.

  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.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
deviceNtDomain about.administrative_domain Rinominate/mappate
deviceExternalId about.asset.asset_id Mappato direttamente
device_product about.asset.asset_id Mappato direttamente
device_vendor about.asset.asset_id Mappato direttamente
fileHash about.file.full_path Mappato direttamente
filePath about.file.full_path Rinominate/mappate
_hash about.file.sha256 Rinominate/mappate
fileHash about.file.sha256 Rinominate/mappate
fsize about.file.size Rinominate/mappate
dvchost about.hostname Rinominate/mappate
ips about.ip Unita
dvc_mac about.mac Mappato: slot → mac_address
dvcmac about.mac Unita
mac_address about.mac Unita
deviceTranslatedAddress about.nat_ip Unita
Emne about.process.command_line Mappato direttamente
Path about.process.command_line Mappato direttamente
Subject about.process.command_line Mappato direttamente
deviceProcessName about.process.command_line Rinominate/mappate
dvcpid about.process.pid Rinominate/mappate
permissions about.resource.attribute.permissions Unita
additional_cfp1 additional.fields Unita
additional_cfp2 additional.fields Unita
additional_cfp3 additional.fields Unita
additional_cfp4 additional.fields Unita
additional_cn1 additional.fields Unita
additional_cn2 additional.fields Unita
additional_cn3 additional.fields Unita
additional_cs1 additional.fields Unita
additional_cs2 additional.fields Unita
additional_cs3 additional.fields Unita
additional_cs4 additional.fields Unita
additional_cs5 additional.fields Unita
additional_cs6 additional.fields Unita
additional_cs7 additional.fields Unita
additional_devicePayloadId additional.fields Unita
additional_eventId additional.fields Unita
additional_flexString1 additional.fields Unita
additional_fname additional.fields Unita
cs2 additional.fields Mappato: arc_test → additional_cs2
cs5_label additional.fields Unita
source_type_label additional.fields Unita
has_user extensions.auth.type Mappato: true → AUTHTYPE_UNSPECIFIED
event_name metadata.description Mappato direttamente
msg metadata.description Rinominate/mappate
primaryDescription metadata.description Mappato direttamente
Generated metadata.event_timestamp Analizzato come yyyy-MM-ddTHH:mm:ss
Received metadata.event_timestamp Analizzato come yyyy-MM-ddTHH:mm:ss
createdAt metadata.event_timestamp Analizzato come ISO8601
rt metadata.event_timestamp Analizzato come (EEE,ddMMMyyyy,HH:mm:ss)
updatedAt metadata.event_timestamp Analizzato come ISO8601
event_name metadata.event_type Mappato: "LogSpyware","LogPredictiveMachineLearning" → SCAN_UNCATEGORIZED
has_principal metadata.event_type Mappato: true → NETWORK_CONNECTION, true → STATUS_UPDATE
has_user metadata.event_type Mappato: true → USER_LOGIN
activityType metadata.product_event_type Mappato direttamente
device_event_class_id metadata.product_event_type Mappato direttamente
event_name metadata.product_event_type Mappato direttamente
activityID metadata.product_log_id Mappato direttamente
activityUuid metadata.product_log_id Mappato direttamente
externalId metadata.product_log_id Mappato direttamente
device_product metadata.product_name Mappato direttamente
device_version metadata.product_version Mappato direttamente
device_vendor metadata.vendor_name Rinominate/mappate
app_protocol_output network.application_protocol Mappato direttamente
deviceDirection network.direction Mappato: 0 → INBOUND, 1 → OUTBOUND
requestMethod network.http.method Rinominate/mappate
requestClientApplication network.http.user_agent Rinominate/mappate
ip_protocol_out network.ip_protocol Mappato direttamente
in network.received_bytes Rinominate/mappate
out network.sent_bytes Rinominate/mappate
sntdom principal.administrative_domain Rinominate/mappate
sourceServiceName principal.application Rinominate/mappate
data.ipAddress principal.asset.ip Unita
Group_name principal.group.group_display_name Mappato direttamente
Gruppenavn principal.group.group_display_name Mappato direttamente
Device_name principal.hostname Mappato direttamente
Enhetsnavn principal.hostname Mappato direttamente
shost principal.hostname Rinominate/mappate
data.ipAddress principal.ip Unita
principal_ip principal.ip Unita
shost principal.ip Unita
mac principal.mac Unita
sourceTranslatedAddress principal.nat_ip Unita
sourceTranslatedPort principal.nat_port Rinominate/mappate
spt principal.port Rinominate/mappate
data.sourceprocesscommandline principal.process.command_line Mappato direttamente
sproc principal.process.command_line Rinominate/mappate
data.sourceprocessname principal.process.file.names Unita
spid principal.process.pid Rinominate/mappate
principal_role principal.user.attribute.roles Unita
suser principal.user.user_display_name Mappato direttamente
suid principal.user.userid Rinominate/mappate
sec_result security_result Unita
_action security_result.action Unita
act security_result.action Mappato: accept → _action, deny → _action
Action_Taken security_result.action_details Mappato direttamente
act security_result.action_details Mappato direttamente
cat security_result.category_details Unita
Scan_Type security_result.description Mappato direttamente
Type security_result.description Mappato direttamente
msg_data_2 security_result.description Mappato direttamente
infection_channel_label security_result.detection_fields Unita
operasjon_label security_result.detection_fields Unita
operation_label security_result.detection_fields Unita
permission_label security_result.detection_fields Unita
spyware_Grayware_Type_label security_result.detection_fields Unita
threat_probability_label security_result.detection_fields Unita
tillatelse_label security_result.detection_fields Unita
mwProfile security_result.rule_name Mappato direttamente
severity security_result.severity Mappato: "0", "1", "2", "3", "LOW" → LOW, `"4", "5", "6", "MEDIUM", "SUBSTANTIAL", "INFO"…
Result security_result.summary Mappato direttamente
appcategory security_result.summary Mappato direttamente
reason security_result.summary Rinominate/mappate
Spyware security_result.threat_name Mappato direttamente
Unknown_Threat security_result.threat_name Mappato direttamente
Virus_Malware_Name security_result.threat_name Mappato direttamente
oldFilePath src.file.full_path Rinominate/mappate
oldFileSize src.file.size Rinominate/mappate
old_permissions src.resource.attribute.permissions Unita
dntdom target.administrative_domain Rinominate/mappate
destinationServiceName target.application Rinominate/mappate
agentId target.asset.asset_id Mappato direttamente
data.computerName target.asset.hostname Mappato direttamente
data.newGroupName target.group.group_display_name Mappato direttamente
data.newGroupId target.group.product_object_id Mappato direttamente
data.computerName target.hostname Mappato direttamente
temp_dhost target.hostname Mappato direttamente
IPv6_Address target.ip Unita
dst_ip target.ip Unita
ipv6 target.ip Mappato: - → IPv6_Address
data.siteName target.location.name Mappato direttamente
siteName target.location.name Mappato direttamente
mac_address target.mac Unita
accountName target.namespace Mappato direttamente
destination_translated_address target.nat_ip Unita
destinationTranslatedPort target.nat_port Rinominate/mappate
dpt target.port Rinominate/mappate
dproc target.process.command_line Rinominate/mappate
File_name target.process.file.full_path Mappato direttamente
Infected_Resource target.process.file.full_path Mappato direttamente
Object target.process.file.full_path Mappato direttamente
Objekt target.process.file.full_path Mappato direttamente
dpid target.process.pid Rinominate/mappate
full_scope_details_label target.resource.attribute.labels Unita
notification_scope_label target.resource.attribute.labels Unita
resource_Type_label target.resource.attribute.labels Unita
scope_level_label target.resource.attribute.labels Unita
site_id_label target.resource.attribute.labels Unita
vendor_activity_id_label target.resource.attribute.labels Unita
request target.url Mappato direttamente
target_role target.user.attribute.roles Unita
CustomerName target.user.user_display_name Mappato direttamente
data.accountName target.user.user_display_name Mappato direttamente
temp_duser target.user.user_display_name Mappato direttamente
Bruker target.user.userid Mappato direttamente
User_value target.user.userid Mappato direttamente
accountId target.user.userid Mappato direttamente
temp_duid target.user.userid Mappato direttamente
N/D extensions.auth.type Costante: AUTHTYPE_UNSPECIFIED
N/D metadata.event_type Costante: PROCESS_UNCATEGORIZED
N/D metadata.vendor_name Costante: SentinelOne
N/D network.direction Costante: INBOUND
N/D security_result.severity Costante: LOW
createdAt event.idm.read_only_udm.metadata.event_timestamp Mappato dal log delle modifiche
updatedAt event.idm.read_only_udm.security_result.last_updated_time Mappato dal log delle modifiche
activityUuid event.idm.read_only_udm.metadata.product_log_id Mappato dal log delle modifiche
activityID event.idm.read_only_udm.metadata.product_log_id Mappato dal log delle modifiche
primaryDescription event.idm.read_only_udm.metadata.description Mappato dal log delle modifiche
rt event.idm.read_only_udm.metadata.event_timestamp Mappato dal log delle modifiche
activityType event.idm.read_only_udm.metadata.product_event_type Mappato dal log delle modifiche
device_product event.idm.read_only_udm.metadata.product_name Mappato dal log delle modifiche
data.ipAddress event.idm.read_only_udm.principal.ip Mappato dal log delle modifiche
data.ipAddress event.idm.read_only_udm.principal.asset.ip Mappato dal log delle modifiche
data.sourceprocesscommandline event.idm.read_only_udm.principal.process.command_line Mappato dal log delle modifiche
data.sourceprocessname event.idm.read_only_udm.principal.process.file.names Mappato dal log delle modifiche
agentId event.idm.read_only_udm.target.asset.asset_id Mappato dal log delle modifiche
data.computerName event.idm.read_only_udm.target.hostname Mappato dal log delle modifiche
data.computerName event.idm.read_only_udm.target.asset.hostname Mappato dal log delle modifiche
accountName event.idm.read_only_udm.target.namespace Mappato dal log delle modifiche
siteName, event.idm.read_only_udm.target.location.name Mappato dal log delle modifiche
accountId event.idm.read_only_udm.target.user.userid Mappato dal log delle modifiche
data.accountName event.idm.read_only_udm.target.user.user_display_name Mappato dal log delle modifiche
data.newGroupId event.idm.read_only_udm.target.group.product_object_id Mappato dal log delle modifiche
data.newGroupName event.idm.read_only_udm.target.group.group_display_name Mappato dal log delle modifiche
data.sourceType event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
data.alertid event.idm.read_only_udm.security_result.rule_id Mappato dal log delle modifiche
data.ruledescription event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
data.oldGroupName event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
data.oldGroupId event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
data.newGroupId event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
data.newGroupName event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
data.fullScopeDetails event.idm.read_only_udm.security_result.description Mappato dal log delle modifiche

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.