Raccogliere i log di Custom Security Data Analytics

Supportato in:

Questo documento spiega come importare dati di analisi della sicurezza personalizzati in Google Security Operations utilizzando più metodi di importazione. Questa guida è pensata per le origini dati di sicurezza personalizzate che non dispongono di un parser o di un tipo di log predefinito.

L'analisi personalizzata dei dati di sicurezza comprende la telemetria di sicurezza proprietaria, i log delle applicazioni personalizzati, gli strumenti di sicurezza interni o qualsiasi dato pertinente alla sicurezza proveniente da origini senza integrazione nativa di Google SecOps. Puoi importare questi dati come log non strutturati e, se vuoi, normalizzarli utilizzando parser personalizzati.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Origine dati di sicurezza personalizzata in grado di esportare i log in formato JSON, CSV, SYSLOG o altri formati strutturati
  • Accesso a uno dei seguenti elementi:
    • Google Cloud Console (per la creazione della chiave API e GCS)
    • Console AWS (per S3 o Firehose)
    • Portale Azure (per Azure Blob Storage)
    • Client o applicazione HTTP in grado di inviare richieste webhook
  • Autorizzazioni per creare e gestire feed in Google SecOps

Scegliere il metodo di importazione

Google SecOps supporta diversi metodi di importazione per i dati di sicurezza personalizzati. Seleziona il metodo più adatto alle funzionalità dell'origine dati:

Metodo di importazione Caso d'uso Latenza Complessità della configurazione
Webhook Notifiche push in tempo reale dalle applicazioni Secondi Bassa
Amazon S3 V2 Esportazione batch nel bucket S3 Da minuti a ore Media
Google Cloud Storage V2 Esportazione batch nel bucket GCS Da minuti a ore Media
Azure Blob Storage V2 Esportazione batch nello spazio di archiviazione di Azure Da minuti a ore Media
Amazon Data Firehose Streaming in tempo reale da AWS Secondi Alta

Opzione 1: importazione webhook (push in tempo reale)

Utilizza questo metodo quando la tua applicazione di sicurezza personalizzata può inviare richieste POST HTTP a un endpoint esterno.

Crea un feed webhook in Google SecOps

Creare il feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, custom-security-analytics-webhook).
  5. Seleziona Webhook come Tipo di origine.
  6. Seleziona Custom Security Data Analytics (Analisi personalizzata dei dati di sicurezza) come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:
    • Delimitatore di divisione: (facoltativo) inserisci un delimitatore per dividere gli eventi su più righe. Valori comuni:
      • \n - Delimitatore di nuova riga (il più comune per NDJSON)
      • Lascia vuoto se ogni richiesta contiene un singolo evento
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
  9. Fai clic su Avanti.
  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Genera e salva la chiave segreta

Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:

  1. Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
  2. Una finestra di dialogo mostra la chiave segreta.
  3. Copia e salva la chiave segreta in modo sicuro.

Recuperare l'URL dell'endpoint del feed

  1. Vai alla scheda Dettagli del feed.
  2. Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'URL dell'endpoint del feed.
  3. Il formato dell'URL è:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    o

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Salva questo URL per i passaggi successivi.

  5. Fai clic su Fine.

Creare una chiave API Google Cloud

Google SecOps richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella Google Cloud Console.

Crea la chiave API

  1. Vai alla pagina Credenziali della console Google Cloud.
  2. Seleziona il tuo progetto (quello associato alla tua istanza di Chronicle).
  3. Fai clic su Crea credenziali > Chiave API.
  4. Viene creata una chiave API e visualizzata in una finestra di dialogo.
  5. Fai clic su Modifica chiave API per limitare la chiave.

Limitare la chiave API

  1. Nella pagina delle impostazioni Chiave API:
    • Nome: inserisci un nome descrittivo (ad esempio, Chronicle Webhook API Key).
  2. In Limitazioni API:
    1. Seleziona Limita chiave.
    2. Nel menu a discesa Seleziona API, cerca e seleziona API Google SecOps (o API Chronicle).
  3. Fai clic su Salva.
  4. Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
  5. Salva la chiave API in modo sicuro.

