Raccogliere i log di Okta

Supportato in:

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 raggruppati all'interno di un array JSON. Normalizza i dati nel formato UDM, mappa i campi Okta agli equivalenti UDM, arricchisce i dati con gli agenti utente analizzati, le informazioni geografiche e i dettagli di autenticazione e genera eventi di risultati di sicurezza in base ai risultati e alle informazioni sui rischi.

Prima di iniziare

  • Assicurati di avere un'istanza Google SecOps.
  • Assicurati di disporre dell'accesso con privilegi a Okta.

Configurare Okta

Per configurare l'accesso SSO di Okta, completa le seguenti attività:

Creare un utente amministrativo Okta con privilegi di sola lettura

  1. Accedi alla console di amministrazione di Okta.
  2. Crea un utente standard.

    • Vai a Directory > Persone.
    • Fai clic su Aggiungi persona e compila i campi obbligatori.
  3. Seleziona Sicurezza > Amministratori.

  4. Fai clic su Aggiungi amministratore.

  5. Nel campo Assegnazione amministratore da parte dell'amministratore, individua l'utente standard.

  6. Nella sezione Ruoli, seleziona Amministratore di sola lettura dall'elenco.

  7. Esci dall'account amministratore.

Recupera chiave API

  1. Accedi alla console di amministrazione Okta con l'utente amministratore di sola lettura.
  2. Vai a Sicurezza > API > Token.
  3. Fai clic su Crea token.
  4. Fornisci un nome significativo per il token.
  5. Fornisci la zona IP in cui verrà utilizzata l'API (se hai dubbi, puoi selezionare qualsiasi IP).
  6. Fai clic su Crea token.
  7. Copia la chiave API.
  8. Fai clic su Ok.

Configura un feed in Google SecOps per importare i log di Okta

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo.
  3. Nel campo Nome feed, inserisci un nome per il feed (ad esempio Log di Okta).
  4. Seleziona API di terze parti come Tipo di origine.
  5. Seleziona Okta come Tipo di log.
  6. Fai clic su Avanti.
  7. Specifica i valori per i seguenti parametri di input:
    • Intestazione HTTP per l'autenticazione: inserisci la chiave API Okta nel seguente formato: Authorization:<API_KEY>.
    • Nome host dell'API: specifica il nome di dominio dell'host Okta (ad esempio <your-domain>.okta.com).
    • Spazio dei nomi degli asset: lo spazio dei nomi degli asset.
    • Etichette di importazione: l'etichetta applicata agli eventi di questo feed.
  8. Fai clic su Avanti.
  9. Controlla la configurazione del feed nella schermata Concludi e poi fai clic su Invia.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
