GitHub-Audit-Logs erfassen
Übersicht
Dieser Parser verarbeitet GitHub-Audit-Logs im JSON-Format. Dabei werden zahlreiche Felder entfernt, um die Eingabe zu bereinigen. Außerdem werden mehrere Grok- und Schlüssel/Wert-Vorgänge basierend auf dem Feld process_type ausgeführt, um relevante Informationen zu extrahieren. Die extrahierten Felder werden dem UDM zugeordnet und die Ausgabe für die Aufnahme in Google SecOps strukturiert. Außerdem werden bestimmte Grenzfälle berücksichtigt und Datentransformationen für verschiedene Protokolluntertypen in den GitHub-Audit-Logs durchgeführt.
Hinweise
- Sie benötigen eine Google SecOps-Instanz.
- Sie benötigen Lese- und Schreibzugriff auf GitHub-Repositories.
Feed in Google SecOps für die Aufnahme der GitHub-Protokolle konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Feeds.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. GitHub-Protokolle.
- Wählen Sie als Quelltyp Webhook aus.
- Wählen Sie GitHub als Logtyp aus.
- Klicken Sie auf Weiter.
- Optional: Geben Sie Werte für die folgenden Eingabeparameter an:
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
\n
. - Asset-Namespace: der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet wird.
- Trennzeichen für die Aufteilung: Das Trennzeichen, mit dem Logzeilen getrennt werden, z. B.
- Klicken Sie auf Weiter.
- Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
- Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
- Kopieren und speichern Sie den geheimen Schlüssel. Sie können sich diesen geheimen Schlüssel nicht noch einmal ansehen. Bei Bedarf können Sie einen neuen Secret-Schlüssel generieren. Dadurch wird der vorherige Secret-Schlüssel jedoch ungültig.
- Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
- Klicken Sie auf Fertig.
API-Schlüssel für den Webhook-Feed erstellen
Rufen Sie die Google Cloud Console > Anmeldedaten auf.
Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.
Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.
Endpunkt-URL angeben
- Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
Aktiviere die Authentifizierung, indem du den API-Schlüssel und den geheimen Schlüssel als Teil der benutzerdefinierten Kopfzeile im folgenden Format angibst:
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
Empfehlung: Geben Sie den API-Schlüssel als Header an, anstatt ihn in der URL anzugeben. Wenn Ihr Webhook-Client keine benutzerdefinierten Header unterstützt, können Sie den API-Schlüssel und den geheimen Schlüssel mithilfe von Suchparametern im folgenden Format angeben:
ENDPOINT_URL?key=API_KEY&secret=SECRET
Ersetzen Sie Folgendes:
ENDPOINT_URL
: die URL des Feedendpunkts.API_KEY
: Der API-Schlüssel, mit dem Sie sich bei Google Security Operations authentifizieren.SECRET
: der geheime Schlüssel, den Sie zur Authentifizierung des Feeds generiert haben.
Webhook auf GitHub erstellen
In dieser Anleitung wird Schritt für Schritt beschrieben, wie Sie einen Webhook auf GitHub erstellen, um Daten an Google SecOps zu senden.
- Rufen Sie Ihr GitHub-Repository auf.
- Gehen Sie zu Einstellungen.
- Klicken Sie auf Webhooks.
- Klicken Sie auf Add webhook (Webhook hinzufügen).
- Geben Sie in das Feld Nutzlast-URL die Endpunkt-URL der Google SecOps API ein.
Wählen Sie als Inhaltstyp application/json aus.
Optional: Für erhöhte Sicherheit können Sie ein Secret festlegen. Dadurch wird eine Signatur für Webhook-Nutzlast generiert, mit der Sie ihre Echtheit auf der Google SecOps-Seite überprüfen können. Wenn Sie ein Secret verwenden, konfigurieren Sie es auch in Ihrem Google SecOps-Feed.
Wählen Sie die Ereignisse aus, die den Webhook auslösen sollen. Wenn Sie eine umfassende Protokollierung wünschen, wählen Sie Einzelne Ereignisse auswählen aus und klicken Sie auf die entsprechenden Ereignisse (z. B. Push, Pull-Request, Problem). Wenn Sie sich nicht sicher sind, beginnen Sie mit Nur das Ereignis
push
.Das Kästchen Aktiv muss angeklickt sein.
Klicken Sie auf Webhook hinzufügen, um die Konfiguration zu speichern.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
_document_id |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der Wert _document_id aus dem Rohprotokoll wird einem Schlüssel/Wert-Paar im additional.fields -Array im UDM zugeordnet. |
action |
read_only_udm.metadata.product_event_type , read_only_udm.security_result.summary |
Das Feld action wird in den Metadaten product_event_type und in der security_result summary zugeordnet. |
actor |
read_only_udm.principal.user.userid |
Das Feld actor , das den Nutzer darstellt, der die Aktion ausführt, wird principal.user.userid zugeordnet. |
actor_id |
read_only_udm.principal.user.attribute.labels.[].key , read_only_udm.principal.user.attribute.labels.[].value |
actor_id wird als Label im Array principal.user.attribute.labels zugeordnet. |
actor_ip |
read_only_udm.principal.ip |
Die IP-Adresse des Akteurs ist principal.ip zugeordnet. |
actor_location.country_code |
read_only_udm.principal.location.country_or_region |
Der Ländercode des Rechtssubjekts ist principal.location.country_or_region . |
application_name |
read_only_udm.target.application |
Der Anwendungsname ist target.application zugeordnet. |
business |
read_only_udm.target.user.company_name , read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der Name des Unternehmens wird target.user.company_name zugeordnet und als Schlüssel/Wert-Paar in additional.fields angegeben. |
business_id |
read_only_udm.target.resource.attribute.labels.[].key , read_only_udm.target.resource.attribute.labels.[].value |
Die Unternehmens-ID wird im Array target.resource.attribute.labels als Label zugeordnet. |
config.url |
read_only_udm.target.url |
Die Konfigurations-URL ist target.url zugeordnet. |
created_at |
read_only_udm.metadata.event_timestamp |
Der created_at -Zeitstempel wird in das richtige Format konvertiert und metadata.event_timestamp zugeordnet. |
data.cancelled_at |
read_only_udm.extensions.vulns.vulnerabilities.scan_end_time |
Der Zeitstempel data.cancelled_at wird konvertiert und extensions.vulns.vulnerabilities.scan_end_time zugeordnet. |
data.email |
read_only_udm.target.email |
Die E-Mail-Adresse aus dem Datenfeld wird target.email zugeordnet. |
data.event |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Das Ereignis aus dem Datenfeld wird im Array security_result.about.labels als Label zugeordnet. |
data.events |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Ereignisse aus dem Datenfeld werden als Labels im security_result.about.labels -Array zugeordnet. |
data.head_branch |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Der Head-Zweig aus dem Datenfeld wird als Label im security_result.about.labels -Array zugeordnet. |
data.head_sha |
read_only_udm.target.file.sha256 |
Die Kopf-SHA aus dem Datenfeld wird target.file.sha256 zugeordnet. |
data.hook_id |
read_only_udm.target.resource.attribute.labels.[].key , read_only_udm.target.resource.attribute.labels.[].value |
Die Hook-ID aus dem Datenfeld wird als Label im Array target.resource.attribute.labels zugeordnet. |
data.started_at |
read_only_udm.extensions.vulns.vulnerabilities.scan_start_time |
Der Zeitstempel data.started_at wird konvertiert und extensions.vulns.vulnerabilities.scan_start_time zugeordnet. |
data.team |
read_only_udm.target.user.group_identifiers |
Das Team aus dem Datenfeld wird target.user.group_identifiers zugeordnet. |
data.trigger_id |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Die Trigger-ID aus dem Datenfeld wird als Label im security_result.about.labels -Array zugeordnet. |
data.workflow_id |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Die Workflow-ID aus dem Datenfeld wird als Label im security_result.about.labels -Array zugeordnet. |
data.workflow_run_id |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Die ID der Workflowausführung aus dem Datenfeld wird als Label im security_result.about.labels -Array zugeordnet. |
enterprise.name |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der Name des Unternehmens wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
external_identity_nameid |
read_only_udm.target.user.userid , read_only_udm.target.user.email_addresses |
Wenn external_identity_nameid eine E-Mail-Adresse ist, wird der Teil mit dem Nutzernamen extrahiert und target.user.userid zugeordnet. Die vollständige E-Mail-Adresse wird target.user.email_addresses hinzugefügt. Andernfalls wird der gesamte Wert target.user.userid zugeordnet. |
external_identity_username |
read_only_udm.target.user.user_display_name |
Der Nutzername der externen Identität wird target.user.user_display_name zugeordnet. |
hashed_token |
read_only_udm.network.session_id |
Das gehashte Token ist network.session_id zugeordnet. |
org |
read_only_udm.target.administrative_domain |
Die Organisation ist target.administrative_domain zugeordnet. |
org_id |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die Organisations-ID wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
programmatic_access_type |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der programmatische Zugriffstyp wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
public_repo |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value , read_only_udm.target.location.name |
Der Wert public_repo bestimmt den Wert, der einem Schlüssel/Wert-Paar in additional.fields und target.location.name zugeordnet ist. „false“ wird „PRIVATE“ zugeordnet und andere Werte „PUBLIC“. |
query_string |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der Abfragestring wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
rate_limit_remaining |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die verbleibende Ratenbeschränkung wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
repo |
read_only_udm.target.resource.name |
Das Repository ist target.resource.name zugeordnet. |
repo_id |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die Repository-ID wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
repository_public |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Das Flag „repository public“ wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
request_body |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Der Anfragetext wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
request_method |
read_only_udm.network.http.method |
Die Anfragemethode wird in Großbuchstaben umgewandelt und network.http.method zugeordnet. |
route |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die Route wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
status_code |
read_only_udm.network.http.response_code |
Der Statuscode wird in eine Ganzzahl konvertiert und network.http.response_code zugeordnet. |
token_id |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die Token-ID wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
token_scopes |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Die Tokenbereiche werden in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
transport_protocol_name |
read_only_udm.network.application_protocol |
Der Name des Transportprotokolls wird in Großbuchstaben umgewandelt und network.application_protocol zugeordnet. |
url_path |
read_only_udm.target.url |
Der URL-Pfad ist target.url zugeordnet. |
user |
read_only_udm.target.user.user_display_name |
Der Nutzer ist target.user.user_display_name zugeordnet. |
user_agent |
read_only_udm.network.http.user_agent , read_only_udm.network.http.parsed_user_agent |
Der User-Agent ist network.http.user_agent zugeordnet und seine geparste Version network.http.parsed_user_agent . |
user_id |
read_only_udm.target.user.userid |
Die Nutzer-ID ist mit target.user.userid verknüpft. |
workflow.name |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Der Name des Workflows wird als Label im security_result.about.labels -Array zugeordnet. |
workflow_run.event |
read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Das Ereignis „Workflowausführung“ wird in additional.fields als Schlüssel/Wert-Paar zugeordnet. |
workflow_run.head_branch |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Der Hauptzweig der Workflowausführung wird als Label im security_result.about.labels -Array zugeordnet. |
workflow_run.head_sha |
read_only_udm.target.file.sha256 |
Die SHA-256-Signatur der Kopfzeile der Workflowausführung ist target.file.sha256 zugeordnet. |
workflow_run.id |
read_only_udm.target.resource.attribute.labels.[].key , read_only_udm.target.resource.attribute.labels.[].value |
Die ID der Workflowausführung wird als Label im target.resource.attribute.labels -Array zugeordnet. |
workflow_run.workflow_id |
read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Die Workflow-ID der Workflowausführung wird als Label im security_result.about.labels -Array zugeordnet. |
(Parser Logic) | read_only_udm.metadata.event_type |
Der Ereignistyp wird vom Parser anhand der Anwesenheit und der Werte anderer Felder wie data.team , action und actor bestimmt. Der Standardwert ist USER_RESOURCE_ACCESS , wenn keine andere spezifische Bedingung erfüllt ist. |
(Parser Logic) | read_only_udm.metadata.log_type |
Der Log-Typ ist auf „GITHUB“ hartcodiert. |
(Parser Logic) | read_only_udm.metadata.product_name |
Der Produktname ist auf „GITHUB“ hartcodiert. |
(Parser Logic) | read_only_udm.metadata.vendor_name |
Der Name des Anbieters ist auf „GITHUB“ hartcodiert. |
(Parser Logic) | read_only_udm.target.resource.resource_type |
Der Ressourcentyp wird auf STORAGE_OBJECT gesetzt, wenn das Feld repo vorhanden ist. |
(Parser Logic) | read_only_udm.target.resource.type |
Der Ressourcentyp wird aus dem Feld action abgeleitet. |
(Parser Logic) | read_only_udm.security_result.action |
Die Sicherheitsaktion (ALLOW/BLOCK) wird aus den Feldern at oder raw.at abgeleitet, sofern sie vorhanden sind und „success“ entsprechen oder nicht. |
(Parser Logic) | read_only_udm.security_result.severity |
Der Sicherheitsgrad wird aus den Feldern level oder SeverityText abgeleitet, sofern vorhanden. „INFO“ wird „INFORMATIONSWEISEND“ zugeordnet, „WARN“ „MITTEL“ und andere Werte werden direkt zugeordnet. Für git-daemon -Protokolle wird „fatal“ dem Wert „CRITICAL“ zugeordnet. |
(Parser Logic) | read_only_udm.network.application_protocol |
Das Anwendungsprotokoll wird aus den Feldern protocol , proto , babeld_proto , transport_protocol_name oder raw.protocol abgeleitet. Die Werte werden in Großbuchstaben umgewandelt und auf „HTTP“, „HTTPS“ und „SSH“ geprüft. |
(Parser Logic) | read_only_udm.network.application_protocol_version |
Die Version des Anwendungsprotokolls wird aus dem Feld http_version abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.network.http.parsed_user_agent |
Der geparste User-Agent wird aus den Feldern user_agent , column5 , http_ua oder content abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.network.received_bytes |
Die empfangenen Bytes werden aus den Feldern column3 , read_bytes , fs_recv oder uploaded_bytes abgeleitet, sofern vorhanden, und in eine unge signed integer umgewandelt. |
(Parser Logic) | read_only_udm.network.received_packets |
Die empfangenen Pakete werden aus dem Feld client_recv abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.network.response_code |
Der Antwortcode wird aus den Feldern column2 , status , status_code oder http_status abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.network.sent_bytes |
Die gesendeten Bytes werden aus dem Feld client_sent abgeleitet, sofern vorhanden, und in eine vorzeichenlose Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.network.sent_packets |
Die gesendeten Pakete werden aus dem Feld fs_sent abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.network.session_duration.seconds |
Die Sitzungsdauer in Sekunden wird aus dem Feld time_duration abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.target.file.full_path |
Der vollständige Pfad der Zieldatei wird aus den Feldern path , git_dir oder dir abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.file.sha1 |
Die SHA1-Summe der Zieldatei wird aus dem Feld sha abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.hostname |
Der Ziel-Hostname wird aus dem Feld client_hostname abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.ip |
Die Ziel-IP wird aus den Feldern x_real_ip , remote_address , client_ip oder remote_addr abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.location.name |
Der Name des Zielstandorts wird aus den Feldern datacenter oder public_repo abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.port |
Der Zielport wird aus den Feldern client_port , dstp oder remote_port abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.target.process.command_line |
Die Befehlszeile des Zielprozesses wird aus den Feldern command , ssh_cmd , cmdline oder cmd abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.process.parent_process.pid |
Die übergeordnete Prozess-ID des Zielprozesses wird aus dem Feld ppid abgeleitet, sofern vorhanden, und in einen String umgewandelt. |
(Parser Logic) | read_only_udm.target.process.pid |
Die Zielprozess-ID wird aus dem Feld pid abgeleitet, falls vorhanden, und in einen String umgewandelt. |
(Parser Logic) | read_only_udm.target.url |
Die Ziel-URL wird aus den Feldern url , http_url , request_url , http_request , dest_url , config.url oder url_path abgeleitet, sofern vorhanden. Sie kann auch aus path_info und query_string erstellt werden. |
(Parser Logic) | read_only_udm.target.user.attribute.roles.[].name |
Die Rollen der Zielnutzer werden aus den Feldern actor_type oder user_type abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.user.email_addresses |
Die E-Mail-Adressen der Zielnutzer werden aus dem Feld external_identity_nameid abgeleitet, sofern es sich um eine E-Mail-Adresse handelt. |
(Parser Logic) | read_only_udm.target.user.group_identifiers |
Die IDs der Zielnutzergruppe werden aus dem Feld data.team abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.user.userid |
Die Zielnutzer-ID wird aus den Feldern userid , external_identity_nameid , current_user , member , user_id , actor_id oder raw.user_id abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.target.user.user_display_name |
Der Anzeigename des Zielnutzers wird aus den Feldern login , user , external_identity_username , user_login oder raw.login abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.asset.asset_id |
Die Haupt-Asset-ID wird aus dem Feld guid abgeleitet und hat das Präfix „GUID:“. |
(Parser Logic) | read_only_udm.principal.hostname |
Der Haupt-Hostname wird aus den Feldern hostname , request_host , host oder principal_hostname abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.ip |
Die Haupt-IP-Adresse wird aus den Feldern column6 , ip , x_real_ip , remote_address , raw.ip , actor_ip oder log:source:ip abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.location.country_or_region |
Das Land oder die Region des Hauptstandorts wird aus dem Feld actor_location.country_code abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.port |
Der Hauptport wird aus den Feldern srcp oder log:source:port abgeleitet, sofern vorhanden, und in eine Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.principal.resource.name |
Der Name der Hauptressource wird aus dem Feld service.name abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.resource.product_object_id |
Die ID des Hauptproduktobjekts der Ressource wird aus den Feldern service.instance.id oder subject_id abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.url |
Die Haupt-URL wird aus dem Feld repo abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.principal.user.userid |
Die Hauptnutzer-ID wird aus dem Feld repository_owner_id abgeleitet, falls vorhanden, und in einen String umgewandelt. |
(Parser Logic) | read_only_udm.principal.user.user_display_name |
Der Anzeigename des Hauptnutzers wird aus dem Feld repo_name abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.intermediary.hostname |
Der Hostname des Intermediärs wird aus dem Feld hostname abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.intermediary.ip |
Die Zwischen-IP wird aus den Feldern x_forwarded_for oder xff_ip abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.metadata.description |
Die Metadatenbeschreibung wird aus den Feldern content , at oder raw.message abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.metadata.product_event_type |
Der Produktereignistyp wird aus den Feldern process_type oder action abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.metadata.product_log_id |
Die Produkt-Log-ID wird aus den Feldern github_request_id , id , request_id oder raw.request_id abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.metadata.product_version |
Die Produktversion wird aus dem Feld version abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.security_result.about.labels.[].key , read_only_udm.security_result.about.labels.[].value |
Dem Array security_result.about.labels werden verschiedene Labels hinzugefügt, je nachdem, ob und welche Werte in Feldern wie data.events , data.workflow_id , workflow.name , data.head_branch , data.trigger_id , data.workflow_run_id und data.event vorhanden sind. |
(Parser Logic) | read_only_udm.security_result.description |
Die Beschreibung des Sicherheitsergebnisses wird aus den Feldern auth_status , data_msg , msg , Body , desc oder content abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.security_result.severity_details |
Die Details zum Schweregrad des Sicherheitsergebnisses werden aus dem Feld userid abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.security_result.summary |
Die Zusammenfassung der Sicherheitsergebnisse wird aus den Feldern creason , action oder reason abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.network.http.referral_url |
Die HTTP-Weiterleitungs-URL wird aus den Feldern column4 oder referer abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.network.http.user_agent |
Der HTTP-User-Agent wird aus den Feldern column5 , http_ua oder user_agent abgeleitet, sofern vorhanden. |
(Parser Logic) | read_only_udm.network.sent_bytes |
Die vom Netzwerk gesendeten Bytes werden aus den Feldern client_sent oder fs_sent abgeleitet, sofern vorhanden, und in eine vorzeichenlose Ganzzahl umgewandelt. |
(Parser Logic) | read_only_udm.additional.fields.[].key , read_only_udm.additional.fields.[].value.string_value |
Viele Felder werden im additional.fields -Array bedingt als Schlüssel/Wert-Paare zugeordnet, darunter auth_fingerprint , controller , oauth_access_id , oauth_application_id , oauth_scopes , route , worker_request_count , repo , repo_visibility , auth , content_length , elapsed , catalog_service , action , method , failure_type , failure_reason , hashed_token , token_type , gitauth_version , enterprise.name , programmatic_access_type , token_id , token_scopes , integration , query_string , rate_limit_remaining , request_body , org_id , repo_id , repository_public , raw.method , raw.failure_type , raw.failure_reason , raw.from , raw.raw_login , device_cookie , operation , operation_type , category_type , business , note , read , pre_perform_allocation_count , backend , queue , class , success , env , job_id und job . Die spezifische Logik für jedes Feld wird im Parsercode beschrieben. |
(Parser Logic) | read_only_udm.security_result.detection_fields.[].key , read_only_udm.security_result.detection_fields.[].value |
Die Felder controller_action , two_factor , delay_time , queued_time , delivery_build , delivery_send und stages werden bedingt dem Array security_result.detection_fields zugeordnet. |
(Parser Logic) | read_only_udm.target.resource.attribute.labels.[].key , read_only_udm.target.resource.attribute.labels.[].value |
Die Felder hook_id , job_name , job_workflow_ref , runner_group_id , runner_group_name , runner_name , runner_id , workflow_run_id und business_id werden bedingt als Labels im target.resource.attribute.labels -Array zugeordnet. |
(Parser Logic) | read_only_udm.metadata.event_timestamp |
Wenn der Zeitstempel nicht direkt in einem unterstützten Format verfügbar ist, versucht der Parser, ihn aus verschiedenen Feldern zu extrahieren und zu konvertieren, darunter ts , now , created_at , Timestamp , time und raw.now . |
(Parser Logic) | read_only_udm.network.http.method |
Die HTTP-Methode wird aus den Feldern method , column1 , request_method , http_method oder raw.method abgeleitet und in Großbuchstaben umgewandelt. |
(Parser Logic) | read_only_udm.target.application |
Die Zielanwendung wird aus den Feldern process , program oder app abgeleitet, sofern vorhanden. |
Änderungen
2023-12-18
- Fehlerkorrektur:
- Wenn „process_type“ „github_production“ ist, wurde ein Grok-Muster hinzugefügt, um „kv_data“ zu extrahieren.
- Wenn „process_type“ „github_production“ ist, wird „user“ mit „target.user.user_display_name“ abgeglichen.
- Wenn „process_type“ „github_production“ ist, wird „user_id“ mit „target.user.userid“ abgeglichen.
- „referrer“ wurde zu „network.http.referral_url“ zugeordnet.
- „user_session_id“ wurde „network.session_id“ zugeordnet.
- „ip“ wurde auf „principal.ip“ zugeordnet.
- „from“ wurde „additional.fields“ zugeordnet.
- „request_category“ wurde in „additional.fields“ geändert.
- „device_cookie“ wurde „additional.fields“ zugeordnet.
- „operation_type“ wurde in „additional.fields“ geändert.
- „category_type“ wurde auf „additional.fields“ zugeordnet.
- „note“ wurde „additional.fields“ zugeordnet.
- „read“ wurde „additional.fields“ zugeordnet.
- „pre_perform_allocation_count“ wurde auf „additional.fields“ zugeordnet.
- „backend“ wurde „additional.fields“ zugeordnet.
- „queue“ wurde „additional.fields“ zugeordnet.
- „class“ wurde „additional.fields“ zugeordnet.
- „success“ wurde „additional.fields“ zugeordnet.
- „controller_action“ wurde „security_result.detection_fields“ zugeordnet.
- „two_factor“ wurde „security_result.detection_fields“ zugeordnet.
2023-10-25
- Wenn „public_repo“ auf „false“ gesetzt ist, legen Sie „target.location.name“ auf „PRIVATE“ fest, andernfalls auf „PUBLIC“.
2023-10-11
- „user_agent“ wurde „network.http.user_agent“ und „network.http.parsed_user_agent“ zugeordnet.
- „request_method“ wurde in „network.http.method“ geändert.
- „application_name“ wurde „target.application“ zugeordnet.
- „status_code“ wurde in „network.http.response_code“ geändert.
- „url_path“ wurde „target.url“ zugeordnet.
- „user_id“ wurde „target.userid“ zugeordnet.
- „transport_protocol_name“ wurde in „network.application_protocol“ umgewandelt.
- „raw.now“ wurde „metadata.event_timestamp“ zugeordnet.
- „raw.ip“ wurde auf „principal.ip“ zugeordnet.
- „raw.request_id“ wurde in „metadata.product_log_id“ umgewandelt.
- „raw.repo“ wurde „target.url“ zugeordnet.
- „raw.action“ wurde „security_result.summary“ zugeordnet.
- „raw.protocol“ wurde in „network.application_protocol“ geändert.
- „raw.message“ wurde in „metadata.description“ umgewandelt.
- „raw.at“ wurde „security_result.action“ zugeordnet.
- „raw.login“ wurde „target.user_display_name“ zugeordnet.
- „raw.user_id“ wurde „target.userid“ zugeordnet.
- „raw.failure_reason“, „raw.failure_type“, „raw.raw_login“ und „raw.from“ wurden in „additional.fields“ zugeordnet.
- „programmatic_access_type“, „actor_id“, „token_id“, „token_scopes“, „integration“, „query_string“, „rate_limit_remaining“, „request_body“, „route“, „business“, „org_id“, „repo_id“, „public_repo“, „_document_id“, „operation_type“ und „repository_public“ wurden in „additional.fields“ umgewandelt.
2023-07-31
- Fehlerkorrektur:
- „on_error“ wurde zu Grok-Mustern hinzugefügt.
- „workflow_run.id“ wurde auf „target.resource.attribute.labels“ zugeordnet.
- „workflow_run.event“ wurde „additional.fields“ zugeordnet.
- „workflow_run.actor.login“ wurde auf „principal.user.userid“ zugeordnet.
- „workflow_run.head_branch“ wurde in „security_result.about.labels“ geändert.
- „workflow_run.head_sha“ wurde in „target.file.sha256“ umgewandelt.
- „enterprise.name“ wurde „additional.fields“ zugeordnet.
- „workflow.name“ wurde in „security_result.about.labels“ geändert.
- „workflow_run.workflow_id“ wurde auf „security_result.about.labels“ zugeordnet.
2023-06-22
- Unterstützung für die syslog-Protokollformate „github_auth“, „haproxy“, „github_access“, „github_unicorn“, „github_production“, „hookshot-go“, „babeld“, „github_gitauth“, „babeld2hydro“, „authzd“, „gitrpcd“, „agent“, „git-daemon“, „github_resqued“, „sudo“, „systemd“ und „github_audit“ hinzugefügt.
2023-06-09
- Enhancement-
- „external_identity_nameid“ wurde in das Format „target.user.email_addresses“ umgewandelt, wenn es sich um eine E-Mail-Adresse handelt.
- Rufe den Nutzernamen aus „external_identity_nameid“ ab und ordne ihn „target.user.userid“ zu.
2023-01-13
- Enhancement-
- „actor_ip“ wurde in „principal.ip“ geändert.
- „hashed_token“ wurde „network.session_id“ zugeordnet.
- „external_identity_nameid“ wurde „target.user.userid“ zugeordnet
- „external_identity_username“ wurde auf „target.user.user_display_name“ zugeordnet.
2022-11-28
- Verbesserung: „config.url“ wurde auf „target.url“ umgestellt.
2022-07-07
- Verbesserung: Die neu aufgenommenen Logs im JSON-Format mit den Aktionen „git.clone“, „git.push“ und „workflows.prepared_workflow_job“ wurden verarbeitet und analysiert.
- „job_name“ ist „target.resource.attribute.labels“ zugeordnet.
- „job_workflow_ref“ ist „target.resource.attribute.labels“ zugeordnet.
- „runner_group_id“ ist „target.resource.attribute.labels“ zugeordnet.
- „runner_group_name“ ist „target.resource.attribute.labels“ zugeordnet.
- „runner_name“ ist „target.resource.attribute.labels“ zugeordnet.
- „runner_id“ ist „target.resource.attribute.labels“ zugeordnet.
- „workflow_run_id“ ist „target.resource.attribute.labels“ zugeordnet.
- „actor_location.country_code“ wird auf „principal.location.country_or_region“ zugeordnet.