Configurare l'applicazione personalizzata per inviare i dati

Configura l'applicazione o lo script di sicurezza personalizzato per inviare richieste POST HTTP all'endpoint webhook di Chronicle.

Costruisci l'URL webhook:

  • Combina l'URL dell'endpoint Chronicle e la chiave API:

    <ENDPOINT_URL>?key=<API_KEY>
    

    Esempio:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    

Formato della richiesta HTTP:

  • Metodo: POST

  • URL:

    <ENDPOINT_URL>?key=<API_KEY>
    
  • Intestazioni:

    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
  • Body (single event):

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45",
        "custom_field_1": "value1",
        "custom_field_2": "value2"
    }
    
  • Body (multiple events with newline delimiter):

    {"timestamp": "2025-01-15T10:30:00Z", "event_type": "authentication", "action": "login"}
    {"timestamp": "2025-01-15T10:30:05Z", "event_type": "file_access", "action": "read"}
    {"timestamp": "2025-01-15T10:30:10Z", "event_type": "authentication", "action": "logout"}
    

Esempi:

  • Esempio: script Python:

    import requests
    import json
    from datetime import datetime
    
    # Configuration
    ENDPOINT_URL = "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate"
    API_KEY = "your-api-key-here"
    SECRET_KEY = "your-secret-key-here"
    
    # Construct full URL
    url = f"{ENDPOINT_URL}?key={API_KEY}"
    
    # Headers
    headers = {
        "Content-Type": "application/json",
        "x-chronicle-auth": SECRET_KEY
    }
    
    # Sample event
    event = {
        "timestamp": datetime.utcnow().isoformat() + "Z",
        "event_type": "custom_security_event",
        "severity": "high",
        "source": "custom_security_tool",
        "message": "Suspicious activity detected",
        "user": "admin@example.com",
        "ip_address": "192.168.1.100"
    }
    
    # Send request
    response = requests.post(url, headers=headers, data=json.dumps(event))
    
    if response.status_code == 200:
        print("Event sent successfully")
    else:
        print(f"Error: {response.status_code} - {response.text}")
    
  • Esempio: comando cURL:

    curl -X POST \
        "https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -H "x-chronicle-auth: YOUR_SECRET_KEY" \
        -d '{
            "timestamp": "2025-01-15T10:30:00Z",
            "event_type": "security_alert",
            "severity": "critical",
            "source": "custom_tool",
            "message": "Threat detected"
        }'
    

Riferimento ai metodi di autenticazione

I feed webhook di Google SecOps supportano più metodi di autenticazione. Scegli il metodo supportato dalla tua applicazione.

Se la tua applicazione supporta intestazioni HTTP personalizzate, utilizza questo metodo per una maggiore sicurezza.

  • Formato della richiesta:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Vantaggi:

    • La chiave API e il secret non sono visibili nell'URL.
    • Più sicuri perché le intestazioni non vengono registrate nei log di accesso del server web.
    • Metodo preferito quando l'applicazione lo supporta.

Metodo 2: parametri di query

Se la tua applicazione non supporta le intestazioni personalizzate, aggiungi le credenziali all'URL.

  • Formato dell'URL:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    

    Esempio:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    
  • Formato della richiesta:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
      "event": "data",
      "timestamp": "2025-01-15T10:30:00Z"
    }
    
  • Svantaggi:

    • Le credenziali sono visibili nell'URL.
    • Le credenziali potrebbero essere registrate nei log di accesso del server web.
    • Meno sicuri delle intestazioni.

Metodo 3: ibrido (URL + intestazione)

Alcune configurazioni utilizzano la chiave API nell'URL e la chiave segreta nell'intestazione.

  • Formato della richiesta:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
        "event": "data",
        "timestamp": "2025-01-15T10:30:00Z"
    }
    

