Raccogliere i log di Epic Systems

Supportato in:

Questo documento spiega come raccogliere i log di Epic Systems in Google Security Operations utilizzando un agente Bindplane. Il parser trasforma i log non elaborati del sistema EMR/EHR di Epic in un modello UDM (Unified Data Model). Innanzitutto pulisce e struttura i messaggi di log, estrae le coppie chiave-valore e poi mappa i campi estratti con i campi UDM corrispondenti, gestendo vari formati di log e incoerenze dei dati per garantire una rappresentazione dei dati completa e standardizzata.

Prima di iniziare

  • Assicurati di avere un'istanza Google Security Operations.
  • Assicurati di utilizzare Windows 2016 o versioni successive oppure un host Linux con systemd.
  • Se l'esecuzione avviene tramite un proxy, assicurati che le porte del firewall siano aperte.
  • Assicurati di disporre dell'accesso privilegiato a Epic Systems.

Recuperare il file di autenticazione importazione di Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione importazione. Salva il file in modo sicuro sul sistema in cui verrà installato Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installazione di Windows

  1. Apri il prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Installazione di Linux

  1. Apri un terminale con privilegi di root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Risorse aggiuntive per l'installazione

Configura l'agente Bindplane per importare Syslog e inviarli a Google SecOps

  1. Accedi al file di configurazione:

    1. Individua il file config.yaml. In genere, si trova nella directory /etc/bindplane-agent/ su Linux o nella directory di installazione su Windows.
    2. Apri il file utilizzando un editor di testo (ad esempio nano, vi o Blocco note).
  2. Modifica il file config.yaml come segue:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: EPIC
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Sostituisci la porta e l'indirizzo IP in base alle esigenze della tua infrastruttura.

  4. Sostituisci <customer_id> con l'ID cliente effettivo.

  5. Aggiorna /path/to/ingestion-authentication-file.json al percorso in cui è stato salvato il file di autenticazione nella sezione Recupera il file di autenticazione per l'importazione di Google SecOps.

Riavvia l'agente Bindplane per applicare le modifiche

  • Per riavviare l'agente Bindplane in Linux, esegui questo comando:

    sudo systemctl restart bindplane-agent
    
  • Per riavviare l'agente Bindplane in Windows, puoi utilizzare la console Servizi o inserire il seguente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configura il servizio SendSIEMSyslogAudit

  1. Accedi alla console Epic Systems.
  2. Vai a Start > Epic > Interconnect > <your instance> > Editor di configurazione.
  3. Seleziona il modulo Servizi aziendali.
  4. Nella scheda Categoria di servizio, seleziona SendSIEMSyslogAudit.
  5. Fai clic su Salva.

Configura Epic Systems per esportare syslog

  1. Vai a Definizioni di sistema Epic > Sicurezza > Opzioni di controllo > Impostazioni syslog SIEM.
  2. Fornisci i seguenti dettagli di configurazione:
    • Host: inserisci l'indirizzo IP dell'agente Bindplane.
    • Porta: inserisci il numero di porta dell'agente Bindplane.
    • Formato SIEM: seleziona CEF (Common Event Format).
    • Carattere di fine riga Syslog: seleziona Nuova riga "\n".
  3. Dal menu Impostazioni syslog SIEM, seleziona SIEM syslog.
  4. Fai clic su Attivata.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
