Epic Systems-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie Epic Systems-Logs mithilfe eines Bindplane-Agents für Google Security Operations erfassen. Der Parser wandelt Rohprotokolle des Epic-EMR-/EHR-Systems in ein einheitliches Datenmodell (UDM) um. Zuerst werden die Protokollmeldungen bereinigt und strukturiert, Schlüssel/Wert-Paare extrahiert und die extrahierten Felder den entsprechenden UDM-Feldern zugeordnet. Dabei werden verschiedene Protokollformate und Dateninkonsistenzen verarbeitet, um eine umfassende und standardisierte Datendarstellung zu ermöglichen.
Hinweise
- Sie benötigen eine Google Security Operations-Instanz.
- Sie müssen Windows 2016 oder höher oder einen Linux-Host mit
systemd
verwenden. - Wenn die Ausführung hinter einem Proxy erfolgt, müssen die Firewallports geöffnet sein.
- Sie benötigen Lese- und Schreibzugriff auf Epic Systems.
Authentifizierungsdatei für die Aufnahme in Google SecOps abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Erfassungsagenten.
- Lade die Datei zur Authentifizierung der Datenaufnahme herunter. Speichern Sie die Datei sicher auf dem System, auf dem BindPlane installiert wird.
Google SecOps-Kundennummer abrufen
- Melden Sie sich in der Google SecOps Console an.
- Gehen Sie zu SIEM-Einstellungen > Profil.
- Kopieren und speichern Sie die Kundennummer aus dem Bereich Organisationsdetails.
Bindplane-Agent installieren
Windows-Installation
- Öffnen Sie die Eingabeaufforderung oder die PowerShell als Administrator.
Führen Sie dazu diesen Befehl aus:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux-Installation
- Öffnen Sie ein Terminal mit Root- oder Sudo-Berechtigungen.
Führen Sie dazu diesen Befehl aus:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Weitere Installationsressourcen
- Weitere Installationsoptionen finden Sie in diesem Installationsleitfaden.
Bindplane-Agent so konfigurieren, dass er Syslog-Daten aufnimmt und an Google SecOps sendet
Rufen Sie die Konfigurationsdatei auf:
- Suchen Sie die Datei
config.yaml
. Normalerweise befindet es sich unter Linux im Verzeichnis/etc/bindplane-agent/
oder unter Windows im Installationsverzeichnis. - Öffnen Sie die Datei mit einem Texteditor, z. B.
nano
,vi
oder Notepad.
- Suchen Sie die Datei
Bearbeiten Sie die Datei
config.yaml
so: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
Ersetzen Sie den Port und die IP-Adresse nach Bedarf in Ihrer Infrastruktur.
Ersetzen Sie
<customer_id>
durch die tatsächliche Kundennummer.Aktualisieren Sie
/path/to/ingestion-authentication-file.json
im Abschnitt Authentifizierungsdatei für die Datenaufnahme von Google SecOps abrufen auf den Pfad, unter dem die Authentifizierungsdatei gespeichert wurde.
Starten Sie den Bindplane-Agent neu, um die Änderungen anzuwenden
Führen Sie den folgenden Befehl aus, um den Bindplane-Agenten unter Linux neu zu starten:
sudo systemctl restart bindplane-agent
Sie können den Bindplane-Agenten unter Windows entweder über die Dienste-Konsole oder mit dem folgenden Befehl neu starten:
net stop BindPlaneAgent && net start BindPlaneAgent
SendSIEMSyslogAudit-Dienst konfigurieren
- Melden Sie sich in der Epic Systems-Konsole an.
- Gehen Sie zu Start > Epic > Interconnect >
<your instance>
> Konfigurationseditor. - Wählen Sie das Formular Geschäftsdienste aus.
- Wählen Sie auf dem Tab Dienstkategorie die Option SendSIEMSyslogAudit aus.
- Klicken Sie auf Speichern.
Epic Systems für den Syslog-Export konfigurieren
- Gehen Sie zu Epic-Systemdefinitionen > Sicherheit > Prüfoptionen > SIEM-Syslog-Einstellungen.
- Geben Sie die folgenden Konfigurationsdetails an:
- Host: Geben Sie die IP-Adresse des BindPlane-Agents ein.
- Port: Geben Sie die Portnummer des Bindplane-Agents ein.
- SIEM-Format: Wählen Sie CEF (Common Event Format) aus.
- Syslog-Endzeichen: Wählen Sie Neue Zeile „\n“ aus.
- Wählen Sie im Menü SIEM syslog-Einstellungen die Option SIEM syslog aus.
- Klicken Sie auf Aktiviert.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
APIID | read_only_udm.additional.fields.api.value.string_value | Der Wert wird aus dem Feld „APIID“ im Rohprotokoll übernommen. |
APPLICATIONID | read_only_udm.additional.fields.application_id.value.string_value | Der Wert wird aus dem Feld „APPLICATIONID“ im Rohprotokoll übernommen. |
APP | read_only_udm.target.application | Der Wert wird aus dem APP-Feld im Rohprotokoll übernommen. |
ÜBUNG AUDITIRIEREN | read_only_udm.network.session_id | Der Wert wird aus dem Feld „AUDIT SESSION“ im Rohprotokoll übernommen. |
AUTH_SOURCE | Dieses Feld ist nicht dem UDM zugeordnet | |
BCAPCS | read_only_udm.target.application | Der Wert wird aus dem Feld „BCAPCS“ im Rohprotokoll übernommen. |
BTGEXPLANATION | read_only_udm.security_result.description | Der Wert wird aus dem Feld „BTGEXPLANATION“ im Rohprotokoll übernommen. |
BTGNOACCESSREAS | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „BTGNOACCESSREAS“ im Rohprotokoll übernommen. |
BTGREASON | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „BTGREASON“ im Rohprotokoll übernommen. |
CLIENTNAME | read_only_udm.principal.hostname | Der Wert wird aus dem Feld „CLIENTNAME“ im Rohprotokoll übernommen. |
CSISESS_TOKEN | read_only_udm.network.session_id | Der Wert wird aus dem Feld „CSISESS_TOKEN“ im Rohprotokoll übernommen. |
CTXT | read_only_udm.metadata.description | Der Wert wird aus dem Feld „CTXT“ im Rohprotokoll übernommen. |
CVG | read_only_udm.additional.fields.cvg.value.string_value | Der Wert wird aus dem CVG-Feld im Rohprotokoll übernommen. |
DAT | Dieses Feld ist nicht dem UDM zugeordnet | |
DEP | read_only_udm.principal.user.department | Der Wert wird aus dem DEP-Feld im Rohprotokoll übernommen. Wenn sowohl das Feld „NEWDEPARTMENT“ als auch das Feld „PREVDEPARTMENT“ im Rohprotokoll vorhanden sind, wird der Wert PREVDEPARTMENT:-{PREVDEPARTMENT}, NEWDEPARTMENT:-{NEWDEPARTMENT} zurückgegeben. Wenn nur „NEWDEPARTMENT“ vorhanden ist, ist der Wert PREVDEPARTMENT:-NONE, NEWDEPARTMENT:{NEWDEPARTMENT} . Wenn nur PREVDEPARTMENT vorhanden ist, ist der Wert PREVDEPARTMENT:{PREVDEPARTMENT}, NEWDEPARTMENT:-NONE . |
devTime | read_only_udm.metadata.event_timestamp | Der Wert wird aus dem Feld „devTime“ im Rohprotokoll übernommen und in Sekunden seit der Epoche umgewandelt. |
devTimeFormat | Dieses Feld ist nicht dem UDM zugeordnet | |
E3MID | read_only_udm.network.session_id | Der Wert wird aus dem Feld „E3MID“ im Rohprotokoll übernommen. |
VERSCHLÜSSELT | read_only_udm.additional.fields.encrypt.value.string_value | Der Wert wird aus dem Feld „ENCRYPTED“ im Rohprotokoll übernommen. |
ERRMSG | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „ERRMSG“ im Rohprotokoll übernommen. |
eventCnt | Dieses Feld ist nicht dem UDM zugeordnet | |
FILENAME | read_only_udm.target.file.full_path | Der Wert wird aus dem Feld „FILENAME“ im Rohprotokoll übernommen und alle Vorkommen von \\\\ werden durch \ ersetzt. |
Flag | read_only_udm.security_result.description | Der Wert wird aus dem Flag-Feld im Rohprotokoll übernommen und alle vorangehenden und nachgestellten - werden entfernt. |
HKUAPVER | read_only_udm.metadata.product_version | Der Wert wird aus dem Feld „HKUAPVER“ im Rohprotokoll übernommen. |
HKUDVCID | read_only_udm.principal.asset_id | Der Wert wird aus dem Feld „HKUDVCID“ im Rohprotokoll übernommen und als Device ID:{HKUDVCID} formatiert. |
HKUOSNAM | read_only_udm.principal.platform | Der Wert wird aus dem Feld „HKUOSNAM“ im Rohprotokoll übernommen und je nach Wert WINDOWS , MAC , LINUX oder UNKNOWN_PLATFORM zugeordnet. |
HKUOSVER | read_only_udm.principal.platform_version | Der Wert wird aus dem Feld „HKUOSVER“ im Rohprotokoll übernommen. |
INSTANCEURN | read_only_udm.intermediary.hostname | Der Wert wird aus dem Feld „INSTANCEURN“ im Rohprotokoll übernommen. |
IP-Adresse | read_only_udm.target.ip | Der Wert wird aus dem IP-Feld im Rohprotokoll übernommen. Wenn der Wert / enthält, wird er in zwei IP-Adressen aufgeteilt. Wenn der Wert , enthält, wird er in mehrere IP-Adressen aufgeteilt. |
LOGINERROR | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „LOGINERROR“ im Rohprotokoll übernommen. |
LOGIN_CONTEXT | read_only_udm.metadata.description | Der Wert wird aus dem Feld „LOGIN_CONTEXT“ im Rohprotokoll übernommen. |
LOGIN_DEVICE | read_only_udm.additional.fields.login_device.value.string_value | Der Wert wird aus dem Feld „LOGIN_DEVICE“ im Rohprotokoll übernommen. |
LOGIN_LDAP_ID | read_only_udm.principal.user.userid | Der Wert wird aus dem Feld „LOGIN_LDAP_ID“ im Rohprotokoll übernommen. |
LOGIN_REASON | read_only_udm.security_result.summary | Der Wert wird aus dem Feld „LOGIN_REASON“ im Rohprotokoll übernommen. |
LOGIN_REVAL | read_only_udm.additional.fields.login_reval.value.string_value | Der Wert wird aus dem Feld „LOGIN_REVAL“ im Rohprotokoll übernommen. |
MASKMODE | read_only_udm.additional.fields.masked_mode.value.string_value | Der Wert wird aus dem Feld „MASKMODE“ im Rohprotokoll übernommen. |
MYCACCT | read_only_udm.principal.user.userid | Der Wert wird aus dem Feld „MYCACCT“ im Rohprotokoll übernommen. |
NEWDEPARTMENT | read_only_udm.principal.user.department | Logik für DEP-Feld ansehen |
NEWUSER | Dieses Feld ist nicht dem UDM zugeordnet | |
NSC | read_only_udm.additional.fields.nsc.value.string_value | Der Wert wird aus dem NSC-Feld im Rohprotokoll übernommen. |
OSUSR | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „OSUSR“ im Rohprotokoll übernommen. |
PATIENT | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „PATIENT“ im Rohprotokoll übernommen. |
PREVDEPARTMENT | read_only_udm.principal.user.department | Logik für DEP-Feld ansehen |
PREVPROVIDER | Dieses Feld ist nicht dem UDM zugeordnet | |
PREVUSER | read_only_udm.principal.resource.attribute.labels.prev_user.value | Der Wert wird aus dem Feld „PREVUSER“ im Rohprotokoll übernommen. |
PWREASON | read_only_udm.metadata.description | Der Wert wird aus dem Feld „PWREASON“ im Rohprotokoll übernommen. |
POSITION | read_only_udm.principal.user.attribute.roles.name | Der Wert wird aus dem Feld „ROLE“ im Rohprotokoll übernommen. |
Ressource | read_only_udm.target.hostname | Der Wert wird aus dem Ressourcenfeld im Rohprotokoll übernommen. |
SERVICEID | read_only_udm.additional.fields.service_id.value.string_value | Der Wert wird aus dem Feld „SERVICEID“ im Rohprotokoll übernommen. |
SERVICECATEGORY | read_only_udm.additional.fields.service_category.value.string_value | Der Wert wird aus dem Feld „SERVICECATEGORY“ im Rohprotokoll übernommen. |
SERVICEMSGID | Dieses Feld ist nicht dem UDM zugeordnet | |
SERVICENAME | read_only_udm.target.resource.name | Der Wert wird aus dem Feld „SERVICENAME“ im Rohprotokoll übernommen. |
SERVICETYPE | read_only_udm.target.resource.type | Der Wert wird aus dem Feld „SERVICETYPE“ im Rohprotokoll übernommen. Wenn „event_id“ den Wert „PHI_CLIENT_FILE “ hat, wird der Wert auf „FILE “ gesetzt. |
SERVICE_USER | read_only_udm.target.user.userid | Der Wert wird aus dem Feld „SERVICE_USER“ im Rohprotokoll übernommen. |
SERVICE_USERTYP | read_only_udm.additional.fields.service_user_type.value.string_value | Der Wert wird aus dem Feld „SERVICE_USERTYP“ im Rohprotokoll übernommen. |
sev | read_only_udm.security_result.severity | Der Wert wird aus dem Feld „sev“ im Rohprotokoll übernommen und je nach Wert LOW , HIGH oder CRITICAL zugeordnet. |
shost | read_only_udm.target.resource.attribute.labels.workstation_type.value | Der Wert wird aus dem Feld „shost“ im Rohprotokoll übernommen. |
Quelle | read_only_udm.additional.fields.login_source.value.string_value | Der Wert wird aus dem Feld „SOURCE“ im Rohprotokoll übernommen. |
ERFOLGREICH | read_only_udm.additional.fields.success_yes_no.value.string_value | Der Wert wird aus dem Feld „SUCCESS“ im Rohprotokoll übernommen. |
Zeitüberschreitung | read_only_udm.additional.fields.time_out.value.string_value | Der Wert wird aus dem TIMEOUT-Feld im Rohprotokoll übernommen. |
UID | read_only_udm.principal.user.userid | Der Wert wird aus dem UID-Feld im Rohprotokoll übernommen. |
USERJOB | Dieses Feld ist nicht dem UDM zugeordnet | |
usrName | read_only_udm.principal.user.userid, read_only_udm.principal.user.user_display_name | Wenn im Rohprotokoll die Felder „UID“ oder „LOGIN_LDAP_ID“ vorhanden sind, wird „usrName“ für „read_only_udm.principal.user.user_display_name“ und das andere Feld für „read_only_udm.principal.user.userid“ verwendet. Andernfalls wird „usrName“ für „read_only_udm.principal.user.userid“ verwendet. |
WEBLGAPP | read_only_udm.target.application | Der Wert wird aus dem Feld „WEBLGAPP“ im Rohprotokoll übernommen. |
read_only_udm.extensions.auth.type | Der Wert wird auf SSO gesetzt, wenn LOGIN_LDAP_ID nicht leer ist. Andernfalls wird der Wert auf AUTHTYPE_UNSPECIFIED gesetzt. |
|
read_only_udm.intermediary.ip | Der Wert wird auf die IP-Adresse der Protokollquelle festgelegt. | |
read_only_udm.metadata.event_type | Der Wert wird auf RESOURCE_READ gesetzt, wenn „event_id“ eine der folgenden IDs ist: IC_SERVICE_AUDIT , AC_BREAK_THE_GLASS_FAILED_ACCESS , AC_BREAK_THE_GLASS_INAPPROPRIATE_ATTEMPT , AC_BREAK_THE_GLASS_ACCESS oder MCMEMEDISA und entweder „target_ip_set“ true ist oder „resource“ nicht leer ist. Der Wert wird auf USER_LOGIN festgelegt, wenn „event_id“ einen der folgenden Werte hat: 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 oder WPSEC_LOGIN_SUCCESS und mindestens eines der folgenden Felder nicht leer ist: „target_ip_set“, „resource“, „SERVICENAME“, „SERVICETYPE“ oder „shost“. Der Wert wird auf USER_CHANGE_PASSWORD gesetzt, wenn „event_id“ einen der folgenden Werte hat: E_ADMINPASSWORDCHANGE , E_FAILEDPASSWORDCHANGE , E_SELFPASSWORDCHANGE , WPSEC_USER_PASSWORD_CHANGE_FAIL oder WPSEC_USER_PASSWORD_CHANGE . Der Wert wird auf USER_UNCATEGORIZED gesetzt, wenn „event_id“ CONTEXTCHANGE ist. Der Wert wird auf USER_RESOURCE_ACCESS gesetzt, wenn „event_id“ einen der folgenden Werte hat: SECURE , UNSECURE , MASKED_DATA_DISPLAY oder MASKED_DATA_PRINTING . Der Wert wird auf USER_RESOURCE_UPDATE_CONTENT gesetzt, wenn „event_id“ PHI_CLIENT_FILE ist. Der Wert wird auf STATUS_UPDATE gesetzt, wenn CLIENTNAME nicht leer ist. Der Wert wird auf USER_UNCATEGORIZED festgelegt, wenn „prin_usr_id“ nicht leer ist. Andernfalls wird der Wert auf GENERIC_EVENT gesetzt. |
|
read_only_udm.metadata.log_type | Der Wert ist auf EPIC festgelegt. |
|
read_only_udm.metadata.product_name | Der Wert ist auf Epic Systems festgelegt. |
|
read_only_udm.metadata.vendor_name | Der Wert ist auf EPIC festgelegt. |
|
read_only_udm.network.ip_protocol | Der Wert wird aus dem Feld „proto“ im Rohprotokoll abgeleitet und dem entsprechenden IP‑Protokollnamen zugeordnet. | |
read_only_udm.principal.resource.attribute.labels.workstation_type.key | Der Wert ist auf Workstation ID/Type festgelegt. |
|
read_only_udm.principal.resource.attribute.labels.prev_user.key | Der Wert ist auf Prev User festgelegt. |
|
read_only_udm.security_result.action | Der Wert wird auf BLOCK gesetzt, wenn im Rohprotokoll entweder das Feld „ERRMSG“ oder „LOGINERROR“ vorhanden ist. |
Änderungen
2024-07-01
Optimierung:
- Die Zuordnung von
metadata.event_timestamp
wurde vondevTime
zutimestamp
geändert, indem das Jahr aus dem FelddevTime
extrahiert wurde. devTime
wurdeadditional.fields
zugeordnet.
2022-10-31
Fehlerkorrektur:
- Unterstützung für mehrere Ereignisse hinzugefügt.
2022-06-09
Fehlerkorrektur:
- Unterstützung für mehrere Ereignisse mit Mittelpunkt
·
hinzugefügt - Bedingte Prüfungen für die Felder
devTime
,usrName
,shost
,sev
undIP
hinzugefügt.
2022-04-14
Fehlerkorrektur:
- Unterstützung für mehrere Ereignisse hinzugefügt.
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten