Raccogliere i log di Cloud Run

Supportato in:

Questa guida spiega come esportare i log di Cloud Run in Google Security Operations utilizzando Cloud Storage. Il parser estrae i campi dai log JSON, trasformandoli nel modello Unified Data Model (UDM). Gestisce vari formati di log, inclusi i dati delle richieste HTTP e i log di controllo del sistema, mappando i campi pertinenti su UDM e arricchendo i dati con etichette e metadati specifici di Cloud Run.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps.
  • Cloud Run è 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 del nome del bucket, ad esempio cloudrun-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.

      3. Per aggiungere un'etichetta del bucket, fai clic sulla freccia di espansione per espandere la sezione Etichette.

      4. 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à.
      2. 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.

      3. 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 l'esportazione dei log in Cloud Run

  1. Nella pagina Google Cloud Benvenuto, fai clic sull'icona Cloud Run.
  2. Cerca Logging nella barra di ricerca in alto e fai clic su Invio.
  3. In Esplora log, filtra i log scegliendo Cloud Run in Nome log e fai clic su Applica.
  4. Nel menu, fai clic su Altre azioni > Crea sink.
  5. Fornisci le seguenti configurazioni:
    1. Dettagli del sink: inserisci un nome e una descrizione.
    2. Fai clic su Avanti.
    3. Destinazione sink: seleziona Bucket Cloud Storage.
    4. Bucket Cloud Storage: seleziona il bucket creato in precedenza o creane uno nuovo.
    5. Fai clic su Avanti.
    6. Scegli i log da includere nel sink: un log predefinito viene compilato quando selezioni un'opzione in Bucket Cloud Storage.
    7. Fai clic su Avanti.
    8. (Facoltativo) Scegli i log da escludere dal sink: seleziona i log che non vuoi sincronizzare.
  6. Fai clic su Crea sink.

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 Log di Cloud Run.
  5. Seleziona Google Cloud Storage come Tipo di origine.
  6. Seleziona GCP Cloud Run 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
httpRequest.latency target.resource.attribute.labels.[] Il valore di httpRequest.latency del log non elaborato viene utilizzato come valore per un'etichetta con chiave http_request_latency all'interno di target.resource.attribute.labels.
httpRequest.protocol network.application_protocol Se httpRequest.protocol contiene HTTP, il campo UDM è impostato su HTTP.
httpRequest.remoteIp principal.asset.ip Viene utilizzato il valore di httpRequest.remoteIp del log non elaborato.
httpRequest.remoteIp principal.ip Viene utilizzato il valore di httpRequest.remoteIp del log non elaborato.
httpRequest.requestMethod network.http.method Viene utilizzato il valore di httpRequest.requestMethod del log non elaborato.
httpRequest.requestSize network.sent_bytes Il valore di httpRequest.requestSize del log non elaborato viene convertito in un numero intero senza segno e utilizzato.
httpRequest.requestUrl target.url Viene utilizzato il valore di httpRequest.requestUrl del log non elaborato.
httpRequest.responseSize network.received_bytes Il valore di httpRequest.responseSize del log non elaborato viene convertito in un numero intero senza segno e utilizzato.
httpRequest.serverIp target.asset.ip Viene utilizzato il valore di httpRequest.serverIp del log non elaborato.
httpRequest.serverIp target.ip Viene utilizzato il valore di httpRequest.serverIp del log non elaborato.
httpRequest.status network.http.response_code Il valore di httpRequest.status del log non elaborato viene convertito in un numero intero e utilizzato.
httpRequest.userAgent network.http.parsed_user_agent Il valore di httpRequest.userAgent del log non elaborato viene analizzato come stringa user agent.
httpRequest.userAgent network.http.user_agent Viene utilizzato il valore di httpRequest.userAgent del log non elaborato.
insertId metadata.product_log_id Viene utilizzato il valore di insertId del log non elaborato.
labels.instanceId additional.fields.[] Il valore di labels.instanceId viene utilizzato come valore per un'etichetta con chiave instanceId all'interno di additional.fields.
labels.run.googleapis.com_execution_name additional.fields.[] Il valore di labels.run.googleapis.com_execution_name viene utilizzato come valore per un'etichetta con chiave execution_name all'interno di additional.fields.
labels.run.googleapis.com_task_attempt additional.fields.[] Il valore di labels.run.googleapis.com_task_attempt viene utilizzato come valore per un'etichetta con chiave task_attempt all'interno di additional.fields.
labels.run.googleapis.com_task_index additional.fields.[] Il valore di labels.run.googleapis.com_task_index viene utilizzato come valore per un'etichetta con chiave task_index all'interno di additional.fields.
logName metadata.product_event_type Viene utilizzato il valore di logName del log non elaborato.
resource.labels.configuration_name target.resource.attribute.labels.[] Il valore di resource.labels.configuration_name viene utilizzato come valore per un'etichetta con chiave configuration_name all'interno di target.resource.attribute.labels.
resource.labels.job_name additional.fields.[] Il valore di resource.labels.job_name viene utilizzato come valore per un'etichetta con chiave job_name all'interno di additional.fields.
resource.labels.location target.location.name Viene utilizzato il valore di resource.labels.location del log non elaborato.
resource.labels.project_id target.resource.attribute.labels.[] Il valore di resource.labels.project_id viene utilizzato come valore per un'etichetta con chiave project_id all'interno di target.resource.attribute.labels.
resource.labels.revision_name target.resource.attribute.labels.[] Il valore di resource.labels.revision_name viene utilizzato come valore per un'etichetta con chiave revision_name all'interno di target.resource.attribute.labels.
resource.labels.service_name target.resource.attribute.labels.[] Il valore di resource.labels.service_name viene utilizzato come valore per un'etichetta con chiave service_name all'interno di target.resource.attribute.labels.
resource.type target.resource.resource_subtype Viene utilizzato il valore di resource.type del log non elaborato.
severity security_result.severity Se il valore di severity corrisponde a Info (senza distinzione tra maiuscole e minuscole), il campo UDM viene impostato su INFORMATIONAL.
textPayload additional.fields.[] Il valore di textPayload viene utilizzato come valore per un'etichetta con chiave Textpayload all'interno di additional.fields.
timestamp metadata.event_timestamp Il valore di timestamp del log non elaborato viene analizzato come timestamp.
timestamp timestamp Il valore di timestamp del log non elaborato viene analizzato come timestamp. Determinato dalla logica del parser in base alla presenza di determinati campi. Il valore predefinito è GENERIC_EVENT. Se has_principal_ip, has_target_ip e httpRequest.protocol corrispondono a HTTP, il valore viene impostato su NETWORK_HTTP. Codificato in modo permanente su GCP_RUN. Codificato in modo permanente su GCP_RUN. Codificato in modo permanente su Google Cloud Platform. Codificato in modo permanente su GOOGLE_CLOUD_PLATFORM.

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