Raccogliere i log di accesso di Microsoft Entra ID
Questo documento spiega come raccogliere i log di accesso di Microsoft Entra ID (in precedenza Azure Active Directory) configurando un feed Google Security Operations. Puoi configurare l'importazione utilizzando due metodi: Azure Event Hub (opzione consigliata) o l'API di terze parti.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso con privilegi al portale di Microsoft Azure
- Ruolo Amministratore della sicurezza o Amministratore globale in Microsoft Entra ID (obbligatorio per le impostazioni di diagnostica)
- Per il metodo API di terze parti, uno dei seguenti ruoli per la concessione del consenso amministrativo:
- Amministratore globale: può concedere il consenso per qualsiasi autorizzazione, per qualsiasi API
- Amministratore dei ruoli con privilegi: può concedere il consenso per qualsiasi autorizzazione, per qualsiasi API
- Amministratore applicazioni cloud: può concedere il consenso per qualsiasi autorizzazione per qualsiasi API, ad eccezione dei ruoli app Microsoft Graph (autorizzazioni applicazione)
Metodo 1: Azure Event Hub (consigliato)
Questo metodo trasmette in streaming i log di accesso di Entra ID tramite Azure Event Hub con Capture abilitato, che scrive i dati in Azure Blob Storage. Google SecOps inserisce poi i log da Blob Storage utilizzando il tipo di feed Azure Blob Storage V2.
Configura l'account di archiviazione di Azure
Crea un account di archiviazione
- Nel portale Azure, cerca Account di archiviazione.
- Fai clic su + Crea.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Abbonamento Seleziona il tuo abbonamento Azure Gruppo di risorse Seleziona esistente o crea nuovo Nome account di archiviazione Inserisci un nome univoco (ad esempio, secopsaadsignin).Regione Seleziona la regione più vicina al tuo spazio dei nomi Event Hub Prestazioni Standard (consigliato) Ridondanza LRS (Locally redundant storage) o GRS (Geo-redundant storage) Fai clic su Review + create (Rivedi e crea).
Rivedi la panoramica e fai clic su Crea.
Attendi il completamento del deployment.
Recuperare le credenziali dell'account di archiviazione
- Vai all'account di archiviazione che hai creato.
- Nel riquadro di navigazione a sinistra, seleziona Chiavi di accesso in Sicurezza e networking.
- Fai clic su Mostra chiavi.
- Copia e salva quanto segue:
- Nome account di archiviazione
- Tasto 1 o Tasto 2: la chiave di accesso condivisa.
Crea lo spazio dei nomi dell'hub di eventi e l'hub di eventi
Crea spazio dei nomi dell'hub eventi
- Nel portale Azure, cerca Event Hubs.
- Fai clic su + Crea.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Abbonamento Seleziona il tuo abbonamento Azure Gruppo di risorse Seleziona lo stesso gruppo di risorse dell'account di archiviazione Nome dello spazio dei nomi Inserisci un nome univoco (ad esempio, secops-entraid-signin).Località Seleziona la stessa regione del tuo account di archiviazione Livello di prezzo Standard (obbligatorio per l'acquisizione dell'hub eventi) Fai clic su Rivedi e crea, quindi su Crea.
Attendi il completamento del deployment.
Crea hub eventi
- Vai allo spazio dei nomi dell'hub di eventi che hai creato.
- Fai clic su + Event Hub in alto.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome (ad esempio,
entraid-signin-logs). - Conteggio partizioni: 2 (valore predefinito, aumenta per una velocità effettiva maggiore).
- Criterio di pulizia: elimina.
- Tempo di conservazione (ore): 24 (minimo, aumenta se necessario per la resilienza).
- Nome: inserisci un nome (ad esempio,
- Fai clic su Rivedi e crea, quindi su Crea.
Abilitare Event Hub Capture
- Vai all'hub eventi che hai creato (all'interno dello spazio dei nomi).
- Nel menu di navigazione a sinistra, seleziona Acquisizione.
- Imposta Acquisizione su On.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Intervallo di tempo (minuti) 5 (o meno per dati quasi in tempo reale) Finestra delle dimensioni (MB) 300 Capture Provider Azure Blob Storage Sottoscrizione Azure Seleziona il tuo abbonamento Account di archiviazione Seleziona l'account di archiviazione che hai creato. Contenitore blob Crea o seleziona un contenitore (ad esempio entraid-signin-capture).Fai clic su Salva.
Configura le impostazioni di diagnostica di Entra ID
- Nel portale di Azure, cerca Microsoft Entra ID.
- Nel riquadro di navigazione a sinistra, vai a Monitoraggio e integrità > Impostazioni di diagnostica.
- Fai clic su Aggiungi impostazione diagnostica.
- Fornisci i seguenti dettagli di configurazione:
- Nome impostazione diagnostica: inserisci un nome descrittivo (ad esempio
signin-logs-to-eventhub). - Nella sezione Log, seleziona le categorie di log di accesso che vuoi esportare:
- SignInLogs: accessi utente interattivi.
- NonInteractiveUserSignInLogs: accessi utente non interattivi (facoltativo, consigliato).
- ServicePrincipalSignInLogs: accessi dell'entità servizio (facoltativo).
- ManagedIdentitySignInLogs: accessi con identità gestita (facoltativo).
- Nella sezione Dettagli destinazione, seleziona Trasmetti in streaming a un hub eventi.
- Abbonamento: seleziona l'abbonamento contenente lo spazio dei nomi dell'hub eventi.
- Spazio dei nomi dell'hub eventi: seleziona lo spazio dei nomi che hai creato (ad esempio,
secops-entraid-signin). - Nome hub di eventi: seleziona l'hub di eventi che hai creato (ad esempio,
entraid-signin-logs). - Nome policy dell'hub eventi: seleziona RootManageSharedAccessKey.
- Nome impostazione diagnostica: inserisci un nome descrittivo (ad esempio
Fai clic su Salva.
Configura i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed > Aggiungi nuovo feed
- Hub dei contenuti > Pacchetti di contenuti > Inizia
Configura un feed in Google SecOps per importare i log di accesso di Entra ID
- Fai clic sul pacchetto Azure Platform.
- Individua il tipo di log Azure AD.
Specifica i valori per i seguenti campi:
- Tipo di origine: Microsoft Azure Blob Storage V2
URI di Azure: inserisci l'URL dell'endpoint del servizio BLOB con il percorso del container di acquisizione:
https://<storage-account>.blob.core.windows.net/entraid-signin-capture/Sostituisci
<storage-account>con il nome del tuo account di archiviazione Azure.Opzione di eliminazione della fonte: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Mai: non elimina mai i file dopo i trasferimenti.
- Elimina file trasferiti: elimina i file dopo il trasferimento riuscito.
- Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
Età massima del file: includi i file modificati nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
Chiave condivisa: inserisci il valore della chiave di accesso condivisa dall'account di archiviazione.
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Crea feed.
Dopo aver creato il feed, potrebbero essere necessari 5-10 minuti prima che i log inizino a essere visualizzati in Google SecOps.
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.
Per saperne di più sui feed di Google Security Operations, consulta la documentazione sui feed di Google Security Operations. Per informazioni sui requisiti per ogni tipo di feed, vedi Configurazione dei feed per tipo.
Configura il firewall di Azure Storage (se abilitato)
Se il tuo account di archiviazione Azure utilizza un firewall, devi aggiungere gli intervalli IP di Google SecOps.
- Nel portale Azure, vai al tuo account di archiviazione.
- Seleziona Networking in Sicurezza e networking.
- In Firewall e reti virtuali, seleziona Attivato da reti virtuali e indirizzi IP selezionati.
- Nella sezione Firewall, in Intervallo di indirizzi, fai clic su + Aggiungi intervallo IP.
- Aggiungi ogni intervallo IP di Google SecOps in notazione CIDR.
- Consulta la documentazione relativa all'inserimento degli indirizzi IP nella lista consentita.
- In alternativa, recuperali in modo programmatico utilizzando l'API di gestione dei feed.
- Fai clic su Salva.
Metodo 2: API di terze parti
Questo metodo utilizza l'API Microsoft Graph per recuperare i log di accesso di Entra ID direttamente dal tuo tenant Microsoft.
Configurare la lista consentita IP
Prima di creare il feed, devi inserire gli intervalli IP di Google SecOps nella lista consentita nelle impostazioni della rete di Microsoft Azure o nelle policy di accesso condizionale.
Ottenere gli intervalli IP di Google SecOps
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Prendi nota degli intervalli IP visualizzati nell'interfaccia di creazione dei feed.
- In alternativa, recupera gli intervalli IP in modo programmatico utilizzando l'API Feed Management.
Configura l'accesso condizionale per le identità dei carichi di lavoro (se necessario)
Se la tua organizzazione utilizza criteri di accesso condizionale che limitano l'accesso in base alla località:
- Nel Centro amministrativo Microsoft Entra, vai a Protezione > Accesso condizionale > Posizioni denominate.
- Fai clic su + Nuova posizione.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci
Google SecOps IP Ranges. - Contrassegna come posizione attendibile: facoltativo, in base alla tua policy di sicurezza.
- Intervalli IP: aggiungi ogni intervallo IP di Google SecOps in notazione CIDR.
- Nome: inserisci
- Fai clic su Crea.
- Vai a Accesso condizionale > Norme.
- Per tutte le policy che si applicano alle identità dei workload, configura un'esclusione per la località denominata
Google SecOps IP Rangeso per il service principal specifico.
Configurare l'accesso all'API Microsoft Azure AD
Crea registrazione app
- Accedi al centro di amministrazione Microsoft Entra o al portale Azure.
- Vai ad Identità > Applicazioni > Registrazioni app.
- Fai clic su Nuova registrazione.
Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Google SecOps Sign-In Logs Integration). - Tipi di account supportati: seleziona Solo account in questa directory dell'organizzazione (singolo tenant).
- URI di reindirizzamento: lascia vuoto (non obbligatorio per l'autenticazione dell'entità di servizio).
- Nome: inserisci un nome descrittivo (ad esempio,
Fai clic su Register (Registrati).
Dopo la registrazione, copia e salva i seguenti valori:
- ID applicazione (client)
- ID directory (tenant)
Configura le autorizzazioni API
L'integrazione richiede le seguenti autorizzazioni dell'applicazione Microsoft Graph:
- Nella registrazione dell'app, vai ad API permissions (Autorizzazioni API).
- Fai clic su Aggiungi un'autorizzazione.
- Seleziona Microsoft Graph > Autorizzazioni applicazione.
- Seleziona le seguenti autorizzazioni:
- AuditLog.Read.All: necessario per leggere i log di accesso.
- Directory.Read.All: richiesto dall'API Microsoft Graph per l'accesso ai log di accesso (problema noto).
- SecurityEvents.Read.All: richiesto da Google Security Operations.
- Fai clic su Aggiungi autorizzazioni.
- Fai clic su Concedi il consenso amministratore per [La tua organizzazione].
- Verifica che la colonna Stato mostri Concesso per [la tua organizzazione] per tutte e tre le autorizzazioni.
| Autorizzazione | Tipo | Descrizione |
|---|---|---|
| AuditLog.Read.All | Applicazione | Leggere tutti i dati di accesso e dei log di controllo |
| Directory.Read.All | Applicazione | Leggi i dati della directory (obbligatorio per l'accesso all'API) |
| SecurityEvents.Read.All | Applicazione | Leggere gli eventi di sicurezza |
Crea client secret
- Vai a Certificati e secret.
- Fai clic su Nuovo segreto client.
Fornisci i seguenti dettagli di configurazione:
- Descrizione: inserisci un nome descrittivo (ad esempio,
Google SecOps Feed). - Scade: seleziona un periodo di scadenza.
- Descrizione: inserisci un nome descrittivo (ad esempio,
Fai clic su Aggiungi.
Importante: copia immediatamente il valore del client secret. Questo valore viene visualizzato una sola volta e non può essere recuperato in un secondo momento.
Verifica l'accesso API prima di creare il feed
Prima di creare il feed Google SecOps, verifica che l'entità di servizio possa autenticarsi e accedere correttamente all'API Microsoft Graph.
Testa l'autenticazione utilizzando PowerShell
# Replace with your actual values $tenantId = "your-tenant-id" $clientId = "your-client-id" $clientSecret = "your-client-secret" # Token request parameters (must be lowercase) $tokenBody = @{ grant_type = "client_credentials" client_id = $clientId client_secret = $clientSecret scope = "https://graph.microsoft.com/.default" } # Request access token $tokenEndpoint = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" $tokenResponse = Invoke-RestMethod -Method Post -Uri $tokenEndpoint -Body $tokenBody -ContentType "application/x-www-form-urlencoded" if ($tokenResponse.access_token) { Write-Host "✓ Successfully obtained access token" -ForegroundColor Green # Test API call to sign-ins endpoint $apiUrl = "https://graph.microsoft.com/v1.0/auditLogs/signIns?`$top=1" $headers = @{ Authorization = "Bearer $($tokenResponse.access_token)" } try { $signInResponse = Invoke-RestMethod -Method Get -Uri $apiUrl -Headers $headers Write-Host "✓ Successfully accessed sign-ins API" -ForegroundColor Green Write-Host "Sample sign-in log retrieved successfully" -ForegroundColor Green } catch { Write-Host "✗ Failed to access sign-ins API" -ForegroundColor Red Write-Host "Error: $($_.Exception.Message)" -ForegroundColor Red } } else { Write-Host "✗ Failed to obtain access token" -ForegroundColor Red }Output previsto:
✓ Successfully obtained access token ✓ Successfully accessed sign-ins API Sample sign-in log retrieved successfullyTestare l'autenticazione utilizzando curl
# Replace with your actual values TENANT_ID="your-tenant-id" CLIENT_ID="your-client-id" CLIENT_SECRET="your-client-secret" # Request access token curl -X POST "https://login.microsoftonline.com/$TENANT_ID/oauth2/v2.0/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=$CLIENT_ID" \ -d "client_secret=$CLIENT_SECRET" \ -d "scope=https://graph.microsoft.com/.default" # Test API access curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://graph.microsoft.com/v1.0/auditLogs/signIns?\$top=1"
Configura i feed
Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:
- Impostazioni SIEM > Feed > Aggiungi nuovo feed
- Hub dei contenuti > Pacchetti di contenuti > Inizia
Configura un feed in Google SecOps per importare i log di accesso di Microsoft Azure AD
- Fai clic sul pacchetto Azure Platform.
- Individua il tipo di log Azure AD.
Specifica i valori per i seguenti campi:
- Tipo di origine: API di terze parti (consigliato)
- ID client OAuth: l'ID applicazione (client) della registrazione dell'app.
- Client secret OAuth: il valore del client secret copiato in precedenza.
- ID tenant: l'ID tenant Microsoft della registrazione dell'app (formato UUID, ad esempio
0fc279f9-fe30-41be-97d3-abe1d7681418). API Full Path: URL dell'endpoint API REST Microsoft Graph:
graph.microsoft.com/v1.0/auditLogs/signInsEndpoint di autenticazione API: endpoint di autenticazione Microsoft Active Directory:
login.microsoftonline.com
Opzioni avanzate:
- Nome feed: un valore precompilato che identifica il feed.
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset a cui verrà associato il feed.
- Etichette di importazione: le etichette verranno aggiunte a tutti gli eventi di questo feed.
Fai clic su Crea feed.
Dopo aver creato il feed, i dati contestuali verranno recuperati periodicamente. Potrebbero essere necessarie fino a 24 ore prima che la snapshot iniziale della directory venga visualizzata in Google SecOps.
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.
Per saperne di più sui feed di Google Security Operations, consulta la documentazione sui feed di Google Security Operations. Per informazioni sui requisiti per ogni tipo di feed, vedi Configurazione dei feed per tipo. Se riscontri problemi durante la creazione dei feed, contatta l'assistenza di Google Security Operations.
Endpoint regionali
Per i deployment di Microsoft Azure AD nei cloud sovrani, utilizza gli endpoint regionali appropriati:
| Ambiente cloud | Percorso completo dell'API | Endpoint di autenticazione API |
|---|---|---|
| Global | graph.microsoft.com/v1.0/auditLogs/signIns |
login.microsoftonline.com |
| US Government L4 | graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| US Government L5 (DOD) | dod-graph.microsoft.us/v1.0/auditLogs/signIns |
login.microsoftonline.us |
| Cina (21Vianet) | microsoftgraph.chinacloudapi.cn/v1.0/auditLogs/signIns |
login.chinacloudapi.cn |
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
activityDateTime |
principal.event_timestamp |
Analizzato dal campo activityDateTime. Se il campo non è nel formato previsto "aaaa-MM-ggTHH:mm:ss.SSSZ" o "ISO8601", il parser proverà altri formati come "MM/gg/aaaa HH:mm:ss A" o "MM/g/aaaa HH:mm:ss A". |
activityDisplayName |
security_result.summary |
Mappato direttamente da activityDisplayName. |
additionalDetails.0.value |
network.http.user_agent |
Mappato direttamente da additionalDetails.0.value. |
additionalDetails.1.key |
target.resource.attribute.labels.key |
Mappato direttamente da additionalDetails.1.key. |
additionalDetails.1.value |
target.resource.attribute.labels.value |
Mappato direttamente da additionalDetails.1.value. |
additionalInfo.[].Key |
network.http.user_agent, target.url |
Se Key è userAgent, mappa Value a network.http.user_agent e network.http.parsed_user_agent. Se Key è alertUrl, mappa Value su target.url. |
additionalInfo.[].Value |
network.http.user_agent, target.url |
Se Key è userAgent, mappa Value su network.http.user_agent e network.http.parsed_user_agent. Se Key è alertUrl, mappa Value su target.url. |
am_category |
metadata.description |
Mappato direttamente da am_category. |
am_tenantId |
metadata.product_deployment_id |
Mappato direttamente da am_tenantId. |
appId |
target.resource.attribute.labels.value |
Mappato direttamente da appId con la chiave di etichetta "ID app". |
appDisplayName |
target.application |
Mappato direttamente da appDisplayName. |
appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name, about.[].user.user_display_name |
Mappato direttamente da appliedConditionalAccessPolicies.[].displayName. |
appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
Mappato direttamente da appliedConditionalAccessPolicies.[].enforcedGrantControls con la chiave di etichetta "applied_conditional_access_policies_enforced_grant_controls". |
appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
Mappato direttamente da appliedConditionalAccessPolicies.[].enforcedSessionControls con la chiave di etichetta "applied_conditional_access_policies_enforced_session_controls". |
appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id, about.[].user.userid |
Mappato direttamente da appliedConditionalAccessPolicies.[].id. |
appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value, about.[].labels.value |
Mappato direttamente da appliedConditionalAccessPolicies.[].result con la chiave di etichetta "Risultato". |
authenticationDetails.[].authenticationMethod |
security_result.[].detection_fields.value |
Mappato direttamente da authenticationDetails.[].authenticationMethod con la chiave di etichetta "authenticationMethod". |
authenticationDetails.[].authenticationMethodDetail |
security_result.[].detection_fields.value |
Mappato direttamente da authenticationDetails.[].authenticationMethodDetail con la chiave di etichetta "authenticationMethodDetail". |
authenticationDetails.[].authenticationStepDateTime |
security_result.[].detection_fields.value |
Mappato direttamente da authenticationDetails.[].authenticationStepDateTime con la chiave di etichetta "authenticationStepDateTime". |
authenticationDetails.[].authenticationStepRequirement |
security_result.[].detection_fields.value |
Mappato direttamente da authenticationDetails.[].authenticationStepRequirement con la chiave di etichetta "authenticationStepRequirement". |
authenticationDetails.[].authenticationStepResultDetail |
security_result.[].detection_fields.value |
Mappato direttamente da authenticationDetails.[].authenticationStepResultDetail con la chiave di etichetta "authenticationStepResultDetail". |
authenticationDetails.[].succeeded |
security_result.action |
Se il valore è "true", allora ALLOW, altrimenti BLOCK. |
authenticationRequirement |
additional.fields.value.string_value |
Mappato direttamente da authenticationRequirement con la chiave di etichetta "AuthenticationRequirement". |
authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
Mappato direttamente da authenticationRequirementPolicies.[].detail con la chiave di etichetta "dettaglio". |
authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
Mappato direttamente da authenticationRequirementPolicies.[].requirementProvider con la chiave di etichetta "requirementProvider". |
callerIpAddress |
principal.ip, principal.asset.ip |
Mappato direttamente da callerIpAddress. |
category |
metadata.description |
Mappato direttamente da category. |
clientAppUsed |
principal.application |
Mappato direttamente da clientAppUsed. |
conditionalAccessStatus |
additional.fields.value.string_value |
Mappato direttamente da conditionalAccessStatus con la chiave di etichetta "conditionalAccessStatus". |
correlationId |
network.session_id, security_result.detection_fields.value |
Mappato direttamente da correlationId. Utilizzato anche come security_result.detection_fields.value con la chiave di etichetta "CorrelationId". |
createdDateTime |
when |
Il campo when è derivato dal campo createdDateTime. La data e l'ora vengono estratte dal campo createdDateTime utilizzando grok e poi combinate per formare il campo when. |
deviceDetail.browser |
network.http.user_agent |
Mappato direttamente da deviceDetail.browser. |
deviceDetail.deviceId |
principal.asset.asset_id, principal.asset_id |
Mappato direttamente da deviceDetail.deviceId e con il prefisso "ID dispositivo:". |
deviceDetail.displayName |
principal.asset.hostname |
Mappato direttamente da deviceDetail.displayName. |
deviceDetail.isCompliant |
principal.asset.attribute.labels.value |
Mappato direttamente da deviceDetail.isCompliant con la chiave di etichetta "isCompliant". |
deviceDetail.isManaged |
principal.asset.attribute.labels.value |
Mappato direttamente da deviceDetail.isManaged con la chiave di etichetta "isManaged". |
deviceDetail.operatingSystem |
principal.platform_version |
Mappato direttamente da deviceDetail.operatingSystem. |
deviceDetail.trustType |
principal.asset.attribute.labels.value |
Mappato direttamente da deviceDetail.trustType con la chiave di etichetta "trustType". |
durationMs |
additional.fields.value.string_value |
Mappato direttamente da durationMs con la chiave di etichetta "durationMs". |
event.id |
- | Non mappato secondo le istruzioni (punto 3). |
id |
metadata.product_log_id |
Mappato direttamente da id. |
identity |
target.user.user_display_name |
Mappato direttamente da identity se è diverso da userId e non è un indirizzo email. |
initiatedBy.user.displayName |
principal.user.user_display_name |
Mappato direttamente da initiatedBy.user.displayName. |
initiatedBy.user.id |
principal.user.userid, principal.user.windows_sid |
Mappato direttamente da initiatedBy.user.id. |
initiatedBy.user.ipAddress |
principal.ip, principal.asset.ip |
Mappato direttamente da initiatedBy.user.ipAddress. |
initiatedBy.user.userPrincipalName |
principal.user.email_addresses, principal.user.userid |
Mappato direttamente da initiatedBy.user.userPrincipalName. Se si tratta di un indirizzo email, viene mappato a email_addresses, altrimenti a userid. |
Level |
security_result.severity_details, level |
Mappato direttamente da Level. |
level |
security_result.severity_details, security_result.severity |
Mappato direttamente da level. Mappato anche su security_result.severity dopo la conversione in maiuscolo. Gestione speciale per i valori "Informazioni", "Informativo", "0", "4", "Avviso", "1", "3", "Errore", "2" e "Critico". |
location.city |
principal.location.city |
Mappato direttamente da location.city. |
location.countryOrRegion |
principal.location.country_or_region |
Mappato direttamente da location.countryOrRegion. |
location.geoCoordinates.altitude |
additional.fields.value.string_value |
Mappato direttamente da location.geoCoordinates.altitude con la chiave di etichetta "location_geoCoordinates_altitude". |
location.geoCoordinates.latitude |
principal.location.region_latitude, principal.location.region_coordinates.latitude |
Mappato direttamente da location.geoCoordinates.latitude. |
location.geoCoordinates.longitude |
principal.location.region_longitude, principal.location.region_coordinates.longitude |
Mappato direttamente da location.geoCoordinates.longitude. |
location.state |
principal.location.state |
Mappato direttamente da location.state. |
location |
principal.location.name |
Mappato direttamente da location. |
log_type |
metadata.log_type |
Mappato direttamente da log_type. |
networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
Valori concatenati da networkLocationDetails.[].networkNames con la chiave di etichetta "networkName {index}". |
networkLocationDetails.[].networkType |
security_result.detection_fields.value, additional.fields.value.string_value |
Mappato direttamente da networkLocationDetails.[].networkType con la chiave di etichetta "networkType". Utilizzato anche come additional.fields.value.string_value con la chiave di etichetta "networkType {index}". |
operationName |
event_type |
Se operationName è "Attività di accesso", allora USER_LOGIN. Se operationName è "Aggiungi membro al gruppo", allora USER_CHANGE_PERMISSIONS. |
operationType |
security_result.action_details |
Mappato direttamente da operationType. |
properties.activity |
security_result.summary |
Mappato direttamente da properties.activity. |
properties.activityDateTime |
when |
Analizzato dal campo properties.activityDateTime. Se il campo non è nel formato previsto "aaaa-MM-ggTHH:mm:ss.SSSZ" o "ISO8601", il parser proverà altri formati come "MM/gg/aaaa HH:mm:ss A" o "MM/g/aaaa HH:mm:ss A". |
properties.activityDisplayName |
security_result.summary |
Mappato direttamente da properties.activityDisplayName. |
properties.additionalInfo |
network.http.user_agent, target.url |
Analizzato come JSON e, se la chiave è userAgent, mappa il valore a network.http.user_agent e network.http.parsed_user_agent. Se la chiave è alertUrl, mappa il valore su target.url. |
properties.appliedConditionalAccessPolicies.[].displayName |
security_result.[].rule_name |
Mappato direttamente da properties.appliedConditionalAccessPolicies.[].displayName. |
properties.appliedConditionalAccessPolicies.[].enforcedGrantControls |
security_result.[].rule_labels.value |
Mappato direttamente da properties.appliedConditionalAccessPolicies.[].enforcedGrantControls con la chiave di etichetta "applied_conditional_access_policies_enforced_grant_controls". |
properties.appliedConditionalAccessPolicies.[].enforcedSessionControls |
security_result.[].rule_labels.value |
Mappato direttamente da properties.appliedConditionalAccessPolicies.[].enforcedSessionControls con la chiave di etichetta "applied_conditional_access_policies_enforced_session_controls". |
properties.appliedConditionalAccessPolicies.[].id |
security_result.[].rule_id |
Mappato direttamente da properties.appliedConditionalAccessPolicies.[].id. |
properties.appliedConditionalAccessPolicies.[].result |
security_result.[].detection_fields.value |
Mappato direttamente da properties.appliedConditionalAccessPolicies.[].result con la chiave di etichetta "Risultato". |
properties.appId |
appId |
Mappato direttamente da properties.appId. |
properties.appDisplayName |
target.application |
Mappato direttamente da properties.appDisplayName. |
properties.authenticationDetails.[].authenticationMethod |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationDetails.[].authenticationMethod con la chiave di etichetta "authenticationMethod". |
properties.authenticationDetails.[].authenticationMethodDetail |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationDetails.[].authenticationMethodDetail con la chiave di etichetta "authenticationMethodDetail". |
properties.authenticationDetails.[].authenticationStepDateTime |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationDetails.[].authenticationStepDateTime con la chiave di etichetta "authenticationStepDateTime". |
properties.authenticationDetails.[].authenticationStepRequirement |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationDetails.[].authenticationStepRequirement con la chiave di etichetta "authenticationStepRequirement". |
properties.authenticationDetails.[].authenticationStepResultDetail |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationDetails.[].authenticationStepResultDetail con la chiave di etichetta "authenticationStepResultDetail". |
properties.authenticationRequirement |
additional.fields.value.string_value |
Mappato direttamente da properties.authenticationRequirement con la chiave di etichetta "AuthenticationRequirement". |
properties.authenticationRequirementPolicies.[].detail |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationRequirementPolicies.[].detail con la chiave di etichetta "dettaglio". |
properties.authenticationRequirementPolicies.[].requirementProvider |
security_result.detection_fields.value |
Mappato direttamente da properties.authenticationRequirementPolicies.[].requirementProvider con la chiave di etichetta "requirementProvider". |
properties.clientAppUsed |
principal.application |
Mappato direttamente da properties.clientAppUsed. |
properties.conditionalAccessStatus |
additional.fields.value.string_value |
Mappato direttamente da properties.conditionalAccessStatus con la chiave di etichetta "conditionalAccessStatus". |
properties.crossTenantAccessType |
additional.fields.value.string_value |
Mappato direttamente da properties.crossTenantAccessType con la chiave di etichetta "crossTenantAccessType". |
properties.detectedDateTime |
additional.fields.value.string_value |
Mappato direttamente da properties.detectedDateTime con la chiave di etichetta "detectedDateTime". |
properties.detectionTimingType |
additional.fields.value.string_value |
Mappato direttamente da properties.detectionTimingType con la chiave di etichetta "detectionTimingType". |
properties.homeTenantId |
additional.fields.value.string_value |
Mappato direttamente da properties.homeTenantId con la chiave di etichetta "homeTenantId". |
properties.id |
metadata.product_log_id |
Mappato direttamente da properties.id. |
properties.initiatedBy.user.displayName |
principal.user.user_display_name |
Mappato direttamente da properties.initiatedBy.user.displayName. |
properties.initiatedBy.user.id |
principal.user.windows_sid |
Mappato direttamente da properties.initiatedBy.user.id. |
properties.initiatedBy.user.ipAddress |
principal.ip, principal.asset.ip |
Mappato direttamente da properties.initiatedBy.user.ipAddress. |
properties.initiatedBy.user.userPrincipalName |
principal.user.email_addresses, principal.user.userid |
Mappato direttamente da properties.initiatedBy.user.userPrincipalName. Se si tratta di un indirizzo email, viene mappato a email_addresses, altrimenti a userid. |
properties.ipAddress |
principal.ip, principal.asset.ip |
Mappato direttamente da properties.ipAddress. |
properties.isGuest |
additional.fields.value.string_value |
Mappato direttamente da properties.isGuest con la chiave di etichetta "isGuest". |
properties.isDeleted |
additional.fields.value.string_value |
Mappato direttamente da properties.isDeleted con la chiave di etichetta "isDeleted". |
properties.isProcessing |
additional.fields.value.string_value |
Mappato direttamente da properties.isProcessing con la chiave di etichetta "isProcessing". |
properties.lastUpdatedDateTime |
additional.fields.value.string_value |
Mappato direttamente da properties.lastUpdatedDateTime con la chiave di etichetta "lastUpdatedDateTime". |
properties.location.city |
principal.location.city |
Mappato direttamente da properties.location.city. |
properties.location.countryOrRegion |
principal.location.country_or_region |
Mappato direttamente da properties.location.countryOrRegion. |
properties.location.geoCoordinates.latitude |
principal.location.region_latitude, principal.location.region_coordinates.latitude |
Mappato direttamente da properties.location.geoCoordinates.latitude. |
properties.location.geoCoordinates.longitude |
principal.location.region_longitude, principal.location.region_coordinates.longitude |
Mappato direttamente da properties.location.geoCoordinates.longitude. |
properties.location.state |
principal.location.state |
Mappato direttamente da properties.location.state. |
properties.networkLocationDetails.[].networkNames |
additional.fields.value.string_value |
Valori concatenati da properties.networkLocationDetails.[].networkNames con la chiave di etichetta "properties networkName {index}". |
properties.networkLocationDetails.[].networkType |
additional.fields.value.string_value |
Mappato direttamente da properties.networkLocationDetails.[].networkType con la chiave di etichetta "properties networkType {index}". |
properties.riskEventType |
additional.fields.value.string_value |
Mappato direttamente da properties.riskEventType con la chiave di etichetta "riskEventType". |
properties.riskLastUpdatedDateTime |
additional.fields.value.string_value |
Mappato direttamente da properties.riskLastUpdatedDateTime con la chiave di etichetta "riskLastUpdatedDateTime". |
properties.riskLevel |
additional.fields.value.string_value |
Mappato direttamente da properties.riskLevel con la chiave di etichetta "riskLevel". |
properties.riskLevelDuringSignIn |
additional.fields.value.string_value |
Mappato direttamente da properties.riskLevelDuringSignIn con la chiave di etichetta "riskLevelDuringSignIn". |
properties.riskState |
additional.fields.value.string_value |
Mappato direttamente da properties.riskState con la chiave di etichetta "riskState". |
properties.riskDetail |
additional.fields.value.string_value |
Mappato direttamente da properties.riskDetail con la chiave di etichetta "riskDetail". |
properties.riskType |
additional.fields.value.string_value |
Mappato direttamente da properties.riskType con la chiave di etichetta "riskType". |
properties.source |
additional.fields.value.string_value |
Mappato direttamente da properties.source con la chiave di etichetta "source". |
properties.targetResources.0.id |
target.user.product_object_id |
Mappato direttamente da properties.targetResources.0.id. |
properties.targetResources.modifiedProperties.0.newValue |
target.group.product_object_id |
Mappato direttamente da properties.targetResources.modifiedProperties.0.newValue. |
properties.tokenIssuerType |
additional.fields.value.string_value |
Mappato direttamente da properties.tokenIssuerType con la chiave di etichetta "tokenIssuerType". |
properties.userAgent |
network.http.user_agent, network.http.parsed_user_agent |
Mappato direttamente da properties.userAgent. |
properties.userDisplayName |
target.user.user_display_name |
Mappato direttamente da properties.userDisplayName. |
properties.userId |
target.user.product_object_id |
Mappato direttamente da properties.userId. |
properties.userPrincipalName |
target.user.userid, target.user.email_addresses |
Mappato direttamente da properties.userPrincipalName. Se si tratta di un indirizzo email, viene mappato a email_addresses, altrimenti a userid. |
result |
security_result.action, security_result.action_details |
Se result è "success", allora ALLOW. |
resultDescription |
security_result.description |
Mappato direttamente da resultDescription. |
resultSignature |
additional.fields.value.string_value |
Mappato direttamente da resultSignature con la chiave di etichetta "resultSignature". |
resultType |
security_result.rule_id, action, security_result.summary |
Se resultType è "0", allora ALLOW e "Accesso riuscito". In caso contrario, BLOCK e "Failed login occurred". |
resourceId |
target.resource.id, target.resource.product_object_id |
Mappato direttamente da resourceId. |
resourceDisplayName |
target.resource.name, appDisplayName |
Mappato direttamente da resourceDisplayName. |
riskDetail |
additional.fields.value.string_value |
Mappato direttamente da riskDetail con la chiave di etichetta "riskDetail". |
riskEventTypes.[]. |
additional.fields.value.string_value, additional.fields.value.list_value.values.string_value |
I valori vengono aggiunti a un elenco con la chiave "riskEventTypes" in additional.fields. Inoltre, ogni valore viene aggiunto come campo separato con la chiave "riskEventType" in additional.fields. |
riskEventTypes_v2.[]. |
additional.fields.value.list_value.values.string_value |
I valori vengono aggiunti a un elenco con la chiave "riskEventTypes_v2" in additional.fields. |
riskLevelAggregated |
additional.fields.value.string_value |
Mappato direttamente da riskLevelAggregated con la chiave di etichetta "riskLevelAggregated". |
riskLevelDuringSignIn |
additional.fields.value.string_value |
Mappato direttamente da riskLevelDuringSignIn con la chiave di etichetta "riskLevelDuringSignIn". |
riskState |
additional.fields.value.string_value |
Mappato direttamente da riskState con la chiave di etichetta "riskState". |
status.additionalDetails |
security_result.description |
Mappato direttamente da status.additionalDetails. |
status.errorCode |
security_result.rule_id, errorCode |
Mappato direttamente da status.errorCode. |
target.displayName |
resourceDisplayName |
Mappato direttamente da target.displayName. |
target.id |
resourceId |
Mappato direttamente da target.id. |
target.modifiedProperties.[].displayName |
target.resource.attribute.labels.key |
Mappato direttamente da target.modifiedProperties.[].displayName. |
target.modifiedProperties.[].newValue |
target.resource.attribute.labels.value, target.resource.product_object_id |
Mappato direttamente da target.modifiedProperties.[].newValue. |
target.modifiedProperties.[].oldValue |
target.resource.attribute.labels.value |
Mappato direttamente da target.modifiedProperties.[].oldValue. |
target.type |
target.resource.type |
Mappato direttamente da target.type. |
tenantId |
metadata.product_deployment_id |
Mappato direttamente da tenantId. |
time |
when |
Il campo when è derivato dal campo time. La data e l'ora vengono estratte dal campo time utilizzando grok e poi combinate per formare il campo when. |
userAgent |
network.http.user_agent, network.http.parsed_user_agent |
Mappato direttamente da userAgent. |
userDisplayName |
target.user.user_display_name |
Mappato direttamente da userDisplayName. |
userId |
target.user.product_object_id |
Mappato direttamente da userId. |
userPrincipalName |
target.user.userid, principal.administrative_domain, target.user.email_addresses |
Mappato direttamente da userPrincipalName. Se si tratta di un indirizzo email, viene mappato a email_addresses e la parte del dominio viene estratta e mappata a principal.administrative_domain. In caso contrario, viene mappato a userid. |
| (Parser Logic) | event.idm.is_alert, event.idm.is_significant |
Impostato su true se il livello è "Critico". |
| (Parser Logic) | event.idm.read_only_udm.metadata.event_type |
Imposta "USER_LOGIN" se has_target_user è "true". Imposta "USER_UNCATEGORIZED" se has_principal_user è "true". Imposta su "STATUS_UPDATE" se has_principal è "true". In caso contrario, impostalo su "GENERIC_EVENT". |
| (Parser Logic) | event.idm.read_only_udm.metadata.vendor_name |
Imposta su "Microsoft". |
| (Parser Logic) | event.idm.read_only_udm.metadata.product_name |
Imposta su "Azure AD". |
| (Parser Logic) | event.idm.read_only_udm.extensions.auth.type |
Imposta su "SSO". |
| (Parser Logic) | event.idm.read_only_udm.extensions.auth.mechanism |
Imposta su "INTERACTIVE" se isInteractive è "true". In caso contrario, imposta il valore su "MECHANISM_OTHER". |
| (Parser Logic) | security_result.action |
Imposta su ALLOW se il risultato è positivo. |
| (Parser Logic) | security_result.action |
Imposta su ALLOW se resultType è 0. |
| (Parser Logic) | security_result.action |
Imposta su BLOCK se resultType non è 0 e non è "". |
| (Parser Logic) | security_result.category |
Impostato su "AUTH_VIOLATION" se resultType non è 0 e non è "". |
| (Parser Logic) | security_result.description |
Imposta "Iscrizione al gruppo modificata" se operationName è "Aggiungi membro al gruppo" e il risultato è "successo". |
| (Parser Logic) | security_result.priority |
Imposta "MEDIUM_PRIORITY" se properties.riskLevelDuringSignIn è "medium". |
| (Parser Logic) | security_result.summary |
Imposta "Accesso riuscito" se resultType è 0. |
| (Parser Logic) | security_result.summary |
Impostato su "Failed login occurred" (Tentativo di accesso non riuscito) se resultType non è 0 e non è "". |
| (Parser Logic) | security_result.summary |
Imposta su properties.activityDisplayName se esiste. |
| (Parser Logic) | security_result.severity |
Imposta su INFORMATIONAL se il livello è "Information", "Informational", "0" o "4". Imposta su MEDIUM se il livello è "Avviso", "1" o "3". Impostato su ERROR se il livello è "Error" o "2". Impostato su CRITICAL se il livello è "Critico". |
| (Parser Logic) | security_result.severity |
Impostato su ERROR se resultType non è 0 e non è "". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.