Raccogliere i log di controllo di Azure Storage
Versione parser: 9.0
Questo documento spiega come esportare i log di controllo di Azure Storage in Google Security Operations utilizzando un account di archiviazione di Azure. Il parser elabora i log in formato JSON, trasformandoli nel modello UDM (Unified Data Model). Estrae i campi dal log non elaborato, esegue conversioni dei tipi di dati, arricchisce i dati con un contesto aggiuntivo (ad esempio l'analisi dello user agent e la suddivisione degli indirizzi IP) ed esegue il mapping dei campi estratti ai campi UDM corrispondenti.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Istanza Google SecOps
- Un tenant Azure attivo
- Accesso con privilegi ad Azure
Configurare l'account di archiviazione di Azure
- Nella console Azure, cerca Account di archiviazione.
- Fai clic su Crea.
- Specifica i valori per i seguenti parametri di input:
- Abbonamento: seleziona l'abbonamento.
- Gruppo di risorse: seleziona il gruppo di risorse.
- Regione: seleziona la regione.
- Prestazioni: seleziona le prestazioni (opzione consigliata: Standard).
- Ridondanza: seleziona la ridondanza (opzione consigliata: GRS o LRS).
- Nome account di archiviazione: inserisci un nome per il nuovo account di archiviazione.
- Fai clic su Rivedi e crea.
- Esamina la panoramica dell'account e fai clic su Crea.
- Nella pagina Panoramica dell'account di archiviazione, seleziona il sottomenu Chiavi di accesso in Sicurezza + rete.
- Fai clic su Mostra accanto a key1 o key2.
- Fai clic su Copia negli appunti per copiare la chiave.
- Salva la chiave in una posizione sicura per utilizzarla in un secondo momento.
- Nella pagina Panoramica dell'account di archiviazione, seleziona il sottomenu Endpoint in Impostazioni.
- Fai clic su Copia negli appunti per copiare l'URL dell'endpoint del servizio Blob, ad esempio
https://<storageaccountname>.blob.core.windows.net. - Salva l'URL dell'endpoint in una posizione sicura per utilizzarlo in un secondo momento.
Come configurare l'esportazione dei log per i log di controllo di Azure Storage
- Accedi al portale Azure utilizzando il tuo account con privilegi.
- Vai a Account di archiviazione > Impostazioni di diagnostica.
- Fai clic su + Aggiungi impostazione di diagnostica.
- Seleziona le impostazioni di diagnostica per
blob,queue,tableefile.- Seleziona l'opzione allLogs in Gruppi di categorie per ogni impostazione di diagnostica.
- Inserisci un nome descrittivo per ogni impostazione di diagnostica.
- Seleziona la casella di controllo Archivia in un account di archiviazione come destinazione.
- Specifica l'abbonamento e l'account di archiviazione.
- Fai clic su Salva.
Configura i feed
Esistono due punti di accesso diversi per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed > Aggiungi nuovo feed
- Hub contenuti > Pacchetti di contenuti > Inizia
Come configurare il feed di controllo di Azure Storage
- Fai clic sul pacchetto Piattaforma Azure.
- Individua il tipo di log Controllo di Azure Storage e fai clic su Aggiungi nuovo feed.
Specifica i valori per i seguenti campi:
- Tipo di origine: Microsoft Azure Blob Storage V2.
- URI Azure: l'URL dell'endpoint del blob.
ENDPOINT_URL/BLOB_NAME- Sostituisci quanto segue:
ENDPOINT_URL: l'URL dell'endpoint del blob (https://<storageaccountname>.blob.core.windows.net)BLOB_NAME: il nome del blob (ad esempio,<logname>-logs)
- Sostituisci quanto segue:
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze di importazione.
Maximum File Age (Età massima dei file): include i file modificati negli ultimi giorni. Il valore predefinito è 180 giorni.
Chiave condivisa: la chiave di accesso ad Azure Blob Storage.
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: le etichette applicate a tutti gli eventi di questo feed.
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 Configura i feed per prodotto.
Tabella di mapping UDM
| Campo log | Mapping UDM | Logica |
|---|---|---|
callerIpAddress |
principal.asset.ip |
L'indirizzo IP viene estratto dal campo callerIpAddress utilizzando un pattern grok e assegnato a principal.asset.ip. |
callerIpAddress |
principal.ip |
L'indirizzo IP viene estratto dal campo callerIpAddress utilizzando un pattern grok e assegnato a principal.ip. |
callerIpAddress |
principal.port |
Il numero di porta viene estratto dal campo callerIpAddress utilizzando un pattern grok e assegnato a principal.port. |
category |
security_result.category_details |
Il valore del campo category viene assegnato a security_result.category_details. |
correlationId |
security_result.detection_fields[0].key |
La stringa letterale correlationId viene assegnata al campo della chiave. |
correlationId |
security_result.detection_fields[0].value |
Il valore del campo correlationId viene assegnato a security_result.detection_fields[0].value. Il valore del campo time viene analizzato come timestamp e assegnato a event.idm.read_only_udm.metadata.event_timestamp. Se category è StorageWrite ed esiste principal.user.userid (derivato da properties.accountName), il valore viene impostato su USER_RESOURCE_UPDATE_CONTENT. Se category è StorageDelete ed esiste principal.user.userid, il valore viene impostato su USER_RESOURCE_DELETION. In caso contrario, il valore viene impostato su USER_RESOURCE_ACCESS. La stringa letterale AZURE_STORAGE_AUDIT viene assegnata a event.idm.read_only_udm.metadata.log_type. La stringa letterale AZURE_STORAGE_AUDIT viene assegnata a event.idm.read_only_udm.metadata.product_name. Il valore del campo schemaVersion viene assegnato a event.idm.read_only_udm.metadata.product_version. La stringa letterale AZURE_STORAGE_AUDIT viene assegnata a event.idm.read_only_udm.metadata.vendor_name. |
location |
target.location.name |
Il valore del campo location viene assegnato a target.location.name. |
operationName |
additional.fields[x].key |
La stringa letterale operationName viene assegnata al campo della chiave. |
operationName |
additional.fields[x].value.string_value |
Il valore del campo operationName viene assegnato a additional.fields[x].value.string_value. |
operationVersion |
additional.fields[x].key |
La stringa letterale operationVersion viene assegnata al campo della chiave. |
operationVersion |
additional.fields[x].value.string_value |
Il valore del campo operationVersion viene assegnato a additional.fields[x].value.string_value. |
properties.accountName |
principal.user.userid |
Il valore del campo properties.accountName viene assegnato a principal.user.userid. |
properties.clientRequestId |
additional.fields[x].key |
La stringa letterale clientRequestId viene assegnata al campo della chiave. |
properties.clientRequestId |
additional.fields[x].value.string_value |
Il valore del campo properties.clientRequestId viene assegnato a additional.fields[x].value.string_value. |
properties.etag |
additional.fields[x].key |
La stringa letterale etag viene assegnata al campo della chiave. |
properties.etag |
additional.fields[x].value.string_value |
Il valore del campo properties.etag viene assegnato a additional.fields[x].value.string_value. |
properties.objectKey |
additional.fields[x].key |
La stringa letterale objectKey viene assegnata al campo della chiave. |
properties.objectKey |
additional.fields[x].value.string_value |
Il valore del campo properties.objectKey viene assegnato a additional.fields[x].value.string_value. |
properties.requestMd5 |
additional.fields[x].key |
La stringa letterale requestMd5 viene assegnata al campo della chiave. |
properties.requestMd5 |
additional.fields[x].value.string_value |
Il valore del campo properties.requestMd5 viene assegnato a additional.fields[x].value.string_value. |
properties.responseMd5 |
additional.fields[x].key |
La stringa letterale responseMd5 viene assegnata al campo della chiave. |
properties.responseMd5 |
additional.fields[x].value.string_value |
Il valore del campo properties.responseMd5 viene assegnato a additional.fields[x].value.string_value. |
properties.serviceType |
additional.fields[x].key |
La stringa letterale serviceType viene assegnata al campo della chiave. |
properties.serviceType |
additional.fields[x].value.string_value |
Il valore del campo properties.serviceType viene assegnato a additional.fields[x].value.string_value. |
properties.tlsVersion |
network.tls.version |
Il valore del campo properties.tlsVersion viene assegnato a network.tls.version. |
properties.userAgentHeader |
network.http.parsed_user_agent |
Il valore del campo properties.userAgentHeader viene analizzato come stringa dello user agent e assegnato a network.http.parsed_user_agent. |
properties.userAgentHeader |
network.http.user_agent |
Il valore del campo properties.userAgentHeader viene assegnato a network.http.user_agent. |
protocol |
network.application_protocol |
Il valore del campo protocol viene assegnato a network.application_protocol. |
resourceId |
target.resource.id |
Il valore del campo resourceId viene assegnato a target.resource.id. |
resourceId |
target.resource.product_object_id |
Il valore del campo resourceId viene assegnato a target.resource.product_object_id. La stringa letterale DATABASE viene assegnata a target.resource.resource_type. |
resourceType |
additional.fields[x].key |
La stringa letterale resourceType viene assegnata al campo della chiave. |
resourceType |
additional.fields[x].value.string_value |
Il valore del campo resourceType viene assegnato a additional.fields[x].value.string_value. Se statusText è Success, il valore viene impostato su ALLOW. |
statusCode |
network.http.response_code |
Il valore del campo statusCode viene convertito in un numero intero e assegnato a network.http.response_code. La stringa letterale MICROSOFT_AZURE viene assegnata a target.cloud.environment. |
time |
timestamp |
Il valore del campo time viene analizzato come timestamp e assegnato a timestamp. |
uri |
network.http.referral_url |
Il valore del campo uri viene assegnato a network.http.referral_url. |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.