Raccogli Google Cloud i log delle attività di avviso di monitoraggio

Supportato in:

Questo documento spiega come importare i log di Cloud Logging relativi all'attività di avviso di Cloud Monitoring in Google Security Operations utilizzando Google Cloud Storage V2.

Cloud Monitoring fornisce funzionalità di avviso per le risorse Google Cloud. I criteri di avviso basati su log ti inviano una notifica quando nei log viene visualizzato un messaggio specifico. Quando una voce di log soddisfa la condizione della criterio di avviso, viene aperto un incidente in Cloud Monitoring e ricevi una notifica relativa all'incidente. Questa integrazione ti consente di esportare le voci di Cloud Logging in Google Security Operations per l'analisi e la correlazione della sicurezza.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Un'istanza Google SecOps
  • ProgettoGoogle Cloud con l'API Cloud Storage abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per gestire le policy IAM nei bucket GCS
  • Autorizzazioni per configurare i sink di Cloud Logging

Creazione di un bucket Google Cloud Storage

Utilizzo di Google Cloud Console

  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 monitoring-logs-export).
    Tipo di località Scegli in base alle tue esigenze (regione singola, doppia regione, 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.

Utilizzo dello strumento a riga di comando gcloud

  • In alternativa, crea un bucket utilizzando il comando gcloud:

    gcloud storage buckets create gs://monitoring-logs-export \
        --location=us-central1 \
        --default-storage-class=STANDARD
    
    • Sostituisci:
      • monitoring-logs-export: il nome del bucket richiesto (univoco a livello globale).
      • us-central1: la regione che preferisci.

Configura Cloud Logging per esportare i log in GCS

Quando vengono indirizzate a Cloud Storage, le voci di log vengono archiviate come file JSON. Puoi esportare i log relativi all'attività di avviso di Cloud Monitoring, ad esempio gli audit log per la gestione delle norme di avviso.

Crea un sink di log

  1. Nella console Google Cloud, vai a Logging > Router log.
  2. Fai clic su Crea sink.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome sink: inserisci un nome descrittivo, ad esempio monitoring-alerts-to-gcs.
    • Descrizione sink: descrizione facoltativa.
  4. Fai clic su Avanti.
  5. Nella sezione Seleziona il servizio sink:
    • Servizio sink: seleziona Bucket Cloud Storage.
    • Seleziona bucket Cloud Storage: seleziona il bucket (ad esempio monitoring-logs-export) dall'elenco.
  6. Fai clic su Avanti.
  7. Nella sezione Scegli i log da includere nel sink, inserisci una query di filtro per selezionare i log da esportare.

    • Esempio di filtro per gli audit log di Cloud Monitoring:

      protoPayload.serviceName="monitoring.googleapis.com"
      logName:"cloudaudit.googleapis.com/activity"
      
    • Esempio di filtro per i trigger dei criterio di avviso basati su log:

      Se vuoi esportare i log sottostanti che attivano i criteri di avviso basati su log, utilizza un filtro che corrisponda a questi log specifici. Ad esempio:

      severity >= ERROR
      resource.type="gce_instance"
      
  8. Fai clic su Avanti.

  9. (Facoltativo) Configura i filtri di esclusione, se necessario.

  10. Fai clic su Crea sink.

Potrebbero essere necessarie diverse ore prima che i nuovi sink che indirizzano i dati di log ai bucket Cloud Storage inizino a instradare le voci di log. Le voci di log con routing vengono salvate nei bucket Cloud Storage in batch orari. Potrebbero essere necessarie dalle 2 alle 3 ore prima che inizino a comparire le prime voci.

Recuperare il account di servizio Google SecOps

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Configura un feed in Google SecOps per importare i log di Cloud Monitoring

  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, Google Cloud Monitoring Alerts Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona GCP_MONITORING_ALERTS come Tipo di log.

  7. Fai clic su Ottieni service account. Verrà visualizzata un'email univoca del account di servizio, 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:

      gs://monitoring-logs-export/
      
      • Sostituisci monitoring-logs-export con il nome del tuo bucket GCS.
    • 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 bucket GCS.

Utilizzo di Google Cloud Console

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio, monitoring-logs-export).
  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.

Utilizzo dello strumento a riga di comando gcloud

  • In alternativa, concedi le autorizzazioni utilizzando il comando gcloud:

    gcloud storage buckets add-iam-policy-binding gs://monitoring-logs-export \
        --member="serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.objectViewer"
    
    • Sostituisci:
      • monitoring-logs-export: il nome del bucket.
      • SECOPS_SERVICE_ACCOUNT_EMAIL: l'email del account di servizio Google SecOps.

Utilizzo dello strumento a riga di comando gsutil (legacy)

  • Concedi al account di servizio SecOps le autorizzazioni necessarie per leggere gli oggetti all'interno del bucket di destinazione:

    gsutil iam ch serviceAccount:SECOPS_SERVICE_ACCOUNT_EMAIL:objectViewer \
        gs://monitoring-logs-export
    

Verifica le autorizzazioni

  • Per verificare che le autorizzazioni siano state concesse correttamente:

    gcloud storage buckets get-iam-policy gs://monitoring-logs-export \
        --flatten="bindings[].members" \
        --filter="bindings.role:roles/storage.objectViewer"
    

    Nell'output dovrebbe essere visualizzato l'indirizzo email del account di servizio Google SecOps.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
jsonPayload.type_1 additional.fields.jsonPayload_type_1 Valore copiato direttamente
jsonPayload.debugInfo additional.fields.number Estratto da jsonPayload.debugInfo utilizzando il pattern grok
jsonPayload.scheduledTime, receiveTimestamp, timestamp metadata.event_timestamp Valore di jsonPayload.scheduledTime se non è vuoto, altrimenti receiveTimestamp se non è vuoto, altrimenti timestamp se non è vuoto, convertito utilizzando la corrispondenza della data
event_type metadata.event_type Valore di event_type se non è vuoto, altrimenti impostato su "GENERIC_EVENT"
insertId metadata.product_log_id Valore copiato direttamente
jsonPayload.targetType network.application_protocol Valore copiato direttamente
httpRequest.status network.http.response_code Convertito in numero intero
resource.labels.location principal.location.name Valore copiato direttamente
jsonPayload.jobName principal.url Valore copiato direttamente
jsonPayload.status security_result.action Imposta su "BLOCK" se jsonPayload.status == "PERMISSION_DENIED"
gravità security_result.severity Imposta su INFORMATIONAL se severity =~ (?i)INFO; LOW se severity == "LOW"; MEDIUM se severity == "MEDIUM"; HIGH se severity == "HIGH"; CRITICAL se severity == "VERY-HIGH"
jsonPayload.debugInfo security_result.summary Estratto da jsonPayload.debugInfo utilizzando il pattern grok
logName src.url Valore copiato direttamente
resource.labels.project_id target.resource.attribute.labels.project_id Valore copiato direttamente
resource.labels.job_id target.resource.attribute.labels.resource_labels_job_id Valore copiato direttamente
resource.type target.resource.resource_subtype Valore copiato direttamente
jsonPayload.url target.url Valore copiato direttamente
metadata.product_name Imposta su "Gcp_monitoring_alerts"
metadata.vendor_name Imposta "GCP_MONITORING_ALERTS"

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