GitHub-Audit-Logs erfassen

Unterstützt in:

Ü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

  1. Gehen Sie zu SIEM-Einstellungen > Feeds.
  2. Klicken Sie auf Neu hinzufügen.
  3. Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B. GitHub-Protokolle.
  4. Wählen Sie als Quelltyp Webhook aus.
  5. Wählen Sie GitHub als Logtyp aus.
  6. Klicken Sie auf Weiter.
  7. 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.
  8. Klicken Sie auf Weiter.
  9. Überprüfen Sie die Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
  10. Klicken Sie auf Secret-Schlüssel generieren, um einen Secret-Schlüssel zur Authentifizierung dieses Feeds zu generieren.
  11. 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.
  12. Kopieren Sie auf dem Tab Details die Feedendpunkt-URL aus dem Feld Endpunktinformationen. Sie müssen diese Endpunkt-URL in Ihrer Clientanwendung angeben.
  13. Klicken Sie auf Fertig.

API-Schlüssel für den Webhook-Feed erstellen

  1. Rufen Sie die Google Cloud Console > Anmeldedaten auf.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie anschließend API-Schlüssel aus.

  3. Beschränken Sie den API-Schlüsselzugriff auf die Google Security Operations API.

Endpunkt-URL angeben

  1. Geben Sie in Ihrer Clientanwendung die HTTPS-Endpunkt-URL an, die im Webhook-Feed angegeben ist.
  2. 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.

  1. Rufen Sie Ihr GitHub-Repository auf.
  2. Gehen Sie zu Einstellungen.
  3. Klicken Sie auf Webhooks.
  4. Klicken Sie auf Add webhook (Webhook hinzufügen).
  5. Geben Sie in das Feld Nutzlast-URL die Endpunkt-URL der Google SecOps API ein.
  6. 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.

  7. 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.

  8. Das Kästchen Aktiv muss angeklickt sein.

  9. 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.