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 soddisfare i 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:

      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 > Log Router.
  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
  • Hub dei contenuti > Pacchetti di contenuti

Configura i feed da Impostazioni SIEM > Feed

Per configurare un 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 Google Cloud Log di Compute.
  5. Seleziona Google Cloud Storage come Tipo di origine.
  6. Seleziona GCP Compute come Tipo di log.
  7. Fai clic su Ottieni account di servizio come Account di servizio Chronicle.
  8. Fai clic su Avanti.
  9. Specifica i valori per i seguenti parametri di input:

    • URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione nel formato gs://my-bucket/<value>.
    • URI Is A: seleziona Directory which includes subdirectories (Directory che include sottodirectory).
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.

  10. Fai clic su Avanti.

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

Configurare i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • URI bucket di archiviazione: Google Cloud URL del bucket di archiviazione nel formato gs://my-bucket/<value>.
  • URI Is A: seleziona Directory which includes subdirectories (Directory che include sottodirectory).
  • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.

Opzioni avanzate

  • Nome feed: un valore precompilato che identifica il feed.
  • Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
  • Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
  • Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.

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 di 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.