Limiti e best practice per i webhook

Limiti per le richieste

Limite Valore
Dimensioni massime della richiesta 4 MB
QPS max (query al secondo) 15.000
Timeout richieste 30 secondi
Comportamento di ripetizione Automatico con backoff esponenziale

Best practice

  • Eventi batch: invia più eventi in un'unica richiesta utilizzando il formato JSON delimitato da newline (NDJSON) per ridurre l'overhead.
  • Includi timestamp: includi sempre un campo timestamp in formato ISO 8601 per un ordinamento accurato degli eventi.
  • Utilizza dati strutturati: invia i dati in formato JSON per semplificare l'analisi e l'estrazione dei campi.
  • Implementa la logica di ripetizione dei tentativi: gestisci gli errori temporanei con backoff esponenziale.
  • Monitora i codici di risposta: registra e invia avvisi per le risposte diverse da 200.

Opzione 2: importazione Amazon S3 V2 (esportazione batch)

Utilizza questo metodo quando la tua applicazione di sicurezza personalizzata può esportare i log in un bucket Amazon S3.

Crea un bucket Amazon S3

  1. Apri la console Amazon S3.
  2. Fai clic su Crea bucket.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome bucket: inserisci un nome significativo per il bucket (ad esempio custom-security-analytics-logs).
    • Regione: seleziona la regione AWS che preferisci (ad esempio, us-east-1).
  4. Fai clic su Crea.

Crea un utente IAM con accesso a S3

  1. Apri la console IAM.
  2. Fai clic su Utenti > Aggiungi utente.
  3. Inserisci un nome utente (ad esempio, chronicle-s3-reader).
  4. Seleziona Accesso programmatico.
  5. Fai clic su Avanti: autorizzazioni.
  6. Scegli Collega direttamente le policy esistenti.
  7. Cerca e seleziona AmazonS3FullAccess.
  8. Fai clic su Avanti: tag.
  9. Fai clic su Successivo: esamina.
  10. Fai clic su Crea utente.
  11. Fai clic su Scarica file .csv per salvare l'ID chiave di accesso e la chiave di accesso segreta.
  12. Fai clic su Chiudi.

Configura l'applicazione per l'esportazione in S3

Configura l'applicazione di sicurezza personalizzata per scrivere i file di log nel bucket S3. L'applicazione deve:

  • Scrivi i log in un formato strutturato (JSON, CSV o testo normale).
  • Utilizza una convenzione di denominazione dei file coerente.
  • (Facoltativo) Organizza i file per data (ad esempio, logs/2025/01/15/events.json).
  • Scrivi file completi (evita scritture parziali).

  • Struttura del file di esempio:

    s3://custom-security-analytics-logs/
    ├── security-events/
    │   ├── 2025/01/15/
    │   │   ├── events-10-00.json
    │   │   ├── events-11-00.json
    │   │   └── events-12-00.json
    
  • Esempio di formato del file di log (NDJSON):

    {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login", "user": "alice@example.com", "result": "success"}
    {"timestamp": "2025-01-15T10:05:00Z", "event_type": "file_access", "user": "bob@example.com", "file": "/data/sensitive.txt"}
    {"timestamp": "2025-01-15T10:10:00Z", "event_type": "logout", "user": "alice@example.com"}
    

Configura il feed Google SecOps per S3

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, custom-security-analytics-s3).
  5. Seleziona Amazon S3 V2 come Tipo di origine.
  6. Seleziona Custom Security Data Analytics (Analisi personalizzata dei dati di sicurezza) come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • URI S3: l'URI del bucket nel formato: s3://custom-security-analytics-logs/security-events/

    • Opzione di eliminazione della fonte: 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 file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni).

    • ID chiave di accesso: inserisci la chiave di accesso dell'utente IAM.

    • Chiave di accesso segreta: inserisci la chiave segreta dell'utente IAM.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  9. Fai clic su Avanti.

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

