Raccogli Google Cloud Log di Compute

Supportato in:

Questo documento spiega come configurare l'esportazione dei log di Compute in Google Security Operations utilizzando Cloud Storage. Google Cloud Il parser estrae i campi, normalizza il campo del messaggio e mappa i dati estratti allo schema Unified Data Model (UDM) per una rappresentazione coerente degli eventi di sicurezza. Gestisce vari formati di log, inclusi messaggi simili a syslog e coppie chiave-valore, e classifica gli eventi in base ai campi estratti come type e action.

Prima di iniziare

Assicurati di disporre dei seguenti prerequisiti:

  • Istanza Google SecOps.
  • Compute è configurato e attivo nel tuo ambiente Google Cloud .
  • Accesso privilegiato a Google Cloud.

Crea un bucket Google Cloud Storage

  1. Accedi alla consoleGoogle Cloud .
  2. Vai alla pagina Bucket Cloud Storage.

    Vai a Bucket

  3. Fai clic su Crea.

  4. Nella pagina Crea un bucket, inserisci le informazioni del bucket. Dopo ogni passaggio riportato di seguito, fai clic su Continua per passare al passaggio successivo:

    1. Nella sezione Inizia, segui questi passaggi:

      1. Inserisci un nome univoco che soddisfi i requisiti per i nomi dei bucket, ad esempio compute-logs.
      2. Per attivare lo spazio dei nomi gerarchico, fai clic sulla freccia di espansione per espandere la sezione Ottimizza per workload orientati ai file e con uso intensivo dei dati, poi seleziona Abilita uno spazio dei nomi gerarchico in questo bucket.

        1. Per aggiungere un'etichetta del bucket, fai clic sulla freccia di espansione per espandere la sezione Etichette.
        2. Fai clic su Aggiungi etichetta e specifica una chiave e un valore per l'etichetta.
    2. Nella sezione Scegli dove archiviare i tuoi dati, segui questi passaggi:

      1. Seleziona un Tipo di località.

        1. Utilizza il menu del tipo di località per selezionare una Località in cui i dati degli oggetti all'interno del bucket verranno archiviati in modo permanente.
        1. Per configurare la replica tra bucket, espandi la sezione Configura replica tra bucket.
    3. Nella sezione Scegli una classe di archiviazione per i tuoi dati, seleziona una classe di archiviazione predefinita per il bucket oppure Autoclass per la gestione automatica della classe di archiviazione dei dati del bucket.

    4. Nella sezione Scegli come controllare l'accesso agli oggetti, seleziona No per applicare la prevenzione dell'accesso pubblico e seleziona un modello di controllo dell'accesso per gli oggetti del bucket.

    5. Nella sezione Scegli come proteggere i dati degli oggetti, segui questi passaggi:

      1. Seleziona una delle opzioni in Protezione dei dati che vuoi impostare per il bucket.
      2. Per scegliere come criptare i dati degli oggetti, fai clic sulla freccia di espansione con l'etichetta Crittografia dei dati e seleziona un metodo di crittografia dei dati.
  5. Fai clic su Crea.

Configura Google Cloud l'esportazione dei log di Compute

  1. Nella Google Cloud console, vai a Logging > Router log.
  2. Fai clic su Crea sink.
  3. Fornisci i seguenti dettagli:

    • Nome sink: fornisci un nome significativo, ad esempio Compute-Logs-Sink.
    • Destinazione sink: seleziona Cloud Storage .
    • Destinazione sink: seleziona Cloud Storage e inserisci l'URI del bucket, ad esempio gs://<your-bucket-name>/compute-logs.
    • Filtro log: imposta i filtri per acquisire i log di Compute nel seguente modo: Google Cloud

      • Nome e tipo di log:

        logName="*compute*"
        
      • Campi relativi alla rete (come indirizzi IP, porte):

        jsonPayload.connection.dest_ip="*" OR jsonPayload.connection.src_ip="*"
        
      • Dettagli istanza:

        jsonPayload.dest_instance.project_id="*"
        jsonPayload.src_instance.project_id="*"
        
      • Dettagli relativi alla sicurezza:

        jsonPayload.rule_details.action="ALLOW" OR jsonPayload.rule_details.action="BLOCK"
        
  4. Fai clic su Crea.

Configura le autorizzazioni per Cloud Storage

  1. Vai a IAM > IAM e amministrazione > Service account.
  2. Trova il account di servizio Cloud Logging, ad esempio service-account@logging.iam.gserviceaccount.com.
  3. Fornisci il ruolo roles/storage.admin sul bucket.