APIID read_only_udm.additional.fields.api.value.string_value Il valore viene estratto dal campo APIID nel log non elaborato
APPLICATIONID read_only_udm.additional.fields.application_id.value.string_value Il valore viene estratto dal campo APPLICATIONID nel log non elaborato
APP read_only_udm.target.application Il valore viene estratto dal campo APP nel log non elaborato
SESSIONE DI CONTROLLO read_only_udm.network.session_id Il valore viene estratto dal campo AUDIT SESSION nel log non elaborato
AUTH_SOURCE Questo campo non è mappato a UDM
BCAPCS read_only_udm.target.application Il valore viene estratto dal campo BCAPCS nel log non elaborato
BTGEXPLANATION read_only_udm.security_result.description Il valore viene estratto dal campo BTGEXPLANATION nel log non elaborato
BTGNOACCESSREAS read_only_udm.security_result.summary Il valore viene estratto dal campo BTGNOACCESSREAS nel log non elaborato
BTGREASON read_only_udm.security_result.summary Il valore viene estratto dal campo BTGREASON nel log non elaborato
CLIENTNAME read_only_udm.principal.hostname Il valore viene estratto dal campo CLIENTNAME nel log non elaborato
CSISESS_TOKEN read_only_udm.network.session_id Il valore viene estratto dal campo CSISESS_TOKEN nel log non elaborato
CTXT read_only_udm.metadata.description Il valore viene estratto dal campo CTXT nel log non elaborato
CVG read_only_udm.additional.fields.cvg.value.string_value Il valore viene estratto dal campo CVG nel log non elaborato
DAT Questo campo non è mappato a UDM
DEP read_only_udm.principal.user.department Il valore viene estratto dal campo DEP nel log non elaborato. Se nel log non elaborato esistono sia il campo NEWDEPARTMENT che il campo PREVDEPARTMENT, il valore sarà PREVDEPARTMENT:-{PREVDEPARTMENT}, NEWDEPARTMENT:-{NEWDEPARTMENT}. Se esiste solo NEWDEPARTMENT, il valore sarà PREVDEPARTMENT:-NONE, NEWDEPARTMENT:{NEWDEPARTMENT}. Se esiste solo PREVDEPARTMENT, il valore sarà PREVDEPARTMENT:{PREVDEPARTMENT}, NEWDEPARTMENT:-NONE
devTime read_only_udm.metadata.event_timestamp Il valore viene estratto dal campo devTime nel log non elaborato e convertito in secondi trascorsi da epoca
devTimeFormat Questo campo non è mappato a UDM
E3MID read_only_udm.network.session_id Il valore viene estratto dal campo E3MID nel log non elaborato
CRITTOGRAFATO read_only_udm.additional.fields.encrypt.value.string_value Il valore viene estratto dal campo ENCRYPTED nel log non elaborato
ERRMSG read_only_udm.security_result.summary Il valore viene estratto dal campo ERRMSG nel log non elaborato
eventCnt Questo campo non è mappato a UDM
FILENAME read_only_udm.target.file.full_path Il valore viene estratto dal campo FILENAME nel log non elaborato e tutte le occorrenze di \\\\ vengono sostituite con \
flag read_only_udm.security_result.description Il valore viene estratto dal campo flag nel log non elaborato e tutti i - iniziali e finali vengono rimossi
HKUAPVER read_only_udm.metadata.product_version Il valore viene estratto dal campo HKUAPVER nel log non elaborato
HKUDVCID read_only_udm.principal.asset_id Il valore viene estratto dal campo HKUDVCID nel log non elaborato e formattato come Device ID:{HKUDVCID}
HKUOSNAM read_only_udm.principal.platform Il valore viene estratto dal campo HKUOSNAM nel log non elaborato e mappato a WINDOWS, MAC, LINUX o UNKNOWN_PLATFORM in base al valore
HKUOSVER read_only_udm.principal.platform_version Il valore viene estratto dal campo HKUOSVER nel log non elaborato
INSTANCEURN read_only_udm.intermediary.hostname Il valore viene estratto dal campo INSTANCEURN nel log non elaborato
IP read_only_udm.target.ip Il valore viene estratto dal campo IP nel log non elaborato. Se il valore contiene /, viene suddiviso in due indirizzi IP. Se il valore contiene ,, viene suddiviso in più indirizzi IP.
LOGINERROR read_only_udm.security_result.summary Il valore viene estratto dal campo LOGINERROR nel log non elaborato
LOGIN_CONTEXT read_only_udm.metadata.description Il valore viene estratto dal campo LOGIN_CONTEXT nel log non elaborato
LOGIN_DEVICE read_only_udm.additional.fields.login_device.value.string_value Il valore viene estratto dal campo LOGIN_DEVICE nel log non elaborato
LOGIN_LDAP_ID read_only_udm.principal.user.userid Il valore viene estratto dal campo LOGIN_LDAP_ID nel log non elaborato
LOGIN_REASON read_only_udm.security_result.summary Il valore viene estratto dal campo LOGIN_REASON nel log non elaborato
LOGIN_REVAL read_only_udm.additional.fields.login_reval.value.string_value Il valore viene estratto dal campo LOGIN_REVAL nel log non elaborato
MASKMODE read_only_udm.additional.fields.masked_mode.value.string_value Il valore viene estratto dal campo MASKMODE nel log non elaborato
MYCACCT read_only_udm.principal.user.userid Il valore viene estratto dal campo MYCACCT nel log non elaborato
NEWDEPARTMENT read_only_udm.principal.user.department Visualizza la logica per il campo DEP
NEWUSER Questo campo non è mappato a UDM
NSC read_only_udm.additional.fields.nsc.value.string_value Il valore viene estratto dal campo NSC nel log non elaborato
OSUSR read_only_udm.target.user.userid Il valore viene estratto dal campo OSUSR nel log non elaborato
PATIENT read_only_udm.target.user.userid Il valore viene estratto dal campo PATIENT nel log non elaborato
PREVDEPARTMENT read_only_udm.principal.user.department Visualizza la logica per il campo DEP
PREVPROVIDER Questo campo non è mappato a UDM
PREVUSER read_only_udm.principal.resource.attribute.labels.prev_user.value Il valore viene estratto dal campo PREVUSER nel log non elaborato
PWREASON read_only_udm.metadata.description Il valore viene estratto dal campo PWREASON nel log non elaborato
RUOLO read_only_udm.principal.user.attribute.roles.name Il valore viene estratto dal campo ROLE nel log non elaborato
risorsa read_only_udm.target.hostname Il valore viene estratto dal campo della risorsa nel log non elaborato
SERVICEID read_only_udm.additional.fields.service_id.value.string_value Il valore viene estratto dal campo SERVICEID nel log non elaborato
SERVICECATEGORY read_only_udm.additional.fields.service_category.value.string_value Il valore viene estratto dal campo SERVICECATEGORY nel log non elaborato
SERVICEMSGID Questo campo non è mappato a UDM
SERVICENAME read_only_udm.target.resource.name Il valore viene estratto dal campo SERVICENAME nel log non elaborato
SERVICETYPE read_only_udm.target.resource.type Il valore viene estratto dal campo SERVICETYPE nel log non elaborato. Se event_id è PHI_CLIENT_FILE, il valore è impostato su FILE
SERVICE_USER read_only_udm.target.user.userid Il valore viene estratto dal campo SERVICE_USER nel log non elaborato
SERVICE_USERTYP read_only_udm.additional.fields.service_user_type.value.string_value Il valore viene estratto dal campo SERVICE_USERTYP nel log non elaborato
sev read_only_udm.security_result.severity Il valore viene estratto dal campo sev nel log non elaborato e mappato a LOW, HIGH o CRITICAL in base al valore
shost read_only_udm.target.resource.attribute.labels.workstation_type.value Il valore viene estratto dal campo shost nel log non elaborato
ORIGINE read_only_udm.additional.fields.login_source.value.string_value Il valore viene estratto dal campo SOURCE nel log non elaborato
SUCCESS read_only_udm.additional.fields.success_yes_no.value.string_value Il valore viene estratto dal campo SUCCESS nel log non elaborato
TIMEOUT read_only_udm.additional.fields.time_out.value.string_value Il valore viene estratto dal campo TIMEOUT nel log non elaborato
UID read_only_udm.principal.user.userid Il valore viene estratto dal campo UID nel log non elaborato
USERJOB Questo campo non è mappato a UDM
usrName read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name Se nel log non elaborato esistono i campi UID o LOGIN_LDAP_ID, usrName viene utilizzato per read_only_udm.principal.user.user_display_name e l'altro campo viene utilizzato per read_only_udm.principal.user.userid. In caso contrario, usrName viene utilizzato per read_only_udm.principal.user.userid
WEBLGAPP read_only_udm.target.application Il valore viene estratto dal campo WEBLGAPP nel log non elaborato
read_only_udm.extensions.auth.type Il valore è impostato su SSO se LOGIN_LDAP_ID non è vuoto. In caso contrario, il valore viene impostato su AUTHTYPE_UNSPECIFIED.
read_only_udm.intermediary.ip Il valore è impostato sull'indirizzo IP dell'origine log.
read_only_udm.metadata.event_type Il valore è impostato su RESOURCE_READ se event_id è uno tra IC_SERVICE_AUDIT, AC_BREAK_THE_GLASS_FAILED_ACCESS, AC_BREAK_THE_GLASS_INAPPROPRIATE_ATTEMPT, AC_BREAK_THE_GLASS_ACCESS o MCMEMEDISA e target_ip_set è true o la risorsa non è vuota. Il valore è impostato su USER_LOGIN se event_id è uno dei seguenti: FAILEDLOGIN, LOGIN, ROVER_FAILED_LOGIN, SWITCHUSER, AUTHENTICATION, EW_LOGIN, ROVER_LOGIN, CTO_FAILED_LOGIN, CTO_LOGIN, HKU_FAILED_LOGIN, HKU_LOGIN, WPSEC_SEC_AUTH_OPT_OUT, WPSEC_SEC_AUTH_OPT_IN, BCA_LOGIN_FAILURE, BCA_LOGIN_SUCCESS, BCA_USER_LOCKED, WPSEC_LOGIN_FAIL o WPSEC_LOGIN_SUCCESS e almeno uno tra target_ip_set, resource, SERVICENAME, SERVICETYPE o shost non è vuoto. Il valore è impostato su USER_CHANGE_PASSWORD se event_id è uno tra E_ADMINPASSWORDCHANGE, E_FAILEDPASSWORDCHANGE, E_SELFPASSWORDCHANGE, WPSEC_USER_PASSWORD_CHANGE_FAIL o WPSEC_USER_PASSWORD_CHANGE. Il valore è impostato su USER_UNCATEGORIZED se event_id è CONTEXTCHANGE. Il valore è impostato su USER_RESOURCE_ACCESS se event_id è uno tra SECURE, UNSECURE, MASKED_DATA_DISPLAY o MASKED_DATA_PRINTING. Il valore è impostato su USER_RESOURCE_UPDATE_CONTENT se event_id è PHI_CLIENT_FILE. Il valore è impostato su STATUS_UPDATE se CLIENTNAME non è vuoto. Il valore è impostato su USER_UNCATEGORIZED se prin_usr_id non è vuoto. In caso contrario, il valore viene impostato su GENERIC_EVENT.
read_only_udm.metadata.log_type Il valore è impostato su EPIC.
read_only_udm.metadata.product_name Il valore è impostato su Epic Systems.
read_only_udm.metadata.vendor_name Il valore è impostato su EPIC.
read_only_udm.network.ip_protocol Il valore deriva dal campo proto nel log non elaborato e viene mappato al nome del protocollo IP corrispondente.
read_only_udm.principal.resource.attribute.labels.workstation_type.key Il valore è impostato su Workstation ID/Type.
read_only_udm.principal.resource.attribute.labels.prev_user.key Il valore è impostato su Prev User.
read_only_udm.security_result.action Il valore è impostato su BLOCK se nel log non elaborato sono presenti i campi ERRMSG o LOGINERROR.

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