actor.alternateId principal.user.email_addresses Estratto da actor.alternateId se si tratta di un indirizzo email. Se non è un indirizzo email, viene utilizzato come principal.user.userid.
actor.displayName principal.user.user_display_name Mappatura diretta.
actor.id principal.user.product_object_id Mappatura diretta.
actor.type principal.user.attribute.roles.name Mappatura diretta.
authenticationContext.authenticationProvider security_result.detection_fields.value Mappata direttamente, con chiave authenticationProvider.
authenticationContext.credentialProvider security_result.detection_fields.value Mappata direttamente, con chiave credentialProvider.
authenticationContext.credentialType extensions.auth.mechanism Utilizzato per dedurre il meccanismo di autenticazione (OTP, USERNAME_PASSWORD, LOCAL).
authenticationContext.externalSessionId network.parent_session_id Mappatura diretta.
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 di stringa con chiave device in additional.fields.
client.geographicalContext.city principal.location.city Mappatura diretta.
client.geographicalContext.country principal.location.country_or_region Mappatura diretta.
client.geographicalContext.geolocation.lat principal.location.region_latitude Mappatura diretta.
client.geographicalContext.geolocation.lon principal.location.region_longitude Mappatura diretta.
client.geographicalContext.postalCode additional.fields.value.string_value Mappato direttamente come valore di stringa con chiave Postal code in additional.fields.
client.geographicalContext.state principal.location.state Mappatura diretta.
client.ipAddress principal.ip, principal.asset.ip Mappatura diretta.
client.userAgent.browser target.resource.attribute.labels.value Mappata direttamente, con 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 Mappatura e analisi dirette.
client.zone additional.fields.value.string_value Mappato direttamente come valore di stringa con chiave zone in additional.fields.
debugContext.debugData.behaviors security_result.description, security_result.detection_fields Mappati direttamente alla descrizione. I singoli comportamenti vengono estratti e aggiunti come campi di rilevamento.
debugContext.debugData.changedAttributes security_result.detection_fields.value Mappata direttamente, con chiave changedAttributes.
debugContext.debugData.clientAddress principal.ip, principal.asset.ip Mappatura diretta se mancano request.ipChain e client.ipAddress.
debugContext.debugData.deviceFingerprint target.asset.asset_id Mappatura diretta, con prefisso device_finger_print:.
debugContext.debugData.dtHash security_result.detection_fields.value Mappata direttamente, con chiave dtHash.
debugContext.debugData.factor security_result.detection_fields.value Mappata direttamente, con chiave factor.
debugContext.debugData.factorIntent security_result.detection_fields.value Mappata direttamente, con chiave factorIntent.
debugContext.debugData.logOnlySecurityData.risk.reasons security_result.detection_fields.value Mappata direttamente, con 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 Mappata direttamente, con chiave pushOnlyResponseType.
debugContext.debugData.pushWithNumberChallengeResponseType security_result.detection_fields.value Mappata direttamente, con chiave pushWithNumberChallengeResponseType.
debugContext.debugData.requestUri extensions.auth.auth_details Mappatura diretta.
debugContext.debugData.suspiciousActivityEventId security_result.detection_fields.value Mappata direttamente, con chiave suspiciousActivityEventId.
debugContext.debugData.suspiciousActivityEventType security_result.detection_fields.value Mappata direttamente, con chiave suspiciousActivityEventType.
debugContext.debugData.threatDetections security_result.detection_fields.value Mappata direttamente, con chiave threatDetections.
debugContext.debugData.threatSuspected security_result.detection_fields.value, security_result.threat_status Mappato come campo di rilevamento con chiave threatSuspected. Utilizzato per dedurre lo stato della minaccia (ACTIVE o FALSE_POSITIVE).
debugContext.debugData.url target.url Mappatura diretta.
displayMessage security_result.summary Mappatura diretta.
eventType metadata.product_event_type, metadata.event_type Mappato direttamente a product_event_type. Utilizzato per dedurre 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 Mappata direttamente, con chiave legacyEventType.
outcome.reason security_result.category_details Mappatura diretta.
outcome.result security_result.action Mappato all'azione (ALLOW, CHALLENGE, BLOCK) in base al valore.
published metadata.event_timestamp Analizzati 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 Mappata direttamente, con chiave asNumber.
securityContext.asOrg security_result.detection_fields.value Mappata direttamente, con chiave asOrg.
securityContext.domain security_result.detection_fields.value Mappata direttamente, con chiave domain.
securityContext.isp security_result.detection_fields.value Mappata direttamente, con chiave isp.
securityContext.isProxy security_result.detection_fields.value Mappata direttamente, con chiave anonymized IP.
target.n.alternateId target.user.email_addresses/target.user.userid Se si tratta di un indirizzo email, deve essere mappato a target.user.email_addresses. Se non è un indirizzo email, viene utilizzato come target.user.userid.
target.n.detailEntry.clientAppId target.asset_id Mappatura diretta, con prefisso Client_app_id:.
target.n.detailEntry.methodTypeUsed target.resource_ancestors.attribute.labels.value Mappato direttamente, con chiave methodTypeUsed quando il tipo di destinazione è AuthenticatorEnrollment.
target.n.detailEntry.methodUsedVerifiedProperties target.resource_ancestors.attribute.labels.value Mappato direttamente, con chiave methodUsedVerifiedProperties quando il tipo di destinazione è AuthenticatorEnrollment.
target.n.detailEntry.policyType target.resource_ancestors.attribute.labels.value Mappata direttamente, con chiave Policy Type.
target.n.detailEntry.signOnModeType security_result.detection_fields.value Mappata direttamente, con chiave signOnModeType.
target.n.displayName target.user.user_display_name / target.application / target.resource.name Mappatura eseguita in base al tipo di target.
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 target.
target.n.type target.user.attribute.roles.name / target.resource.resource_subtype / target.resource_ancestors.resource_subtype Mappatura eseguita in base al tipo di target.
transaction.id network.session_id Mappatura diretta.
transaction.type additional.fields.value.string_value Mappato direttamente come valore di stringa con chiave type in additional.fields.
uuid metadata.product_log_id Mappatura diretta.
N/D metadata.vendor_name Imposta su Okta.
N/D metadata.product_name Imposta su Okta.
N/D extensions.auth.type Impostato su SSO.
N/D is_alert Imposta su true per gli eventi security.threat.detected e user.account.report_suspicious_activity_by_enduser.
N/D is_significant Imposta su true per gli eventi security.threat.detected e user.account.report_suspicious_activity_by_enduser.