Opzione 3: importazione Google Cloud Storage V2 (esportazione batch)

Utilizza questo metodo quando la tua applicazione di sicurezza personalizzata può esportare i log in un bucket Google Cloud Storage.

Crea un bucket di GCS

  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 custom-security-analytics-logs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, due regioni, più regioni)
    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.

Configura l'applicazione per l'esportazione in GCS

Configura l'applicazione di sicurezza personalizzata per scrivere i file di log nel bucket GCS utilizzando uno dei seguenti metodi:

  • Google Cloud SDK: utilizza gsutil o le librerie client
  • Service account: crea un account di servizio con il ruolo Storage Object Creator
  • URL firmati: genera URL firmati per l'accesso in scrittura temporaneo

  • Esempio di utilizzo di gsutil:

    gsutil cp /path/to/logs/events.json gs://custom-security-analytics-logs/security-events/
    
  • Esempio di utilizzo della libreria client Python:

    from google.cloud import storage
    import json
    
    # Initialize client
    client = storage.Client()
    bucket = client.bucket('custom-security-analytics-logs')
    
    # Upload log file
    blob = bucket.blob('security-events/2025/01/15/events.json')
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob.upload_from_string(ndjson_data, content_type='application/x-ndjson')
    

Recuperare l'account di servizio Google SecOps

  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, custom-security-analytics-gcs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona Custom Security Data Analytics (Analisi personalizzata dei dati di sicurezza) come Tipo di log.
  7. Fai clic su Ottieni service account.
  8. Verrà visualizzata un'email univoca del account di servizio, ad esempio:

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

Concedi autorizzazioni IAM

  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 il feed Google SecOps per GCS

  1. Continua dalla pagina di creazione del feed (o vai a Impostazioni SIEM > Feed > Aggiungi nuovo feed).
  2. Fai clic su Avanti.
  3. Specifica i valori per i seguenti parametri di input:

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

      gs://custom-security-analytics-logs/security-events/
      
    • Opzione di eliminazione della fonte: 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 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.

  4. Fai clic su Avanti.

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

Opzione 4: importazione di Azure Blob Storage V2 (esportazione batch)

Utilizza questo metodo quando la tua applicazione di sicurezza personalizzata può esportare i log in Azure Blob Storage.

Crea account di archiviazione Azure

  1. Nel portale Azure, cerca Account di archiviazione.
  2. Fai clic su + Crea.
  3. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Abbonamento Seleziona il tuo abbonamento Azure
    Gruppo di risorse Seleziona esistente o crea nuovo
    Nome account di archiviazione Inserisci un nome univoco (ad esempio, customsecuritylogs).
    Regione Seleziona la regione (ad esempio, East US)
    Prestazioni Standard (consigliato)
    Ridondanza GRS (archiviazione con ridondanza geografica) o LRS (archiviazione con ridondanza locale)
  4. Fai clic su Review + create (Rivedi e crea).

  5. Controlla la panoramica dell'account e fai clic su Crea.

  6. Attendi il completamento del deployment.

Recuperare le credenziali dell'account di archiviazione

  1. Vai all'account di archiviazione che hai appena creato.
  2. Nel riquadro di navigazione a sinistra, seleziona Chiavi di accesso in Sicurezza e networking.
  3. Fai clic su Mostra chiavi.
  4. Copia e salva i seguenti dati per un utilizzo successivo:
    • Nome dell'account di archiviazione: customsecuritylogs
    • Tasto 1 o Tasto 2: la chiave di accesso condivisa

Crea un contenitore blob

  1. Nello stesso account di archiviazione, seleziona Contenitori nel menu di navigazione a sinistra.
  2. Fai clic su + Contenitore.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome del contenitore (ad esempio, security-events)
    • Livello di accesso pubblico: seleziona Privato (nessun accesso anonimo).
  4. Fai clic su Crea.

Configura l'applicazione per l'esportazione in Azure Blob

