Raccogliere i log di Okta
Questo documento spiega come importare i log di Okta in Google Security Operations utilizzando l'API Okta. Il parser estrae i log di sistema, gestendo sia i singoli eventi sia gli eventi batch all'interno di un array JSON. Normalizza i dati nel formato UDM, mappando i campi Okta con gli equivalenti UDM, arricchendo i dati con user agent analizzati, informazioni geografiche e dettagli di autenticazione e generando eventi di risultati di sicurezza in base agli esiti e alle informazioni sui rischi.
Prima di iniziare
- Istanza Google SecOps
- Accesso privilegiato a Okta
Come configurare Okta
Per configurare l'accesso SSO di Okta, completa le seguenti attività:
Creare un utente amministrativo Okta con privilegi di sola lettura
- Accedi alla console di amministrazione Okta.
Crea un utente standard.
- Vai a Directory > Persone.
- Fai clic su Aggiungi persona e compila i campi obbligatori.
Seleziona Sicurezza > Amministratori.
Fai clic su Aggiungi amministratore.
Nel campo Assegnazione dell'amministratore da parte dell'amministratore, individua l'utente standard.
Nella sezione Ruoli, seleziona Amministratore di sola lettura dall'elenco.
Esci dall'account amministratore.
Recupera chiave API
- Accedi alla console di amministrazione di Okta con l'utente amministratore di sola lettura.
- Vai a Sicurezza > API > Token.
- Fai clic su Crea token.
- Fornisci un nome significativo per il token.
- Fornisci la zona IP in cui verrà utilizzata l'API (se non sai quale scegliere, puoi selezionare qualsiasi IP).
- Fai clic su Crea token.
- Copia la chiave API.
- Fai clic su Ok.
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
Configurare i feed da Impostazioni SIEM > Feed
Per configurare più feed per diversi tipi di log all'interno di questa famiglia di prodotti, consulta Configurare i feed per prodotto.
Per configurare un singolo feed:
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed, ad esempio Okta Logs.
- Seleziona API di terze parti come Tipo di origine.
- Seleziona Okta come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Intestazione HTTP di autenticazione: inserisci la chiave API Okta nel seguente formato:
Authorization:<API_KEY>
. - Nome host API: specifica il nome di dominio dell'host Okta (ad esempio,
<your-domain>.okta.com
). - Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
- Intestazione HTTP di autenticazione: inserisci la chiave API Okta nel seguente formato:
- Fai clic su Avanti.
- Controlla la 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:
- Intestazioni HTTP di autenticazione: utilizzate per l'autenticazione rispetto all'API SentinelOne Alerts/Threats & static-indicator nel formato
key:value
. - Nome host API: il nome di dominio completo dell'API SentinelOne.
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: 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 |
---|---|---|
actor.alternateId |
principal.user.email_addresses |
Estratto da actor.alternateId se è un indirizzo email. Se non è un indirizzo email, viene utilizzato come principal.user.userid . |
actor.displayName |
principal.user.user_display_name |
Mappato direttamente. |
actor.id |
principal.user.product_object_id |
Mappato direttamente. |
actor.type |
principal.user.attribute.roles.name |
Mappato direttamente. |
authenticationContext.authenticationProvider |
security_result.detection_fields.value |
Mappato direttamente, con la chiave authenticationProvider . |
authenticationContext.credentialProvider |
security_result.detection_fields.value |
Mappato direttamente, con la chiave credentialProvider . |
authenticationContext.credentialType |
extensions.auth.mechanism |
Utilizzato per derivare il meccanismo di autenticazione (OTP, USERNAME_PASSWORD, LOCAL). |
authenticationContext.externalSessionId |
network.parent_session_id |
Mappato direttamente. |
client.device |
principal.asset.type /additional.fields.value.string_value |
Mappato a principal.asset.type (WORKSTATION, MOBILE, ROLE_UNSPECIFIED) in base al valore. Mappato anche come valore stringa con la chiave device in additional.fields . |
client.geographicalContext.city |
principal.location.city |
Mappato direttamente. |
client.geographicalContext.country |
principal.location.country_or_region |
Mappato direttamente. |
client.geographicalContext.geolocation.lat |
principal.location.region_latitude |
Mappato direttamente. |
client.geographicalContext.geolocation.lon |
principal.location.region_longitude |
Mappato direttamente. |
client.geographicalContext.postalCode |
additional.fields.value.string_value |
Mappato direttamente come valore stringa con la chiave Postal code in additional.fields . |
client.geographicalContext.state |
principal.location.state |
Mappato direttamente. |
client.ipAddress |
principal.ip , principal.asset.ip |
Mappato direttamente. |
client.userAgent.browser |
target.resource.attribute.labels.value |
Mappato direttamente, con la chiave Browser . |
client.userAgent.os |
principal.platform |
Mappato alla piattaforma (LINUX, WINDOWS, MAC) in base al valore. |
client.userAgent.rawUserAgent |
network.http.user_agent , network.http.parsed_user_agent |
Mappato e analizzato direttamente. |
client.zone |
additional.fields.value.string_value |
Mappato direttamente come valore stringa con la chiave zone in additional.fields . |
debugContext.debugData.behaviors |
security_result.description , security_result.detection_fields |
Mappato direttamente sulla descrizione. I comportamenti individuali vengono estratti e aggiunti come campi di rilevamento. |
debugContext.debugData.changedAttributes |
security_result.detection_fields.value |
Mappato direttamente, con la chiave changedAttributes . |
debugContext.debugData.clientAddress |
principal.ip , principal.asset.ip |
Mappato direttamente se mancano request.ipChain e client.ipAddress . |
debugContext.debugData.deviceFingerprint |
target.asset.asset_id |
Mappato direttamente, con il prefisso device_finger_print: . |
debugContext.debugData.dtHash |
security_result.detection_fields.value |
Mappato direttamente, con la chiave dtHash . |
debugContext.debugData.factor |
security_result.detection_fields.value |
Mappato direttamente, con la chiave factor . |
debugContext.debugData.factorIntent |
security_result.detection_fields.value |
Mappato direttamente, con la chiave factorIntent . |
debugContext.debugData.logOnlySecurityData.risk.reasons |
security_result.detection_fields.value |
Mappato direttamente, con la chiave Risk Reasons . |
debugContext.debugData.privilegeGranted |
target.user.attribute.roles |
Suddivisi in singoli privilegi e aggiunti come ruoli con nome e descrizione. |
debugContext.debugData.pushOnlyResponseType |
security_result.detection_fields.value |
Mappato direttamente, con la chiave pushOnlyResponseType . |
debugContext.debugData.pushWithNumberChallengeResponseType |
security_result.detection_fields.value |
Mappato direttamente, con la chiave pushWithNumberChallengeResponseType . |
debugContext.debugData.requestUri |
extensions.auth.auth_details |
Mappato direttamente. |
debugContext.debugData.suspiciousActivityEventId |
security_result.detection_fields.value |
Mappato direttamente, con la chiave suspiciousActivityEventId . |
debugContext.debugData.suspiciousActivityEventType |
security_result.detection_fields.value |
Mappato direttamente, con la chiave suspiciousActivityEventType . |
debugContext.debugData.threatDetections |
security_result.detection_fields.value |
Mappato direttamente, con la chiave threatDetections . |
debugContext.debugData.threatSuspected |
security_result.detection_fields.value , security_result.threat_status |
Mappato come campo di rilevamento con la chiave threatSuspected . Utilizzato per derivare lo stato della minaccia (ACTIVE o FALSE_POSITIVE). |
debugContext.debugData.url |
target.url |
Mappato direttamente. |
displayMessage |
security_result.summary |
Mappato direttamente. |
eventType |
metadata.product_event_type , metadata.event_type |
Mappato direttamente a product_event_type . Utilizzato per derivare event_type (USER_LOGIN, USER_LOGOUT, USER_CHANGE_PASSWORD, USER_CHANGE_PERMISSIONS, USER_DELETION, GROUP_MODIFICATION, SETTING_MODIFICATION, SCHEDULED_TASK_ENABLE, RESOURCE_CREATION, USER_UNCATEGORIZED). |
legacyEventType |
security_result.detection_fields.value |
Mappato direttamente, con la chiave legacyEventType . |
outcome.reason |
security_result.category_details |
Mappato direttamente. |
outcome.result |
security_result.action |
Mappato all'azione (ALLOW, CHALLENGE, BLOCK) in base al valore. |
published |
metadata.event_timestamp |
Analizzato in base al timestamp. |
request.ipChain.n.geographicalContext |
intermediary.location |
Contesto geografico degli IP intermedi nella catena di richieste. |
request.ipChain.n.ip |
intermediary.ip |
Indirizzi IP degli intermediari nella catena di richieste. |
securityContext.asNumber |
security_result.detection_fields.value |
Mappato direttamente, con la chiave asNumber . |
securityContext.asOrg |
security_result.detection_fields.value |
Mappato direttamente, con la chiave asOrg . |
securityContext.domain |
security_result.detection_fields.value |
Mappato direttamente, con la chiave domain . |
securityContext.isp |
security_result.detection_fields.value |
Mappato direttamente, con la chiave isp . |
securityContext.isProxy |
security_result.detection_fields.value |
Mappato direttamente, con la chiave anonymized IP . |
target.n.alternateId |
target.user.email_addresses /target.user.userid |
Se si tratta di un indirizzo email, mappato a target.user.email_addresses . Se non è un indirizzo email, viene utilizzato come target.user.userid . |
target.n.detailEntry.clientAppId |
target.asset_id |
Mappato direttamente, con il prefisso Client_app_id: . |
target.n.detailEntry.methodTypeUsed |
target.resource_ancestors.attribute.labels.value |
Mappato direttamente, con la chiave methodTypeUsed quando il tipo di destinazione è AuthenticatorEnrollment. |
target.n.detailEntry.methodUsedVerifiedProperties |
target.resource_ancestors.attribute.labels.value |
Mappato direttamente, con la chiave methodUsedVerifiedProperties quando il tipo di destinazione è AuthenticatorEnrollment. |
target.n.detailEntry.policyType |
target.resource_ancestors.attribute.labels.value |
Mappato direttamente, con la chiave Policy Type . |
target.n.detailEntry.signOnModeType |
security_result.detection_fields.value |
Mappato direttamente, con la chiave signOnModeType . |
target.n.displayName |
target.user.user_display_name / target.application / target.resource.name |
Mappatura eseguita in base al tipo di destinazione. |
target.n.id |
target.user.product_object_id / target.resource.product_object_id / target.resource_ancestors.product_object_id |
Mappatura eseguita in base al tipo di destinazione. |
target.n.type |
target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype |
Mappatura eseguita in base al tipo di destinazione. |
transaction.id |
network.session_id |
Mappato direttamente. |
transaction.type |
additional.fields.value.string_value |
Mappato direttamente come valore stringa con la chiave type in additional.fields . |
uuid |
metadata.product_log_id |
Mappato direttamente. |
N/D | metadata.vendor_name |
Imposta su Okta . |
N/D | metadata.product_name |
Imposta su Okta . |
N/D | extensions.auth.type |
Imposta su SSO . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.