Modifiche

2024-05-16

  • Se is_alert è true e is_significant è true, imposta security_result.alert_state su ALERTING.

2024-03-05

  • Campo security_result.action aggiornato per indicare se il traffico è stato consentito o bloccato.

2024-02-16

Correzione di bug:

  • Quando target.0.type è User o AppUser, target.0.alternateId viene mappato a target.user.userid.
  • Quando target.1.type è User o AppUser, target.1.alternateId viene mappato a target.user.userid.

2023-12-14

  • securityContext.asNumber è stato mappato a security_result.detection_fields.
  • legacyEventType è stato mappato a security_result.detection_fields.
  • È stato aggiunto conditional_check prima dell'impostazione metadata.event_type.

2023-06-28

  • Il valore completo mappato di debugContext.debugData.suspiciousActivityEventType a security_result.detection_fields.
  • Il valore completo mappato di debugContext.debugData.logOnlySecurityData.behaviors.New Device a security_result.detection_fields.

2023-06-09

  • Il campo debugContext.debugData.deviceFingerprint è mappato a target.asset.asset_id.
  • Il valore completo mappato di debugContext.debugData.risk.reasons a security_result.detection_fields.

2023-05-17

  • Il campo "authenticationContext.externalSessionId" è mappato a "network.parent_session_id".
  • Il campo "debugContext.debugData.pushOnlyResponseType" è mappato a "security_result.detection_fields.key/value".
  • Il campo "debugContext.debugData.factor" è mappato a "security_result.detection_fields.key/value".
  • Il campo "debugContext.debugData.factorIntent" è mappato a "security_result.detection_fields.key/value".
  • Il campo "debugContext.debugData.pushWithNumberChallengeResponseType" è mappato a "security_result.detection_fields.key/value".
  • Il campo "debugContext.debugData.dtHash" è mappato a "security_result.detection_fields.key/value".
  • Il campo "client.userAgent.rawUserAgent" è mappato a "network.http.user_agent".
  • È stata modificata la mappatura da "ALLOW_WITH_MODIFICATION" al valore enumerato "CHALLENGE" in "security_result.action".
  • Per l'eventType "system.api_token.create", è stato modificato metadata.event_type da "USER_UNCATEGORIZED" a "RESOURCE_CREATION".

2023-04-28

Correzione di bug:

  • Mappatura modificata per security_result.threat_status in ACTIVE quando debugContext.debugData.threatSuspected è true, altrimenti mappata a FALSE_POSITIVE.

2023-03-24

  • I campi logOnlySecurityData sono stati mappati a security_result.detection_fields.
  • Inoltre, è stato risolto l'errore di analisi aggiungendo DEFERRED all'elenco di azioni.

2023-04-11

  • I campi mappati a http.user_agent sono stati rimappati a http.parsed_user_agent.
  • target.displayName è stato mappato a target.resource_ancestors.name.
  • targetfield.detailEntry.methodTypeUsed è stato mappato a target.resource_ancestors.attribute.labels.
  • targetfield.detailEntry.methodUsedVerifiedProperties è stato mappato a target.resource_ancestors.attribute.labels.

2023-02-20

  • Il valore di metadata.event_type è cambiato da USER_LOGIN a STATUS_UPDATE dove eventType è user.authentication.auth_via_AD_agent

2022-12-14

  • debugContext.debugData.changedAttributes è stato mappato a security_result.detection_fields.
  • È stato aggiunto il controllo null per detail.actor.alternateId.

2022-11-17

  • Il campo target[n].alternateId è mappato a target.resource.attribute.labels.
  • Il campo detail.target.0.alternateId è mappato a target.resource.attribute.labels.

2022-11-08

Correzione di bug:

  • Aggiunta una condizione per il controllo corretto dell'email per il campo user_email.
  • È stato aggiunto il controllo per il campo Action1 non presente in RATE_LIMIT.
  • È stato aggiunto un controllo di valori null e sconosciuti per actor.displayName.

2022-11-04

  • È stato aggiunto il supporto per i log con più eventi.

2022-10-15

  • signOnModeType mappato a security_result.detection_fields.
  • authenticationProvider mappato a security_result.detection_fields.
  • credentialProvider mappato a security_result.detection_fields.
  • device mappato a additional.fields.
  • zone mappato a additional.fields.
  • type mappato a additional.fields.