Configura l'applicazione di sicurezza personalizzata per scrivere i file di log nel contenitore BLOB di Azure utilizzando uno dei seguenti metodi:

  • Azure CLI: utilizza az storage blob upload
  • Azure SDK: utilizza le librerie client per il tuo linguaggio di programmazione
  • AzCopy: utilizza lo strumento a riga di comando AzCopy

Esempi:

  • Esempio di utilizzo dell'interfaccia a riga di comando di Azure:

    az storage blob upload \
        --account-name customsecuritylogs \
        --container-name security-events \
        --name logs/2025/01/15/events.json \
        --file /path/to/events.json \
        --account-key <YOUR_ACCESS_KEY>
    
  • Esempio di utilizzo dell'SDK Python:

    from azure.storage.blob import BlobServiceClient
    import json
    
    # Initialize client
    connection_string = "DefaultEndpointsProtocol=https;AccountName=customsecuritylogs;AccountKey=<YOUR_KEY>;EndpointSuffix=core.windows.net"
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    
    # Get container client
    container_client = blob_service_client.get_container_client("security-events")
    
    # Upload log file
    blob_client = container_client.get_blob_client("logs/2025/01/15/events.json")
    
    # Write NDJSON data
    events = [
        {"timestamp": "2025-01-15T10:00:00Z", "event_type": "login"},
        {"timestamp": "2025-01-15T10:05:00Z", "event_type": "logout"}
    ]
    
    ndjson_data = '\n'.join([json.dumps(event) for event in events]) + '\n'
    blob_client.upload_blob(ndjson_data, overwrite=True)
    

Configura il feed Google SecOps per Azure Blob

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, custom-security-analytics-azure).
  5. Seleziona Microsoft Azure Blob Storage V2 come Tipo di origine.
  6. Seleziona Custom Security Data Analytics (Analisi personalizzata dei dati di sicurezza) come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • URI di Azure: inserisci l'URL dell'endpoint del servizio BLOB con il percorso del container:

      https://customsecuritylogs.blob.core.windows.net/security-events/
      
    • Opzione di eliminazione della fonte: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti.
      • 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 file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni).

    • Chiave condivisa: inserisci il valore della chiave condivisa (chiave di accesso) dell'account di archiviazione.

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  9. Fai clic su Avanti.

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

Opzione 5: importazione di Amazon Data Firehose (streaming in tempo reale)

Utilizza questo metodo quando la tua applicazione di sicurezza personalizzata scrive i log in Amazon CloudWatch Logs e hai bisogno dello streaming in tempo reale su Google SecOps.

Crea il feed Firehose di Google SecOps

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, custom-security-analytics-firehose).
  4. Seleziona Amazon Data Firehose come Tipo di origine.
  5. Seleziona Custom Security Data Analytics (Analisi personalizzata dei dati di sicurezza) come Tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • Delimitatore di divisione: (facoltativo) inserisci \n per dividere i log delimitati da nuove righe.
    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Rivedi la configurazione del feed e fai clic su Invia.
  10. Fai clic su Genera chiave segreta per generare una chiave segreta per autenticare questo feed.
  11. Copia e salva la chiave segreta, perché non potrai più visualizzarla.
  12. Vai alla scheda Dettagli.
  13. Copia l'URL dell'endpoint del feed dal campo Endpoint Information (Informazioni sull'endpoint).
  14. Fai clic su Fine.

Creare una chiave API Google Cloud

  1. Vai alla pagina Credenziali della console Google Cloud all'indirizzo https://console.cloud.google.com/apis/credentials
  2. Fai clic su Crea credenziali e poi seleziona Chiave API.
  3. Fai clic su Modifica chiave API per limitare la chiave.
  4. In Restrizioni delle API, seleziona Limita chiave.
  5. Cerca e seleziona API Google SecOps.
  6. Fai clic su Salva.
  7. Copia e salva la chiave API.

Costruisci l'URL dell'endpoint

  1. Aggiungi la chiave API all'URL dell'endpoint del feed nel seguente formato:

    <FEED_ENDPOINT_URL>?key=<API_KEY>
    

    Esempio:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
    
  2. Salva questo URL completo per il passaggio successivo.

Crea criterio IAM per Firehose

  1. Nella console AWS, vai a IAM > Policy > Crea policy > Scheda JSON.
  2. Incolla il seguente JSON dei criteri:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/CustomSecurityToChronicle"
            }
        ]
    }
    
  3. Sostituisci quanto segue:

    • <REGION>: la tua regione AWS (ad esempio us-east-1).
    • <ACCOUNT_ID>: il tuo ID account AWS (numero di 12 cifre).
  4. Assegna al criterio il nome CloudWatchLogsToFirehosePolicy.

  5. Fai clic su Crea policy.

