Raccogliere i log di Proofpoint TAP Forensics

Supportato in:

Questo documento spiega come importare i log di Proofpoint TAP Forensics in Google Security Operations utilizzando Google Cloud Storage V2.

Proofpoint Targeted Attack Protection (TAP) è una piattaforma avanzata di sicurezza email che rileva, analizza e blocca le minacce inviate tramite email, inclusi allegati e URL dannosi. L'API TAP Forensics fornisce prove forensi dettagliate su singole minacce e campagne osservate nel tuo ambiente, inclusi risultati dell'analisi sandbox, indicatori comportamentali, attività di rete, modifiche al file system e dati di esecuzione dei processi. Questi indicatori forensi possono essere utilizzati per confermare la compromissione di un host, arricchire le fonti di intelligence per la sicurezza o coordinare gli aggiornamenti degli endpoint di sicurezza.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Storage Cloud abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per creare servizi Cloud Run, argomenti Pub/Sub e job Cloud Scheduler
  • Un abbonamento a Proofpoint TAP con accesso alla dashboard Threat Insight
  • Credenziali del servizio API TAP (Service Principal e Secret) con autorizzazioni per accedere all'API SIEM e all'API Forensics

Genera le credenziali del servizio API Proofpoint TAP

  1. Accedi alla dashboard Proofpoint TAP Threat Insight.
  2. Vai a Impostazioni > Applicazioni connesse > Credenziali di servizio.
  3. Fai clic su Crea nuova credenziale.
  4. Nella finestra di dialogo Credenziali di servizio generate, copia e archivia in modo sicuro:

    • Service Principal: l'identificatore dell'entità di servizio utilizzato per l'autenticazione API
    • Secret: la chiave segreta utilizzata per l'autenticazione API

Verificare l'accesso API

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

    PRINCIPAL="your-service-principal"
    SECRET="your-secret"
    
    # Test SIEM API access (fetch last 5 minutes of events)
    curl -s "https://tap-api-v2.proofpoint.com/v2/siem/all?format=json&sinceSeconds=300" \
      --user "${PRINCIPAL}:${SECRET}"
    
    # Test Forensics API access (requires a valid threatId)
    # curl -s "https://tap-api-v2.proofpoint.com/v2/forensics?threatId=<threatId>" \
    #   --user "${PRINCIPAL}:${SECRET}"
    

Una risposta API SIEM riuscita restituisce un oggetto JSON contenente array messagesBlocked, messagesDelivered, clicksBlocked e clicksPermitted.

  • Se ricevi un errore 401, verifica che il service principal e il segreto siano corretti.
  • Se ricevi un errore 403, verifica che l'accesso all'API TAP sia abilitato per il tuo account.

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 proofpoint-tap-forensics-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

La funzione Cloud Run richiede un account di servizio con autorizzazioni per scrivere nel bucket GCS e per essere richiamato da Pub/Sub.

Crea il account di servizio

  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 tap-forensics-collector-sa
    • Descrizione service account: inserisci Service account for Cloud Run function to collect Proofpoint TAP Forensics 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 Invoker di Cloud Functions.
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Questi ruoli sono necessari per:

  • Storage Object Admin: scrivi i dati delle prove forensi nel bucket GCS e gestisci 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, tap-forensics-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 GCP, vai a Pub/Sub > Argomenti.
  2. Fai clic su Crea argomento.
  3. Fornisci i seguenti dettagli di configurazione:
    • ID argomento: inserisci tap-forensics-collector-trigger
    • Lascia le altre impostazioni predefinite
  4. Fai clic su Crea.

Crea una funzione Cloud Run per raccogliere prove forensi