2022-10-14

Correzione di bug:

  • È stato aggiunto il controllo condizionale per "principal.user.email_addresses" e "target.user.email_addresses".
  • È stato aggiunto il pattern grok per verificare la presenza di un indirizzo IP valido per il campo "request.ipChain.0.ip" mappato a "principal.ip".
  • È stata aggiunta la condizione on_error per il campo "debugContext.debugData.url" mappato a "target.url".

2022-10-03

  • client.userAgent.os è stato mappato a principal.platform.
  • client.device è stato mappato a principal.asset.type.
  • È stata mappata la stringa hardcoded anonymized IP a security_result.detection_fields.key, dove il valore "securityContext.isProxy" corrisponde a security_result.detection_fields.value.

2022-09-16

  • "securityContext.asOrg" mappato a "security_result.category_details".
  • 'securityContext.isProxy' mappato a 'security_result.detection_fields'.
  • 'securityContext.domain' mappato a 'security_result.detection_fields'.
  • 'securityContext.isp' mappato a 'security_result.detection_fields'.
  • "debugContext.debugData.risk.level" mappato a "security_result.severity".
  • 'debugContext.debugData.risk.reasons' mappato a 'security_result.detection_fields'.

2022-08-12

  • i log appena importati sono stati analizzati e mappati ai seguenti campi:
  • "detail.uuid" mappato a "metadata.product_log_id".
  • 'detail.eventType' mappato a 'metadata.product_event_type'
  • 'detail.actor.id' mappato a 'principal.user.product_object_id'.
  • if 'detail.actor.alternateId' mapped to 'principal.user.userid' else
  • "detail.actor.alternateId" mappato a "principal.user.email_addresses".
  • "detail.actor.displayName" mappato a "principal.user.user_display_name".
  • "detail.actor.type" mappato a ".principal.user.attribute.roles".
  • 'detail.client.ipChain.0.ip' mappato a 'principal.ip'.
  • 'detail.client.ipChain.0.geographicalContext.state' mappato a 'principal.location.state'.
  • 'detail.client.ipChain.0.geographicalContext.city' mappato a 'principal.location.city'.
  • 'detail.client.ipChain.0.geographicalContext.country' mappato a 'principal.location.country_or_region'.
  • 'detail.debugContext.debugData.requestUri' mappato a 'target.url'.
  • 'detail.target.0.type' mappato a 'target.resource.resource_subtype'.
  • 'detail.target.0.id' mappato a 'target.resource.resource.product_object_id'.
  • "detail.target.0.displayName" mappato a "target.resource.resource_subtype".
  • 'detail.target.0.detailEntry.policyType' mappato a 'target.resource_ancestors.attribute.labels'.
  • 'detail.outcome.reason' mappato a 'security_result.category_details'.
  • 'detail.debugContext.debugData.threatSuspected' mappato a 'security_result.detection_fields'.
  • "detail.displayMessage" mappato a "security_result.summary".
  • 'detail.outcome.result' mappato a 'security_result.action'.
  • 'detail.severity' mappato a 'security_result.severity'.
  • 'detail.transaction.id' mappato a 'network.session_id'.
  • 'detail.debugContext.debugData.requestUri' mappato a 'extensions.auth.auth_details'.

2022-07-08

  • Mappatura modificata per actor.type da principal.user.role_name a principal.user.attribute.roles.
  • Mappatura modificata per target.0.type da target.user.role_name a target.user.attribute.roles.
  • Mappatura modificata per target.1.type da target.user.role_name a target.user.attribute.roles.

2022-06-15

Miglioramento:

  • per target.0.type == Token.
  • target.0.detailEntry.clientAppId è stato mappato a target.asset_id.
  • È stato aggiunto un controllo condizionale per il campo "transaction.id" mappato al campo UDM "network.session_id".

2022-06-03

Miglioramento:

  • È stato mappato anche debugContext.debugData.privilegeGranted a target.user.attribute.roles.name.
  • È stata mappata la richiesta debugContext.debugData.requestUri ad extensions.auth.auth_details.
  • Sono stati mappati debugContext.debugData.suspiciousActivityEventId, debugContext.debugData.threatDetections e debugContext.debugData.threatSuspected a security_result.detection_fields.

2022-03-22

Miglioramento:

  • debugContext.debugData.behaviors mappato a security_result.description.
  • debugContext.debugData.threatSuspected mappato a security_result.threat_status.
  • debugContext.debugData.risk mappato a security_result.severity.

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