Crea un ruolo IAM per CloudWatch Logs

  1. Vai a IAM > Ruoli > Crea ruolo.
  2. Seleziona Norme di attendibilità personalizzate e incolla:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. Sostituisci <REGION> con la tua regione AWS.

  4. Fai clic su Avanti.

  5. Cerca e seleziona la norma CloudWatchLogsToFirehosePolicy che hai creato nel passaggio precedente.

  6. Fai clic su Avanti.

  7. Assegna un nome al ruolo CloudWatchLogsToFirehoseRole.

  8. Fai clic su Crea ruolo.

Crea stream di distribuzione Kinesis Data Firehose

  1. Nella console AWS, vai a Kinesis > Data Firehose > Crea stream di distribuzione.
  2. Fornisci i seguenti dettagli di configurazione:

    • Origine e destinazione:

      • Origine: seleziona PUT diretto o altre origini
      • Destinazione: seleziona Endpoint HTTP.
    • Nome dello stream di pubblicazione:

      • Nome dello stream di distribuzione: inserisci CustomSecurityToChronicle
    • Destinazione endpoint HTTP:

      • URL endpoint HTTP: inserisci l'URL endpoint completo che hai creato in precedenza (endpoint feed + chiave API)
      • Codifica dei contenuti: seleziona GZIP (consigliato per risparmiare larghezza di banda)
    • Intestazioni HTTP personalizzate:

      • Fai clic su Aggiungi intestazione HTTP personalizzata.
      • Nome intestazione: inserisci X-Goog-Chronicle-Auth
      • Valore dell'intestazione: inserisci la chiave segreta che hai salvato in un passaggio precedente.
    • Impostazioni di backup:

      • Backup del record di origine in Amazon S3: seleziona Solo dati non riusciti (opzione consigliata).
      • Bucket S3: seleziona un bucket esistente o creane uno nuovo per i record non riusciti
    • Suggerimenti per il buffer:

      • Dimensioni buffer: inserisci 1 MiB (minimo per gli endpoint HTTP)
      • Intervallo di buffer: inserisci 60 secondi
    • Durata del nuovo tentativo:

      • Durata del tentativo: inserisci 300 secondi (5 minuti)
  3. Fai clic su Crea stream di pubblicazione.

  4. Attendi che lo stato dello stream di distribuzione cambi in Attivo (1-2 minuti).

