Raccogliere i log del contesto utente di Okta

Supportato in:

Questo documento spiega come raccogliere i log del contesto utente di Okta configurando un feed Google Security Operations utilizzando l'API di terze parti.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Accesso privilegiato al tenant o alla console di amministrazione Okta
  • Privilegi di creazione dei token API in Okta

Configurare la lista consentita IP

Prima di creare il feed, devi inserire gli intervalli IP di Google SecOps nella lista consentita nelle impostazioni di rete o del firewall di Okta.

Ottenere gli intervalli IP di Google SecOps

Aggiungere intervalli IP al contesto utente Okta

  1. Accedi alla console di amministrazione Okta.
  2. Vai a Sicurezza > Reti.
  3. Nella sezione Limitazioni indirizzo IP, fai clic su Modifica.
  4. Aggiungi ogni intervallo IP di Google SecOps in notazione CIDR agli indirizzi IP attendibili.
  5. Fai clic su Salva.

Configurare l'accesso all'API User Context di Okta

Per consentire a Google SecOps di estrarre i dati di contesto dell'utente, devi creare un token API con autorizzazioni di lettura.

Crea token API

  1. Accedi alla console di amministrazione Okta.
  2. Vai a Sicurezza > API.
  3. Seleziona la scheda Token.
  4. Fai clic su Crea token.
  5. Fornisci i seguenti dettagli di configurazione:
    • Nome: inserisci un nome descrittivo (ad esempio, Google SecOps Integration).
    • (Facoltativo) Descrizione: inserisci una descrizione.
  6. Fai clic su Crea token.

Registra le credenziali API

Dopo aver creato il token API, riceverai le seguenti credenziali:

  • Token API: il valore del token API (ad esempio, 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1)

Autorizzazioni API richieste

Il token API richiede le seguenti autorizzazioni in Okta:

Autorizzazione/Ruolo Livello di accesso Finalità
Amministratore di sola lettura Leggi Accedere ai dati del profilo utente
Super amministratore Leggi Accesso completo a tutti i dati utente

Configurare i feed

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Okta User Context).
  5. Seleziona API di terze parti come Tipo di origine.
  6. Seleziona Contesto utente Okta come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • Intestazione HTTP di autenticazione: inserisci le credenziali di autenticazione nel seguente formato:

      Authorization:SSWS your-api-token
      
      • Ad esempio: Authorization:SSWS 00QCGr-1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1
    • Nome host API: il nome di dominio completo della tua istanza Okta (ad es. example.okta.com, non un dominio personalizzato che potrebbe essere configurato).

      • Ad esempio: company.okta.com
    • Campo di riferimento ID gestore: ID richiesto quando utilizzi un ID non Okta per fare riferimento ai gestori (facoltativo).

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Dopo la configurazione, il feed inizia a recuperare i log dall'istanza del contesto utente di Okta in ordine cronologico.

Endpoint regionali

Okta utilizza endpoint API diversi in base alla regione della tua organizzazione:

Regione URL di base / nome host
Stati Uniti (predefinito) {org-name}.okta.com
UE (EMEA) {org-name}.okta-emea.com
APAC {org-name}.okta.com.au
Anteprima (test) {org-name}.oktapreview.com

Utilizza il nome host corrispondente alla regione dell'istanza Okta.

Limiti di frequenza delle richieste API

L'API Okta presenta i seguenti limiti di frequenza:

  • Limite di frequenza predefinito: 600 richieste al minuto per la maggior parte degli endpoint
  • API System Log: 60 richieste al minuto
  • Endpoint utente: 600 richieste al minuto

