Raccogliere i log di Azure App Service
Questo documento spiega come esportare i log di Azure App Service in Google Security Operations utilizzando un account di archiviazione Azure. L'analizzatore sintattico trasforma i log di Azure App Service non elaborati in formato JSON in un Unified Data Model (UDM) strutturato. Estrae i campi pertinenti dai log non elaborati, esegue la pulizia e la normalizzazione dei dati e mappa le informazioni estratte ai campi UDM corrispondenti, per poi restituire un oggetto JSON conforme a UDM per ogni voce di log.
Prima di iniziare
- Assicurati di avere un'istanza Google SecOps.
- Assicurati di avere un tenant Azure attivo.
- Assicurati di disporre dell'accesso con privilegi ad Azure.
Configura l'account di archiviazione Azure
- Nella console di 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 il rendimento (consigliato standard).
- Redundanza: seleziona la ridondanza (consigliata GRS o LRS).
- Nome account di archiviazione: inserisci un nome per il nuovo account di archiviazione.
- Fai clic su Review + create (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 + reti.
- Fai clic su Mostra accanto a chiave1 o chiave2.
- Fai clic su Copia negli appunti per copiare la chiave.
- Salva la chiave in un luogo sicuro 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 un luogo sicuro per utilizzarlo in un secondo momento.
Configurare l'esportazione dei log per i log di accesso di Azure AD
- Accedi al portale di Azure utilizzando il tuo account con privilegi.
- Vai a Servizi app e seleziona il servizio app richiesto in uso.
- Seleziona Monitoraggio > Log di App Service.
- Attiva l'opzione Logging delle applicazioni (blob) impostandola su ON.
- Seleziona Spazio di archiviazione in Logging del servizio web.
- Seleziona l'abbonamento e l'account di archiviazione.
- Definisci il periodo di conservazione e la quota in base ai tuoi requisiti.
- Imposta l'opzione su ON per i messaggi di errore dettagliati.
- Attiva l'opzione ON per Tracciamento delle richieste non riuscite.
- Fai clic su Salva.
Configura un feed in Google SecOps per importare i log del servizio app di Azure
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di Azure App Service).
- Seleziona Microsoft Azure Blob Storage come Tipo di origine.
- Seleziona Azure App Service come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
- URI Azure: l'URL dell'endpoint del blob.
ENDPOINT_URL/BLOB_NAME
- Sostituisci quanto segue:
ENDPOINT_URL
: l'URL dell'endpoint blob (https://<storageaccountname>.blob.core.windows.net
)BLOB_NAME
: il nome del blob (ad esempio<logname>-logs
)
- L'URI è un: seleziona il TIPO DI URI in base alla configurazione dello stream di log (File singolo | Directory | Directory che include sottodirectory).
Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
Chiave condivisa: la chiave di accesso ad Azure Blob Storage.
Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- URI Azure: l'URL dell'endpoint del blob.
Fai clic su Avanti.
Rivedi la configurazione del nuovo feed nella schermata Concludi e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logica |
---|---|---|
AppRoleInstance | read_only_udm.principal.resource.product_object_id | Mappatura diretta |
AppRoleName | read_only_udm.principal.resource.name | Mappatura diretta |
AppVersion | read_only_udm.principal.resource.attribute.labels.value | Mappatura diretta |
Categoria | read_only_udm.metadata.product_event_type | Mappatura diretta |
CIp | read_only_udm.target.asset.ip | Mappatura diretta |
CIp | read_only_udm.target.ip | Mappatura diretta |
ClientCity | read_only_udm.principal.location.city | Mappatura diretta |
ClientCountryOrRegion | read_only_udm.principal.location.country_or_region | Mappatura diretta |
ClientIP | read_only_udm.principal.asset.ip | Mappatura diretta |
ClientIP | read_only_udm.principal.ip | Mappatura diretta |
ClientStateOrProvince | read_only_udm.principal.location.state | Mappatura diretta |
ClientType | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
ComputerName | read_only_udm.principal.asset.hostname | Mappatura diretta |
ComputerName | read_only_udm.principal.hostname | Mappatura diretta |
Cookie | read_only_udm.principal.resource.attribute.labels.value | Mappatura diretta |
CsBytes | read_only_udm.network.sent_bytes | Rinominato da CsBytes |
CsHost | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
CsMethod | read_only_udm.network.http.method | Mappatura diretta |
CsUriQuery | read_only_udm.principal.resource.attribute.labels.value | Mappatura diretta |
CsUriStem | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
CsUriStem | read_only_udm.target.url | Mappatura diretta |
CsUsername | read_only_udm.principal.user.user_display_name | Mappatura diretta |
EventIpAddress | read_only_udm.principal.asset.ip | Mappatura diretta |
EventIpAddress | read_only_udm.principal.ip | Mappatura diretta |
EventPrimaryStampName | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
EventStampName | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
EventStampType | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Host | read_only_udm.principal.asset.hostname | Mappatura diretta |
Host | read_only_udm.principal.hostname | Mappatura diretta |
IKey | read_only_udm.target.resource.attribute.labels.value | Mappatura diretta |
Istanza | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Nome | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Protocollo | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Protocollo | read_only_udm.network.application_protocol | Mappato a HTTP se il protocollo è HTTP/1.1 |
Referer | read_only_udm.network.http.referral_url | Mappatura diretta |
ResourceGUID | read_only_udm.target.resource.product_object_id | Rinominato da ResourceGUID |
SDKVersion | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
SDKVersion | read_only_udm.principal.resource.attribute.labels.value | Mappatura diretta |
SPort | read_only_udm.principal.port | Rinominato da SPort |
ScBytes | read_only_udm.network.received_bytes | Rinominato da ScBytes |
ScStatus | read_only_udm.network.http.response_code | Rinominato da ScStatus |
Tempo impiegato | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Tipo | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
Utente | read_only_udm.principal.user.userid | Mappatura diretta |
UserAddress | read_only_udm.principal.asset.ip | Estratto da UserAddress se si tratta di un indirizzo IP valido |
UserAddress | read_only_udm.principal.ip | Estratto da UserAddress se si tratta di un indirizzo IP valido |
UserAgent | read_only_udm.network.http.user_agent | Mappatura diretta |
UserDisplayName | read_only_udm.principal.user.user_display_name | Mappatura diretta |
categoria | read_only_udm.metadata.product_event_type | Mappatura diretta |
livello | read_only_udm.security_result.severity | In maiuscolo e rinominato da livello |
località | read_only_udm.principal.location.name | Mappatura diretta |
operationName | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
record.properties.Protocol | read_only_udm.additional.fields.value.string_value | Mappatura diretta |
record.properties.Result | read_only_udm.security_result.summary | Mappatura diretta |
record.time | read_only_udm.metadata.event_timestamp | Analizzata come timestamp RFC 3339 |
resourceId | read_only_udm.target.resource.attribute.labels.value | Mappatura diretta |
resourceId | read_only_udm.target.resource.product_object_id | Rinominato da resourceId |
read_only_udm.metadata.event_type | Determinato in base alla presenza di principale, target e protocollo. Imposta su NETWORK_HTTP se sono presenti principal, target e Protocol=HTTP . Imposta su NETWORK_CONNECTION se sono presenti principali e target. Imposta su STATUS_UPDATE se è presente solo il principale. In caso contrario, imposta GENERIC_EVENT . |
Modifiche
2024-10-18
Miglioramento:
properties.XForwardedHost
è stato mappato aprincipal.hostname
eprincipal.asset.hostname
.properties_category
è stato mappato aadditional.fields
.properties.roleInstance
è stato mappato aprincipal.resource.product_object_id
.properties.message
è stato mappato asecurity_result.summary
.
2024-09-30
Miglioramento:
- È stato aggiunto il supporto per l'analisi del nuovo formato dei log JSON non analizzati.
2024-06-24
Miglioramento:
metadata.product_name
emetadata.vendor_name
sono stati mappati aAZURE_APP_SERVICE
.
2024-06-07
Miglioramento:
- È stato aggiunto il supporto per i log JSON, quando non sono in formato array.
properties.ScSubStatus
è stato mappato aadditional.fields
.properties.ScWin32Status
è stato mappato aadditional.fields
.
2024-04-25
Miglioramento:
properties.User
è stato mappato aprincipal.user.userid
.properties.UserDisplayName
è stato mappato aprincipal.user.user_display_name
.properties.UserAddress
è stato mappato aprincipal.ip
.- Sono stati mappati
properties.Protocol
,ClientBrowser
,ClientModel
,ClientOS
,OperationId
,ParentId
eItemCount
aadditional.fields
. CsUriQuery
,SDKVersion
eCookie
sono stati mappati aprincipal.resource.attribute.labels
.SessionId
è stato mappato anetwork.session_id
.Message
è stato mappato asecurity_result.summary
.SeverityLevel
è stato mappato asecurity_result.severity_details
.
2024-02-20
Miglioramento:
record.AppRoleInstance
è stato mappato aprincipal.resource.product_object_id
.record.AppRoleName
è stato mappato aprincipal.resource.name
.record.ClientCity
è stato mappato aprincipal.location.city
.record.ClientCountryOrRegion
è stato mappato aprincipal.location.country_or_region
.record.ClientStateOrProvince
è stato mappato aprincipal.location.state
.record.ClientIP
è stato mappato aprincipal.ip
.Result
è stato mappato asecurity_result.summary
.UserAgent
è stato mappato anetwork.http.user_agent
.Referer
è stato mappato anetwork.http.referral_url
.record.ResourceGUID
è stato mappato atarget.resource.product_object_id
.- Se
record.ResourceGUID
non è presente,record.resourceId
è mappato atarget.resource.product_object_id
. - Se
record.ResourceGUID
è presente, mapparecord.resourceId
aadditional.fields
. record.Type
è stato mappato aadditional.fields
.record.ClientType
è stato mappato aadditional.fields
.record.SDKVersion
è stato mappato aadditional.fields
.record.Name
è stato mappato aadditional.fields
.record.Instance
è stato mappato aadditional.fields
.record.TimeTaken
è stato mappato aadditional.fields
.record.Cookie
è stato mappato aadditional.fields
.record.AppVersion
è stato mappato aprincipal.resource.attribute.labels
.record.IKey
è stato mappato atarget.resource.attribute.labels
.record.Category
è stato mappato ametadata.product_event_type
.CsUriStem
è stato mappato atarget.url
.- La mappatura di
CsBytes
è cambiata danetwork.received_bytes
anetwork.sent_bytes
. - La mappatura di
ScBytes
è cambiata danetwork.sent_bytes
anetwork.received_bytes
.
2023-12-07
- Parser appena creato.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.