Raccogli i log di JumpCloud Directory Insights

Supportata in:

Questo documento spiega come importare i log di JumpCloud Directory Insights in Google Security Operations utilizzando Google Cloud Storage V2.

JumpCloud è una piattaforma di directory cloud che fornisce gestione delle identità, SSO e gestione dei dispositivi. Directory Insights fornisce log di controllo e delle attività che coprono l'autenticazione degli utenti, le azioni degli amministratori e gli eventi di sistema. Il parser mappa i campi dei log al modello UDM (Unified Data Model), gestendo tipi di eventi come accessi degli utenti, modifiche alle risorse e azioni di sicurezza.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Storage di Cloud Storage abilitata
  • Autorizzazioni per creare e gestire bucket GCS e policy IAM
  • Un account JumpCloud con un ruolo Admin (Amministratore) o Manager (Gestore) e una chiave API valida

Crea un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio jumpcloud-directory-insights-logs)
    Tipo di località Scegli in base alle tue esigenze (Regione, a due regioni, multiregionale)
    Località Seleziona la località (ad esempio us-central1)
    Classe di archiviazione Standard (consigliato per i log ad accesso frequente)
    Controllo degli accessi Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Esporta i log di JumpCloud Directory Insights in Google Cloud Storage

JumpCloud Directory Insights espone gli eventi tramite l'API Directory Insights. Utilizza uno script pianificato o una funzione Cloud Run per estrarre gli eventi e scriverli in GCS.

  1. Genera una chiave API JumpCloud:

    1. Accedi al portale di amministrazione di JumpCloud.
    2. Vai all'icona del tuo profilo e seleziona La mia chiave API.
    3. Copia la chiave API.
  2. Crea una funzione Cloud Run che esegua query sull'API JumpCloud Directory Insights, recuperi gli eventi e li scriva in GCS.

  3. Attivare la funzione in base a una pianificazione utilizzando Cloud Scheduler e Pub/Sub.

  • Assicurati che i file esportati mantengano il formato JSON originale.
  • Ogni file deve contenere uno o più record di eventi.

Recupera il account di servizio Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  3. Fai clic su Aggiungi nuovo feed.
  4. Fai clic su Configura un singolo feed.
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona JumpCloud Directory Insights come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email univoco del account di servizio, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia l'indirizzo email. Lo utilizzerai nel prossimo passaggio.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket.
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps.
    • Assegna ruoli: seleziona Visualizzatore oggetti Storage.
  6. Fai clic su Salva.