Google SecOps gestisce automaticamente la limitazione di frequenza con backoff esponenziale. Se riscontri problemi, contatta l'assistenza Okta per aumentare i limiti API.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
activated event.idm.entity.entity.labels Se activated esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "activated".
created event.idm.entity.entity.labels Se created esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "created".
profile.costCenter event.idm.entity.entity.labels Se profile.costCenter esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "costCenter".
profile.Function event.idm.entity.entity.labels Se profile.Function esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Function".
statusChanged event.idm.entity.entity.labels Se statusChanged esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "statusChanged".
type.id event.idm.entity.entity.labels Se type.id esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "type_id".
profile.location event.idm.entity.entity.location.name Valore tratto da profile.location.
profile.AD_ObjectGUID event.idm.entity.entity.user.attribute.labels Se profile.AD_ObjectGUID esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "AD_ObjectGUID".
profile.ADpwdLastSet event.idm.entity.entity.user.attribute.labels Se profile.ADpwdLastSet esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "ADpwdLastSet".
profile.AFF_Code event.idm.entity.entity.user.attribute.labels Se profile.AFF_Code esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "AFF_Code".
profile.Desk_Location_WD event.idm.entity.entity.user.attribute.labels Se profile.Desk_Location_WD esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Desk_Location_WD".
profile.Mailing_Address_WD event.idm.entity.entity.user.attribute.labels Se profile.Mailing_Address_WD esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Mailing_Address_WD".
profile.Manager_UPN event.idm.entity.entity.user.attribute.labels Se profile.Manager_UPN esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Manager_UPN".
profile.PRIVATE_CONF_Profile event.idm.entity.entity.user.attribute.labels Se profile.PRIVATE_CONF_Profile esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "PRIVATE_CONF_Profile".
profile.Region_WD event.idm.entity.entity.user.attribute.labels Se profile.Region_WD esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Region_WD".
profile.Subsidiary_Company event.idm.entity.entity.user.attribute.labels Se profile.Subsidiary_Company esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Subsidiary_Company".
profile.Telephone_Work event.idm.entity.entity.user.attribute.labels Se profile.Telephone_Work esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Telephone_Work".
profile.Temp_WD_Primary_Email event.idm.entity.entity.user.attribute.labels Se profile.Temp_WD_Primary_Email esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Temp_WD_Primary_Email".
profile.VMware_WS1_Username event.idm.entity.entity.user.attribute.labels Se profile.VMware_WS1_Username esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "VMware_WS1_Username".
profile.Work_Street_Address_WD event.idm.entity.entity.user.attribute.labels Se profile.Work_Street_Address_WD esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Work_Street_Address_WD".
profile.Workato_WD_Primary_Email event.idm.entity.entity.user.attribute.labels Se profile.Workato_WD_Primary_Email esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Workato_WD_Primary_Email".
profile.Workday_ID event.idm.entity.entity.user.attribute.labels Se profile.Workday_ID esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Workday_ID".
profile.Worker_Type_WD event.idm.entity.entity.user.attribute.labels Se profile.Worker_Type_WD esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "Worker_Type_WD".
profile.businessUnit event.idm.entity.entity.user.attribute.labels Se profile.businessUnit esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "businessUnit".
profile.companyName event.idm.entity.entity.user.attribute.labels Se profile.companyName esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "companyName".
profile.contingentSupplierName event.idm.entity.entity.user.attribute.labels Se profile.contingentSupplierName esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "contingentSupplierName".
profile.conversationId event.idm.entity.entity.user.attribute.labels Se profile.conversationId esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "conversationId".
profile.distinguishedName event.idm.entity.entity.user.attribute.labels Se profile.distinguishedName esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "distinguishedName".
profile.division event.idm.entity.entity.user.attribute.labels Se profile.division esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "divisione".
profile.emailPrefix event.idm.entity.entity.user.attribute.labels Se profile.emailPrefix esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "emailPrefix".
profile.employeeType event.idm.entity.entity.user.attribute.labels Se profile.employeeType esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "employeeType".
profile.homePostalAddress event.idm.entity.entity.user.attribute.labels Se profile.homePostalAddress esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "homePostalAddress".
profile.isManager event.idm.entity.entity.user.attribute.labels Se profile.isManager esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "isManager".
lastLogin event.idm.entity.entity.user.attribute.labels Se lastLogin esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "lastLogin".
profile.leaveOfAbsence event.idm.entity.entity.user.attribute.labels Se profile.leaveOfAbsence esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "leaveOfAbsence".
profile.managerDn event.idm.entity.entity.user.attribute.labels Se profile.managerDn esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "managerDn".
profile.payGroup event.idm.entity.entity.user.attribute.labels Se profile.payGroup esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "payGroup".
profile.wdemployeeID event.idm.entity.entity.user.attribute.labels Se profile.wdemployeeID esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "wdemployeeID".
profile.zipCode event.idm.entity.entity.user.attribute.labels Se profile.zipCode esiste, il suo valore viene aggiunto come coppia chiave-valore con la chiave "zipCode".
profile.userType event.idm.entity.entity.user.attribute.roles Se profile.userType esiste, il suo valore viene aggiunto a un array di ruoli.
profile.organization, profile.company event.idm.entity.entity.user.company_name Valore estratto da profile.organization o profile.company se il primo non è presente.
profile.department event.idm.entity.entity.user.department Valore tratto da profile.department.
profile.email, profile.secondEmail, profile.login event.idm.entity.entity.user.email_addresses I valori di profile.email, profile.secondEmail e profile.login (se si tratta di un'email e non di un duplicato) vengono uniti in questo campo.
profile.employeeNumber event.idm.entity.entity.user.employee_id Valore tratto da profile.employeeNumber.
profile.firstName, profile.Preferred_First_Name event.idm.entity.entity.user.first_name Valore estratto da profile.firstName o profile.Preferred_First_Name se il primo non è presente.
profile.EmployeeWorkGroup event.idm.entity.entity.user.group_identifiers Valore tratto da profile.EmployeeWorkGroup.
profile.HireDate, profile.hiredate event.idm.entity.entity.user.hire_date Il valore viene analizzato da profile.HireDate o profile.hiredate se il primo non è presente.
profile.lastName, profile.preferred_Last_Name event.idm.entity.entity.user.last_name Valore estratto da profile.lastName se esiste profile.lastName o profile.preferred_Last_Name.
lastLogin event.idm.entity.entity.user.last_login_time Il valore viene analizzato da lastLogin.
passwordChanged event.idm.entity.entity.user.last_password_change_time Il valore viene analizzato da passwordChanged.
profile.manager, profile.managerEmail, profile.managerId event.idm.entity.entity.user.managers Compilato con un oggetto contenente user_display_name da profile.manager, email_addresses da profile.managerEmail e employee_id da profile.managerId.
profile.city, profile.firstBaseCity event.idm.entity.entity.user.office_address.city Valore estratto da profile.city o profile.firstBaseCity se il primo non è presente.
profile.countryCode, profile.country event.idm.entity.entity.user.office_address.country_or_region Valore estratto da profile.countryCode o profile.country se il primo non è presente.
profile.streetAddress event.idm.entity.entity.user.personal_address.name Valore tratto da profile.streetAddress.
profile.state event.idm.entity.entity.user.personal_address.state Valore tratto da profile.state.
profile.primaryPhone, profile.mobilePhone, profile.mobile event.idm.entity.entity.user.phone_numbers I valori di profile.primaryPhone, profile.mobilePhone e profile.mobile vengono uniti in questo campo.
profile.terminationDate, profile.terminationdate event.idm.entity.entity.user.termination_date Il valore viene analizzato da profile.terminationDate o profile.terminationdate se il primo non è presente.
profile.title event.idm.entity.entity.user.title Valore tratto da profile.title.
status event.idm.entity.entity.user.user_authentication_status Mappato da status: ACTIVE/RECOVERY/LOCKED_OUT/PASSWORD_EXPIRED -> ACTIVE; SUSPENDED -> SUSPENDED; DEPROVISIONED -> DELETED; altrimenti UNKNOWN_AUTHENTICATION_STATUS.
profile.displayName event.idm.entity.entity.user.user_display_name Valore tratto da profile.displayName.
profile.samAccountName, profile.samaccountname, profile.login, profile.ldapUid event.idm.entity.entity.user.userid Compilato con precedenza: profile.samAccountName, profile.samaccountname, profile.login (se non è un'email), profile.ldapUid (se profile.login non è un'email).
event.idm.entity.metadata.entity_type Imposta su USER.
id event.idm.entity.metadata.product_entity_id Valore tratto da id.
event.idm.entity.metadata.product_name Imposta su Identity Cloud.
event.idm.entity.metadata.vendor_name Imposta su Okta.

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