Configurare i feed

Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:

  • Impostazioni SIEM > Feed > Aggiungi nuovo
  • Hub dei contenuti > Pacchetti di contenuti > Inizia

Come configurare il feed di Google Cloud compute

  1. Fai clic sul pacchetto Google Cloud Compute platform.
  2. Individua il tipo di log GCP Compute Feed e fai clic su Aggiungi nuovo feed.
  3. Specifica i valori per i seguenti campi:

    • Tipo di origine: Google Cloud Storage V2.
    • URI bucket di archiviazione: URL del bucket Cloud Storage, ad esempio gs://compute-context-logs.
    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
  • Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
  • Service account Chronicle: copia il service account. Ti servirà per aggiungere le autorizzazioni nel bucket per consentire a Google SecOps di leggere o eliminare i dati nel bucket.

Opzioni avanzate

  • Nome feed: un valore precompilato che identifica il feed.
  • Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
  • Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.
  1. Fai clic su Crea feed.

Per ulteriori informazioni sulla configurazione di più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare i feed per prodotto.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
addr read_only_udm.principal.ip Unito all'elenco degli indirizzi IP principali se il campo non è vuoto o non contiene "?".
jsonPayload.connection.dest_ip read_only_udm.target.ip Unito all'elenco degli indirizzi IP di destinazione, se il campo esiste.
jsonPayload.connection.dest_port read_only_udm.target.port Convertito in stringa, poi in numero intero e mappato se non si verificano errori durante la conversione.
jsonPayload.connection.protocol read_only_udm.network.ip_protocol Convertito in stringa, poi in numero intero. Utilizzato per determinare il protocollo IP (TCP, UDP e così via) utilizzando una tabella di ricerca e mappato se non si verificano errori durante la conversione.
jsonPayload.connection.src_ip read_only_udm.principal.ip Unito all'elenco di indirizzi IP dell'entità se il campo esiste.
jsonPayload.connection.src_port read_only_udm.principal.port Convertito in stringa, poi in numero intero e mappato se non si verificano errori durante la conversione.
jsonPayload.dest_instance.project_id read_only_udm.target.resource.product_object_id Mappato in modo condizionale se esiste jsonPayload.dest_vpc.project_id.
jsonPayload.dest_instance.region read_only_udm.target.location.name Mappato in modo condizionale se esiste jsonPayload.dest_vpc.project_id.
jsonPayload.dest_instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name Mappato in modo condizionale se esiste jsonPayload.dest_vpc.project_id.
jsonPayload.dest_instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone Mappato in modo condizionale se esiste jsonPayload.dest_vpc.project_id.
jsonPayload.dest_vpc.project_id read_only_udm.target.cloud.vpc.product_object_id Utilizzato come condizione per mappare i campi correlati.
jsonPayload.dest_vpc.subnetwork_name read_only_udm.target.cloud.vpc.name Mappato in modo condizionale se esiste jsonPayload.dest_vpc.project_id.
jsonPayload.instance.project_id read_only_udm.target.resource.product_object_id Mappato in modo condizionale se esiste jsonPayload.instance.project_id.
jsonPayload.instance.region read_only_udm.target.location.name Mappato in modo condizionale se esiste jsonPayload.instance.project_id.
jsonPayload.instance.vm_name read_only_udm.target.resource.attribute.cloud.project.name Mappato in modo condizionale se esiste jsonPayload.instance.project_id.
jsonPayload.instance.zone read_only_udm.target.resource.attribute.cloud.availability_zone Mappato in modo condizionale se esiste jsonPayload.instance.project_id.
jsonPayload.message read_only_udm.metadata.product_event_type, read_only_udm.principal.application, read_only_udm.target.process.pid, read_only_udm.target.user.userid, read_only_udm.principal.hostname, read_only_udm.target.process.command_line, read_only_udm.security_result.description, read_only_udm.principal.process.file.full_path Analizzati e mappati in campi diversi in base a pattern grok e logica condizionale.
jsonPayload.rule_details.action read_only_udm.security_result.action Utilizzato per determinare l'azione del risultato di sicurezza (CONSENTI/BLOCCA) e mappato.
jsonPayload.rule_details.direction read_only_udm.network.direction Utilizzato per determinare la direzione della rete (INBOUND/OUTBOUND/UNKNOWN_DIRECTION) e mappato.
jsonPayload.rule_details.priority read_only_udm.security_result.priority_details Convertito in stringa e mappato se non si verificano errori durante la conversione.
jsonPayload.rule_details.reference read_only_udm.security_result.rule_labels.value Mappato al valore dell'etichetta della regola.
jsonPayload.src_instance.project_id read_only_udm.principal.resource.product_object_id Mappato in modo condizionale se esiste jsonPayload.src_vpc.project_id.
jsonPayload.src_instance.region read_only_udm.principal.location.name Mappato in modo condizionale se esiste jsonPayload.src_vpc.project_id.
jsonPayload.src_instance.vm_name read_only_udm.principal.resource.attribute.cloud.project.name Mappato in modo condizionale se esiste jsonPayload.src_vpc.project_id.
jsonPayload.src_instance.zone read_only_udm.principal.resource.attribute.cloud.availability_zone Mappato in modo condizionale se esiste jsonPayload.src_vpc.project_id.
jsonPayload.src_vpc.project_id read_only_udm.principal.cloud.vpc.product_object_id Utilizzato come condizione per mappare i campi correlati.
jsonPayload.src_vpc.subnetwork_name read_only_udm.principal.cloud.vpc.name Mappato in modo condizionale se esiste jsonPayload.src_vpc.project_id.
jsonPayload.vpc.project_id read_only_udm.target.cloud.vpc.product_object_id Mappato in modo condizionale se esiste jsonPayload.vpc.project_id.
jsonPayload.vpc.subnetwork_name read_only_udm.target.cloud.vpc.name Mappato in modo condizionale se esiste jsonPayload.vpc.project_id.
logName read_only_udm.security_result.category_details Mappato direttamente.
resource.labels.instance_id read_only_udm.principal.resource.product_object_id, read_only_udm.principal.asset_id Mappato in modo condizionale. Se il tipo è "PROCTITLE", viene utilizzato per creare l'ID risorsa.
resource.labels.location read_only_udm.principal.location.name Mappato in modo condizionale se il campo esiste.
resource.labels.project_id read_only_udm.metadata.product_deployment_id Mappato in modo condizionale se il campo esiste.
resource.labels.zone read_only_udm.principal.resource.attribute.cloud.availability_zone Mappato in modo condizionale se il campo esiste.
resource.type read_only_udm.metadata.event_type Utilizzato per determinare il tipo di evento e mappato.
timestamp read_only_udm.metadata.event_timestamp Mappato direttamente.
tipo read_only_udm.metadata.product_event_type, read_only_udm.metadata.event_type, read_only_udm.extensions.auth.type Utilizzato per determinare il tipo di evento, il tipo di evento prodotto e il tipo di autenticazione e mappato di conseguenza.
read_only_udm.metadata.event_type La logica imposta il tipo di evento in base al campo "type" e ad altre condizioni. Se non viene trovata alcuna corrispondenza specifica, il valore predefinito è "GENERIC_EVENT".
read_only_udm.metadata.log_type Valore costante "GCP_COMPUTE".
read_only_udm.metadata.vendor_name Valore costante "Google Cloud Platform".
read_only_udm.metadata.product_name Valore costante "Google Cloud Platform".
read_only_udm.security_result.rule_labels.key Valore costante "Reference".
read_only_udm.target.cloud.vpc.resource_type Impostato in modo condizionale su "VPC_NETWORK" se esistono jsonPayload.instance.project_id o jsonPayload.dest_vpc.project_id.
read_only_udm.target.resource.attribute.cloud.environment Impostato in modo condizionale su "GOOGLE_CLOUD_PLATFORM" se esistono jsonPayload.instance.project_id, jsonPayload.dest_vpc.project_id o jsonPayload.src_vpc.project_id.
read_only_udm.principal.administrative_domain Mappato dal campo "Dominio account" estratto dal campo "kv_data".
read_only_udm.principal.user.user_display_name Mappato dal campo "Nome account" estratto dal campo "kv_data".
read_only_udm.target.resource.name Mappato dal campo "Nome oggetto" estratto dal campo "kv_data".
read_only_udm.target.resource.type Mappato dal campo "Tipo di oggetto" estratto dal campo "kv_data".
read_only_udm.principal.process.pid Mappato dal campo "ID processo" estratto dal campo "kv_data".
read_only_udm.target.user.windows_sid Mappato dal campo "ID sicurezza" estratto dal campo "kv_data".
read_only_udm.network.session_id Mappato dal campo "auid".

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