Configura un feed in Google SecOps per importare i log di JumpCloud Directory Insights

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad es. JumpCloud Directory Insights Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona JumpCloud Directory Insights come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    Campo Valore
    URI del bucket di archiviazione gs://jumpcloud-directory-insights-logs/jumpcloud/
    Opzione di eliminazione dell'origine Seleziona l'opzione di eliminazione in base alle tue preferenze
    Maximum File Age (Days) Il valore predefinito è 180 giorni
    Spazio dei nomi dell'asset Lo spazio dei nomi dell'asset
    Etichette di importazione L'etichetta da applicare agli eventi di questo feed
    • Sostituisci jumpcloud-directory-insights-logs con il nome effettivo del bucket GCS.
    • Includi sempre la barra finale (/) alla fine dell'URI.
  9. Fai clic su Avanti.

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

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
data.profile_list.payload_content.payload_type, data.profile_list.payload_content.payload_identifier, data.profile_list.payload_content.payload_uuid, data.profile_list.payload_content.payload_organization, data.profile_list.payload_content.payload_display_name, data.profile_list.payload_content.payload_description about Unito alle etichette degli attributi di payloadContent
data.association.op, data.association.action_source, data.geoip.region_code, data.service, data.event_type, data.@version, data.application.version, data.application.publisher, data.application.uninstall_string, data.changes.0.field, data.changes.0.from, data.changes.0.to, data.available_os_updates.allows_install_later additional.fields Unite alle etichette corrispondenti
extensions.auth.type Impostato su "MACHINE" quando event_type è USER_LOGIN
data.timestamp metadata.event_timestamp Conversione eseguita utilizzando la corrispondenza della data ISO8601, RFC 3339, yyyy-MM-ddTHH:mm:ss.SSSSSSZ
data.message, data.client_ip, data.initiated_by.username, data.system.hostname metadata.event_type Impostato su USER_LOGIN se il messaggio corrisponde a "connesso" e il target non è vuoto, altrimenti su USER_UNCATEGORIZED se sono presenti IP e ID utente, altrimenti su STATUS_UPDATE se sono presenti nome host o IP, altrimenti su USER_UNCATEGORIZED se è presente l'ID utente, altrimenti su GENERIC_EVENT
data.id metadata.product_log_id Valore copiato direttamente
data.@version, data.application.version metadata.product_version Impostato su data.@version, poi sostituito con data.application.version
data.application.name principal.application Valore copiato direttamente
data.mdm_type principal.asset.hardware Unito con il produttore impostato su data.mdm_type
data.command_uuid principal.asset_id Concatenato come "commandUuid:" + data.command_uuid
data.system.hostname principal.hostname Valore copiato direttamente
data.client_ip principal.ip Unito da data.client_ip
data.geoip.country_code principal.location.country_or_region Valore copiato direttamente
data.geoip.region_code principal.location.name Valore copiato direttamente
data.geoip.latitude principal.location.region_latitude Convertito in stringa e poi in numero in virgola mobile
data.geoip.longitude principal.location.region_longitude Convertito in stringa e poi in float
data.geoip.region_name principal.location.state Valore copiato direttamente
data.application.path, data.process_name principal.process.file.full_path Impostato su data.application.path, poi sostituito con data.process_name
data.association.connection.from.name, data.mdm_device_manager_id, data.request_type principal.resource.attribute.labels Unite alle etichette per connection_from_name, mdm_device_manager_id, request_type
data.system.id, data.resource.id, data.mdm_device_id principal.resource.id Impostato su data.system.id, poi sostituito con data.resource.id, poi sostituito con data.mdm_device_id
data.resource.username principal.resource.name Valore copiato direttamente
data.association.connection.from.object_id principal.resource.product_object_id Valore copiato direttamente
data.association.connection.from.type principal.resource.type Valore copiato direttamente
data.initiated_by.email principal.user.email_addresses Unito se l'email corrisponde a ^.+@.+$
data.system.displayName principal.user.user_display_name Valore copiato direttamente
data.initiated_by.username, data.admin_info.name principal.user.userid Impostato su data.initiated_by.username, poi sostituito con data.admin_info.name, poi sostituito con data.initiated_by.username
data.success, data.status sec_result.action Imposta su ALLOW se success è true o se lo stato è Acknowledged, BLOCK se success è false
data.status, data.success sec_result.action_details Impostato su stato se non vuoto, altrimenti su operazione riuscita
data.success, data.status, data.security_info.management_status.is_activation_lock_manageable, data.security_info.management_status.is_user_enrollment, data.security_info.management_status.enrolled_via_dep, data.organization, data.windows_meta.logon_type, data.security_info.management_status.user_approved_enrollment sec_result.detection_fields Unito alle etichette per is_activation_lock_manageable, is_user_enrollment, enrolled_via_dep, organization, logon_type, user_approved_enrollment
data.query_responses.device_name target.hostname Valore copiato direttamente
data.query_responses.wifi_mac target.mac Unito da data.query_responses.wifi_mac
data.query_responses.model_name target.platform Imposta su "MAC" se corrisponde a (?i)mac
data.query_responses.os_version target.platform_version Valore copiato direttamente
data.query_responses.available_device_capacity, data.query_responses.device_capacity target.resource.attribute.labels Unito alle etichette per available_device_capacity, device_capacity
data.association.connection.to.name target.resource.name Valore copiato direttamente
data.association.connection.to.object_id target.resource.product_object_id Valore copiato direttamente
data.association.connection.to.type target.resource.type Valore copiato direttamente
data.profile_list.payload_organization target.user.department Unito da profile_payload_organization
metadata.vendor_name Imposta su "JUMPCLOUD_DIRECTORY_INSIGHTS"
metadata.product_name Imposta su "JUMPCLOUD_DIRECTORY_INSIGHTS"
data.alert_id event.idm.read_only_udm.metadata.product_log_id Mappato dal log delle modifiche
data.alert_title event.idm.read_only_udm.security_result.summary Mappato dal log delle modifiche
data.category event.idm.read_only_udm.security_result.category_details Mappato dal log delle modifiche
data.description event.idm.read_only_udm.security_result.description Mappato dal log delle modifiche
data.priority event.idm.read_only_udm.security_result.priority Mappato dal log delle modifiche
data.rule_id event.idm.read_only_udm.security_result.rule_id Mappato dal log delle modifiche
data.event_description event.idm.read_only_udm.metadata.description Mappato dal log delle modifiche
data.di_event.event_type event.idm.read_only_udm.metadata.product_event_type Mappato dal log delle modifiche
data.di_event.initiated_by.email event.idm.read_only_udm.principal.user.email_addresses Mappato dal log delle modifiche
data.di_event.initiated_by.id event.idm.read_only_udm.principal.user.product_object_id Mappato dal log delle modifiche
data.di_event.client_ip event.idm.read_only_udm.principal.ip Mappato dal log delle modifiche
data.di_event.association.connection.from.name event.idm.read_only_udm.target.group.group_display_name Mappato dal log delle modifiche
data.di_event.association.connection.to.name event.idm.read_only_udm.about.user.userid Mappato dal log delle modifiche
data.di_event.association.connection.to.object_id event.idm.read_only_udm.about.user.product_object_id Mappato dal log delle modifiche
data.di_event.success event.idm.read_only_udm.security_result.action Mappato dal log delle modifiche
data.di_event.service event.idm.read_only_udm.target.application Mappato dal log delle modifiche
data.di_event.geoip.country_code event.idm.read_only_udm.principal.location.country_or_region Mappato dal log delle modifiche
data.organization_name event.idm.read_only_udm.principal.user.company_name Mappato dal log delle modifiche
data.di_event.@version event.idm.read_only_udm.metadata.product_version Mappato dal log delle modifiche
data.source_url event.idm.read_only_udm.principal.url Mappato dal log delle modifiche
data.di_event.initiated_by.source event.idm.read_only_udm.principal.hostname Mappato dal log delle modifiche
data.source_name event.idm.read_only_udm.principal.user.userid Mappato dal log delle modifiche
data.di_event.geoip.latitude event.idm.read_only_udm.principal.location.region_latitude Mappato dal log delle modifiche
data.di_event.geoip.longitude event.idm.read_only_udm.principal.location.region_longitude Mappato dal log delle modifiche
data.di_event.geoip.region_name event.idm.read_only_udm.principal.location.state Mappato dal log delle modifiche
data.di_event.organization event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
association_op", "action_source", and "sso_token_success additional.fields Mappato dal log delle modifiche
connection_from_type principal.resource.resource_type Mappato dal log delle modifiche
connection_from_object_id principal.resource.product_object_id Mappato dal log delle modifiche
connection_to_name target.resource.name Mappato dal log delle modifiche
connection_to_type target.resource.resource_type Mappato dal log delle modifiche
connection_to_object_id target.resource.product_object_id Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

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