Abbonati al gruppo di log CloudWatch a Firehose

  1. Nella console AWS, vai a CloudWatch > Log > Gruppi di log.
  2. Seleziona il gruppo di log di destinazione che contiene i log di analisi della sicurezza personalizzati.
  3. Fai clic sulla scheda Filtri abbonamenti.
  4. Fai clic su Crea > Crea filtro di abbonamento Amazon Kinesis Data Firehose.
  5. Fornisci i seguenti dettagli di configurazione:
    • Destinazione: seleziona lo stream di distribuzione CustomSecurityToChronicle.
    • Concedi autorizzazione: seleziona il ruolo CloudWatchLogsToFirehoseRole.
    • Nome filtro sottoscrizioni: inserisci CustomSecurityToChronicle.
    • Formato log: seleziona Altro (Google SecOps gestisce l'analisi).
    • Pattern di filtro della sottoscrizione: lascia vuoto per inviare tutti gli eventi o inserisci un pattern di filtro per inviare solo eventi specifici.
  6. Fai clic su Avvia streaming.
  7. I log verranno ora trasmessi in streaming in tempo reale a Google SecOps tramite Firehose.

Crea un parser personalizzato (facoltativo)

Dopo aver importato dati di sicurezza personalizzati come log non strutturati, puoi creare un parser personalizzato per normalizzare i dati in formato UDM per una migliore ricerca e rilevamento.

Quando creare un parser personalizzato

Crea un parser personalizzato quando:

  • Devi estrarre campi specifici dal formato log personalizzato
  • Vuoi attivare la ricerca UDM sui tuoi dati personalizzati
  • Per le regole di rilevamento, devi mappare i campi personalizzati ai campi UDM standard
  • Vuoi migliorare il rendimento della ricerca indicizzando campi specifici

Crea un tipo di log personalizzato

  1. Vai a Impostazioni SIEM > Tipi di log disponibili.
  2. Fai clic su Richiedi un tipo di log.
  3. Nella sezione Crea un tipo di log personalizzato o richiedi un tipo di log predefinito, seleziona Crea un tipo di log personalizzato.
  4. Fornisci le seguenti informazioni:
    • Nome tipo di log: inserisci un nome descrittivo (ad esempio CUSTOM_SECURITY_ANALYTICS).
    • Description (Descrizione): inserisci una descrizione del tipo di log.
    • Log di esempio: incolla 5-10 voci di log di esempio nel formato non elaborato.
  5. Fai clic su Invia.
  6. Il tipo di log personalizzato sarà disponibile tra circa 10 minuti.

Crea parser personalizzato

  1. Vai a Impostazioni SIEM > Parser.
  2. Fai clic su Crea parser.
  3. Seleziona Parser personalizzato.
  4. Fornisci le seguenti informazioni:
    • Nome parser: inserisci un nome descrittivo.
    • Tipo di log: seleziona il tipo di log personalizzato (ad esempio, CUSTOM_SECURITY_ANALYTICS)
    • Codice del parser: inserisci la configurazione del parser utilizzando il linguaggio di configurazione del parser di Google SecOps
  5. Testa il parser con log di esempio.
  6. Fai clic su Invia per attivare il parser.

Esempio di configurazione del parser

  • Per un formato dei log JSON personalizzato:

    {
        "timestamp": "2025-01-15T10:30:00Z",
        "event_type": "authentication",
        "user": "john.doe@example.com",
        "action": "login",
        "result": "success",
        "source_ip": "203.0.113.45"
    }
    

    Esempio di configurazione del parser:

    filter {
        json {
            fields {
                timestamp: timestamp
                event_type: event_type
                user: user
                action: action
                result: result
                source_ip: source_ip
            }
        }
    }
    
    event {
        $e.metadata.event_timestamp.seconds = parseTimestamp(timestamp, "yyyy-MM-dd'T'HH:mm:ss'Z'")
        $e.metadata.event_type = "USER_LOGIN"
        $e.principal.user.email_addresses = user
        $e.target.ip = source_ip
        $e.security_result.action = if(result == "success", "ALLOW", "BLOCK")
    }
    

    Per saperne di più sulla creazione di parser personalizzati, vedi Gestire i parser predefiniti e personalizzati.

Verificare l'importazione dati

Dopo aver configurato il feed, verifica che i dati vengano importati correttamente.

Controllare lo stato del feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Trova il tuo feed nell'elenco.
  3. Controlla la colonna Stato:
    • Attivo: il feed è in esecuzione e acquisisce dati
    • Errore: si è verificato un errore nel feed (fai clic per visualizzare i dettagli)
    • In pausa: il feed è in pausa

Cercare i log importati

  1. Vai a Ricerca > Scansione log grezzi.
  2. Inserisci una query di ricerca per trovare i log personalizzati:

    metadata.log_type = "CUSTOM_SECURITY_DATA_ANALYTICS"
    
  3. Se necessario, modifica l'intervallo di tempo.

  4. Fai clic su Cerca.

  5. Verifica che i log vengano visualizzati nei risultati.

Monitorare le metriche dei feed

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic sul nome del feed.
  3. Vai alla scheda Metriche.
  4. Esamina le seguenti metriche:
    • Eventi importati: numero totale di eventi importati
    • Byte importati: volume totale di dati importati
    • Tasso di importazione: eventi al secondo
    • Errori: numero di errori di importazione

Risoluzione dei problemi

Problemi di importazione dei webhook

  • Problema: HTTP 401 Non autorizzato

    • Causa: chiave API o chiave segreta non valida
    • Soluzione: verifica che la chiave API e la chiave segreta siano corrette e non siano scadute
  • Problema: HTTP 403 Forbidden

    • Causa: la chiave API non dispone delle autorizzazioni API di Chronicle
    • Soluzione: modifica la chiave API e assicurati che API Chronicle sia selezionata in Restrizioni delle API.
  • Problema: richiesta non valida HTTP 400

    • Causa: formato o payload della richiesta non validi
    • Soluzione: verifica che l'intestazione Content-Type sia impostata su application/json e che il payload sia un JSON valido

Problemi di importazione di S3/GCS/Azure Blob

  • Problema: nessun dato importato

    • Causa: URI del bucket errato o autorizzazioni mancanti
    • Soluzione: verifica che l'URI del bucket includa la barra finale e che l'account di servizio abbia il ruolo Visualizzatore oggetti Storage
  • Problema: i file non vengono eliminati dopo l'importazione

    • Causa: l'account di servizio non dispone delle autorizzazioni di eliminazione
    • Soluzione: concedi il ruolo Storage Object Admin anziché Storage Object Viewer
  • Problema: i file precedenti non vengono importati

    • Causa: l'impostazione Durata massima del file esclude i file meno recenti
    • Soluzione: aumenta il valore di Età massima file nella configurazione del feed

Problemi di importazione di Firehose

  • Problema: il flusso di pubblicazione mostra errori

    • Causa: URL dell'endpoint o autenticazione non validi
    • Soluzione: verifica che l'URL dell'endpoint includa il parametro della chiave API e che l'intestazione X-Goog-Chronicle-Auth contenga la chiave segreta corretta
  • Problema: metrica di aggiornamento dei dati elevata

    • Causa: Firehose è limitato o si verificano errori di recapito
    • Soluzione: controlla le metriche CloudWatch per la frequenza di ThrottledRecords e DeliveryToHTTP.Success
  • Problema: nessun flusso di log da CloudWatch

    • Causa: filtro di sottoscrizione non configurato o autorizzazioni mancanti nel ruolo IAM
    • Soluzione: verifica che il filtro di sottoscrizione sia attivo e che il ruolo IAM disponga delle autorizzazioni firehose:PutRecord

Tabella di mappatura UDM

I log di analisi dei dati di sicurezza personalizzati vengono importati come dati non strutturati. Per attivare il mapping dei campi UDM, crea un parser personalizzato come descritto nella sezione "Crea un parser personalizzato" precedente.

Dopo aver creato un parser personalizzato, i campi UDM verranno compilati in base alla configurazione del parser. I campi UDM comuni per i dati di analisi della sicurezza includono:

Campo UDM Descrizione
metadata.event_timestamp Timestamp evento
metadata.event_type Tipo di evento (ad esempio, USER_LOGIN, FILE_ACCESS)
principal.user.email_addresses Indirizzo email utente
principal.ip Indirizzo IP di origine
target.resource.name Nome risorsa target
security_result.action Azione di sicurezza (ALLOW, BLOCK e così via)
security_result.severity Gravità dell'evento

Per un elenco completo dei campi UDM, consulta i riferimenti ai campi UDM.

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