La funzione Cloud Run verrà attivata dai messaggi Pub/Sub di Cloud Scheduler per recuperare gli eventi di minaccia dall'API Proofpoint TAP SIEM, recuperare le prove forensi per ogni minaccia unica utilizzando l'API Forensics e scrivere i risultati in GCS.

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

    Impostazione Valore
    Nome servizio tap-forensics-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 tap-forensics-collector-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 (Account di servizio): seleziona l'account di servizio tap-forensics-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 proofpoint-tap-forensics-logs Nome del bucket GCS
    GCS_PREFIX tap-forensics Prefisso per i file di log
    STATE_KEY tap-forensics/state.json Percorso file di stato
    TAP_PRINCIPAL your-service-principal TAP API Service Principal
    TAP_SECRET your-secret API secret TAP
    LOOKBACK_HOURS 1 Periodo di riferimento iniziale in ore (massimo 7 giorni)
    MAX_THREATS 500 Numero massimo di minacce uniche per cui recuperare i dati forensi per esecuzione
  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 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
      import base64
      
      # Initialize HTTP client with timeouts
      http = urllib3.PoolManager(
        timeout=urllib3.Timeout(connect=10.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', 'tap-forensics').strip('/')
      STATE_KEY = os.environ.get('STATE_KEY') or f"{GCS_PREFIX}/state.json"
      TAP_PRINCIPAL = os.environ.get('TAP_PRINCIPAL')
      TAP_SECRET = os.environ.get('TAP_SECRET')
      LOOKBACK_HOURS = int(os.environ.get('LOOKBACK_HOURS', '1'))
      MAX_THREATS = int(os.environ.get('MAX_THREATS', '500'))
      
      API_BASE = 'https://tap-api-v2.proofpoint.com'
      
      def get_auth_header():
        """Build HTTP Basic Authentication header."""
        auth_string = f"{TAP_PRINCIPAL}:{TAP_SECRET}"
        auth_bytes = auth_string.encode('utf-8')
        auth_b64 = base64.b64encode(auth_bytes).decode('utf-8')
        return f"Basic {auth_b64}"
      
      @functions_framework.cloud_event
      def main(cloud_event):
        """
        Cloud Run function triggered by Pub/Sub to fetch Proofpoint TAP
        forensic evidence and write to GCS.
      
        The function first queries the SIEM API to discover threat IDs,
        then calls the Forensics API for each unique threat to retrieve
        detailed forensic evidence (sandbox results, behavioral
        indicators, network activity, file changes, and process data).
      
        Args:
          cloud_event: CloudEvent object containing Pub/Sub message
        """
      
        if not all([GCS_BUCKET, TAP_PRINCIPAL, TAP_SECRET]):
          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
              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)
      
          # TAP SIEM API allows max 1 hour per request and max 7 days lookback
          if (now - last_time) > timedelta(days=7):
            last_time = now - timedelta(days=7)
            print("Warning: Lookback capped to 7 days (TAP API limit)")
      
          print(f"Fetching threats from {last_time.isoformat()} to {now.isoformat()}")
      
          # Step 1: Fetch threat IDs from the SIEM API
          threat_ids = fetch_threat_ids(last_time, now)
      
          if not threat_ids:
            print("No threats found in the specified time window.")
            save_state(bucket, STATE_KEY, now.isoformat())
            return
      
          print(f"Found {len(threat_ids)} unique threat IDs")
      
          # Step 2: Fetch forensic evidence for each threat
          forensic_records = fetch_forensics_for_threats(threat_ids)
      
          if not forensic_records:
            print("No forensic evidence retrieved.")
            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}/tap_forensics_{timestamp}.ndjson"
          blob = bucket.blob(object_key)
      
          ndjson = '\n'.join(
            [json.dumps(record, ensure_ascii=False) for record in forensic_records]
          ) + '\n'
          blob.upload_from_string(ndjson, content_type='application/x-ndjson')
      
          print(f"Wrote {len(forensic_records)} records to gs://{GCS_BUCKET}/{object_key}")
      
          # Update state
          save_state(bucket, STATE_KEY, now.isoformat())
      
          print(f"Successfully processed forensics for {len(threat_ids)} threats")
      
        except Exception as e:
          print(f'Error processing TAP forensics: {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 parse_datetime(value):
        """Parse ISO datetime string to datetime object."""
        if value.endswith('Z'):
          value = value[:-1] + '+00:00'
        return datetime.fromisoformat(value)
      
      def fetch_threat_ids(start_time, end_time):
        """
        Fetch unique threat IDs from the TAP SIEM API by querying
        in 1-hour intervals within the specified time window.
      
        Args:
          start_time: Start of the time window (datetime)
          end_time: End of the time window (datetime)
      
        Returns:
          Set of unique threat ID strings
        """
        headers = {
          'Authorization': get_auth_header(),
          'Accept': 'application/json',
          'User-Agent': 'GoogleSecOps-TAPForensicsCollector/1.0',
        }
      
        threat_ids = set()
        current_start = start_time
        backoff = 1.0
      
        while current_start < end_time:
          # TAP SIEM API allows max 1 hour per request
          current_end = min(current_start + timedelta(hours=1), end_time)
      
          interval = (
            f"{current_start.strftime('%Y-%m-%dT%H:%M:%SZ')}"
            f"/{current_end.strftime('%Y-%m-%dT%H:%M:%SZ')}"
          )
          url = f"{API_BASE}/v2/siem/all?format=json&interval={interval}"
      
          try:
            response = http.request('GET', url, headers=headers)
      
            if response.status == 429:
              retry_after = int(
                response.headers.get('Retry-After', str(int(backoff)))
              )
              print(f"Rate limited (429). Retrying after {retry_after}s...")
              time.sleep(retry_after)
              backoff = min(backoff * 2, 60.0)
              continue
      
            backoff = 1.0
      
            if response.status != 200:
              print(f"SIEM API HTTP Error: {response.status}")
              response_text = response.data.decode('utf-8')
              print(f"Response body: {response_text[:500]}")
              current_start = current_end
              continue
      
            data = json.loads(response.data.decode('utf-8'))
      
            # Extract threat IDs from all event types
            for key in ['messagesBlocked', 'messagesDelivered']:
              for msg in data.get(key, []):
                for threat_info in msg.get('threatsInfoMap', []):
                  tid = threat_info.get('threatID')
                  if tid:
                    threat_ids.add(tid)
      
            for key in ['clicksBlocked', 'clicksPermitted']:
              for click in data.get(key, []):
                tid = click.get('threatID')
                if tid:
                  threat_ids.add(tid)
      
            event_count = sum(
              len(data.get(k, []))
              for k in [
                'messagesBlocked',
                'messagesDelivered',
                'clicksBlocked',
                'clicksPermitted',
              ]
            )
            print(
              f"Interval {interval}: {event_count} events, "
              f"{len(threat_ids)} unique threats so far"
            )
      
          except Exception as e:
            print(f"Error fetching SIEM events: {e}")
      
          current_start = current_end
      
          if len(threat_ids) >= MAX_THREATS:
            print(f"Reached max threats limit ({MAX_THREATS})")
            break
      
        return threat_ids
      
      def fetch_forensics_for_threats(threat_ids):
        """
        Fetch forensic evidence for each threat ID from the
        Forensics API.
      
        Args:
          threat_ids: Set of threat ID strings
      
        Returns:
          List of forensic report dictionaries
        """
        headers = {
          'Authorization': get_auth_header(),
          'Accept': 'application/json',
          'User-Agent': 'GoogleSecOps-TAPForensicsCollector/1.0',
        }
      
        records = []
        backoff = 1.0
        processed = 0
        skipped = 0
      
        for threat_id in list(threat_ids)[:MAX_THREATS]:
          url = (
            f"{API_BASE}/v2/forensics"
            f"?threatId={threat_id}"
            f"&includeCampaignForensics=true"
          )
      
          try:
            response = http.request('GET', url, headers=headers)
      
            if response.status == 429:
              retry_after = int(
                response.headers.get('Retry-After', str(int(backoff)))
              )
              print(f"Rate limited (429). Retrying after {retry_after}s...")
              time.sleep(retry_after)
              backoff = min(backoff * 2, 60.0)
              # Retry the same threat
              continue
      
            backoff = 1.0
      
            if response.status == 204:
              skipped += 1
              processed += 1
              continue
      
            if response.status != 200:
              print(
                f"Forensics API error for {threat_id}: "
                f"HTTP {response.status}"
              )
              skipped += 1
              processed += 1
              continue
      
            data = json.loads(response.data.decode('utf-8'))
            reports = data.get('reports', [])
      
            if reports:
              # Add the threat ID to each report for correlation
              for report in reports:
                report['_threatId'] = threat_id
              records.extend(reports)
      
            processed += 1
      
            if processed % 50 == 0:
              print(
                f"Progress: {processed}/{len(threat_ids)} threats, "
                f"{len(records)} forensic reports collected"
              )
      
          except Exception as e:
            print(f"Error fetching forensics for {threat_id}: {e}")
            skipped += 1
            processed += 1
      
        print(
          f"Forensics collection complete: {processed} threats processed, "
          f"{skipped} skipped, {len(records)} reports collected"
        )
        return records
      
    • 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 GCP, vai a Cloud Scheduler.
  2. Fai clic su Crea job.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Nome tap-forensics-collector-hourly
    Regione Seleziona la stessa regione della funzione Cloud Run
    Frequenza 0 * * * * (ogni ora, all'ora)
    Fuso orario Seleziona il fuso orario (UTC consigliato)
    Tipo di target Pub/Sub
    Argomento Seleziona l'argomento tap-forensics-collector-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 15 minuti */15 * * * * Ambienti con volumi elevati e molte minacce
Ogni ora 0 * * * * Standard (consigliato)
Ogni 6 ore 0 */6 * * * Ambienti a basso volume

Testare l'integrazione

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

    Fetching threats from YYYY-MM-DDTHH:MM:SS+00:00 to YYYY-MM-DDTHH:MM:SS+00:00
    Interval .../...: X events, Y unique threats so far
    Found Z unique threat IDs
    Forensics collection complete: Z threats processed, 0 skipped, N reports collected
    Wrote N records to gs://proofpoint-tap-forensics-logs/tap-forensics/tap_forensics_YYYYMMDD_HHMMSS.ndjson
    Successfully processed forensics for Z threats
    
  8. Vai a Cloud Storage > Bucket.

  9. Fai clic sul nome del bucket.

  10. Vai alla cartella del prefisso tap-forensics/.

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

Se visualizzi errori nei log:

  • HTTP 401: controlla TAP_PRINCIPAL e TAP_SECRET nelle variabili di ambiente. Verifica che il service principal e il secret siano corretti.
  • HTTP 403: verifica che l'accesso API sia abilitato per il tuo account TAP.
  • HTTP 429: limitazione di frequenza: la funzione verrà ritentata automaticamente con backoff. Valuta la possibilità di ridurre la frequenza di pianificazione.
  • Nessuna minaccia trovata: è normale se non sono state rilevate minacce nell'intervallo di tempo. TAP segnala solo le minacce identificate da URL Defense o Attachment Defense.
  • Variabili di ambiente mancanti: controlla che tutte le variabili richieste siano impostate.

Configura un feed in Google SecOps per importare i log di Proofpoint TAP Forensics

  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, Proofpoint TAP Forensics).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Proofpoint Tap Forensics 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 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://proofpoint-tap-forensics-logs/tap-forensics/
      
      • Sostituisci:
        • proofpoint-tap-forensics-logs: il nome del bucket GCS.
        • tap-forensics: (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 i 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 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 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
malicious_label additional.fields Unita
threat_type_label additional.fields Unita
generated metadata.event_timestamp Analizzato come ISO8601
has_principal metadata.event_type Mappato: trueSTATUS_UPDATE
protocol network.ip_protocol Mappato direttamente
prin_ip principal.asset.ip Unita
domain principal.domain.name Mappato direttamente
path principal.file.full_path Mappato direttamente
file_hash_sha256 principal.file.sha256 Mappato direttamente
prin_ip principal.ip Unita
port principal.port Mappato direttamente
url principal.url Mappato direttamente
_security_result security_result Unita
N/D metadata.event_type Costante: STATUS_UPDATE
N/D metadata.product_event_type Costante: Forensic Reports
N/D metadata.product_name Costante: TAP Forensics
N/D metadata.vendor_name Costante: Proofpoint
N/D principal.asset.platform_software.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.