Mengumpulkan log audit GitHub

Didukung di:

Ringkasan

Parser ini menangani log audit GitHub dalam format JSON. Fungsi ini membersihkan input dengan menghapus banyak kolom, melakukan beberapa operasi grok dan nilai kunci berdasarkan kolom process_type untuk mengekstrak informasi yang relevan, memetakan kolom yang diekstrak ke UDM, dan menyusun output untuk penyerapan Google SecOps. Fungsi ini juga menangani kasus ekstrem tertentu dan melakukan transformasi data untuk berbagai subjenis log dalam log audit GitHub.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke repositori GitHub.

Mengonfigurasi feed di Google SecOps untuk menyerap log GitHub

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, GitHub Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih GitHub sebagai Jenis log.
  6. Klik Berikutnya.
  7. Opsional: tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Ganti kode berikut:

  • ENDPOINT_URL: URL endpoint feed.
  • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
  • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Membuat Webhook di GitHub

Panduan ini memberikan petunjuk langkah demi langkah untuk membuat webhook di GitHub guna mengirim data ke Google SecOps.

  1. Buka repositori GitHub Anda.
  2. Buka Setelan.
  3. Klik Webhook.
  4. Klik Tambahkan webhook.
  5. Di kolom Payload URL, masukkan URL endpoint Google SecOps API.
  6. Pilih application/json sebagai Jenis konten.

    Opsional: Untuk keamanan yang lebih baik, tetapkan Rahasia. Tindakan ini akan menghasilkan tanda tangan untuk payload webhook, sehingga Anda dapat memverifikasi keasliannya di sisi Google SecOps. Jika Anda menggunakan secret, konfigurasikan juga di feed Google SecOps.

  7. Pilih peristiwa yang memicu webhook. Untuk logging yang komprehensif, pilih Izinkan saya memilih setiap peristiwa dan periksa peristiwa yang relevan (misalnya, Push, Pull Request, Masalah). Jika tidak yakin, mulailah dengan Hanya peristiwa push.

  8. Pastikan kotak Aktif dicentang.

  9. Klik Tambahkan webhook untuk menyimpan konfigurasi Anda.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
_document_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value _document_id dari log mentah dipetakan ke key-value pair dalam array additional.fields dalam UDM.
action read_only_udm.metadata.product_event_type, read_only_udm.security_result.summary Kolom action dipetakan ke product_event_type dalam metadata dan summary dalam security_result.
actor read_only_udm.principal.user.userid Kolom actor, yang mewakili pengguna yang melakukan tindakan, dipetakan ke principal.user.userid.
actor_id read_only_udm.principal.user.attribute.labels.[].key, read_only_udm.principal.user.attribute.labels.[].value actor_id dipetakan sebagai label dalam array principal.user.attribute.labels.
actor_ip read_only_udm.principal.ip Alamat IP pelaku dipetakan ke principal.ip.
actor_location.country_code read_only_udm.principal.location.country_or_region Kode negara aktor dipetakan ke principal.location.country_or_region.
application_name read_only_udm.target.application Nama aplikasi dipetakan ke target.application.
business read_only_udm.target.user.company_name, read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Nama bisnis dipetakan ke target.user.company_name dan sebagai key-value pair di additional.fields.
business_id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value ID bisnis dipetakan sebagai label dalam array target.resource.attribute.labels.
config.url read_only_udm.target.url URL konfigurasi dipetakan ke target.url.
created_at read_only_udm.metadata.event_timestamp Stempel waktu created_at dikonversi ke format yang sesuai dan dipetakan ke metadata.event_timestamp.
data.cancelled_at read_only_udm.extensions.vulns.vulnerabilities.scan_end_time Stempel waktu data.cancelled_at dikonversi dan dipetakan ke extensions.vulns.vulnerabilities.scan_end_time.
data.email read_only_udm.target.email Alamat email dari kolom data dipetakan ke target.email.
data.event read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Peristiwa dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
data.events read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Peristiwa dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
data.head_branch read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Cabang head dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
data.head_sha read_only_udm.target.file.sha256 SHA kepala dari kolom data dipetakan ke target.file.sha256.
data.hook_id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value ID hook dari kolom data dipetakan sebagai label dalam array target.resource.attribute.labels.
data.started_at read_only_udm.extensions.vulns.vulnerabilities.scan_start_time Stempel waktu data.started_at dikonversi dan dipetakan ke extensions.vulns.vulnerabilities.scan_start_time.
data.team read_only_udm.target.user.group_identifiers Tim dari kolom data dipetakan ke target.user.group_identifiers.
data.trigger_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value ID pemicu dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
data.workflow_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value ID alur kerja dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
data.workflow_run_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value ID operasi alur kerja dari kolom data dipetakan sebagai label dalam array security_result.about.labels.
enterprise.name read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Nama perusahaan dipetakan sebagai key-value pair di additional.fields.
external_identity_nameid read_only_udm.target.user.userid, read_only_udm.target.user.email_addresses Jika external_identity_nameid adalah alamat email, bagian nama pengguna akan diekstrak dan dipetakan ke target.user.userid, dan email lengkap akan ditambahkan ke target.user.email_addresses. Jika tidak, seluruh nilai akan dipetakan ke target.user.userid.
external_identity_username read_only_udm.target.user.user_display_name Nama pengguna identitas eksternal dipetakan ke target.user.user_display_name.
hashed_token read_only_udm.network.session_id Token yang di-hash dipetakan ke network.session_id.
org read_only_udm.target.administrative_domain Organisasi dipetakan ke target.administrative_domain.
org_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value ID organisasi dipetakan sebagai key-value pair di additional.fields.
programmatic_access_type read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Jenis akses terprogram dipetakan sebagai key-value pair di additional.fields.
public_repo read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value, read_only_udm.target.location.name Nilai public_repo menentukan nilai yang dipetakan ke pasangan nilai kunci di additional.fields dan target.location.name. "false" dipetakan ke "PRIVATE", dan nilai lainnya dipetakan ke "PUBLIC".
query_string read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value String kueri dipetakan sebagai pasangan nilai kunci di additional.fields.
rate_limit_remaining read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Batas kapasitas yang tersisa dipetakan sebagai key-value pair di additional.fields.
repo read_only_udm.target.resource.name Repositori dipetakan ke target.resource.name.
repo_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value ID repositori dipetakan sebagai key-value pair di additional.fields.
repository_public read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Flag publik repositori dipetakan sebagai key-value pair di additional.fields.
request_body read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Isi permintaan dipetakan sebagai key-value pair di additional.fields.
request_method read_only_udm.network.http.method Metode permintaan dikonversi ke huruf besar dan dipetakan ke network.http.method.
route read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Rute dipetakan sebagai pasangan nilai kunci di additional.fields.
status_code read_only_udm.network.http.response_code Kode status dikonversi menjadi bilangan bulat dan dipetakan ke network.http.response_code.
token_id read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value ID token dipetakan sebagai pasangan nilai kunci di additional.fields.
token_scopes read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Cakupan token dipetakan sebagai pasangan nilai kunci di additional.fields.
transport_protocol_name read_only_udm.network.application_protocol Nama protokol transpor dikonversi menjadi huruf besar dan dipetakan ke network.application_protocol.
url_path read_only_udm.target.url Jalur URL dipetakan ke target.url.
user read_only_udm.target.user.user_display_name Pengguna dipetakan ke target.user.user_display_name.
user_agent read_only_udm.network.http.user_agent, read_only_udm.network.http.parsed_user_agent Agen pengguna dipetakan ke network.http.user_agent, dan versi yang diuraikan dipetakan ke network.http.parsed_user_agent.
user_id read_only_udm.target.user.userid ID pengguna dipetakan ke target.user.userid.
workflow.name read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Nama alur kerja dipetakan sebagai label dalam array security_result.about.labels.
workflow_run.event read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Peristiwa pengoperasian alur kerja dipetakan sebagai pasangan nilai kunci di additional.fields.
workflow_run.head_branch read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Cabang head run alur kerja dipetakan sebagai label dalam array security_result.about.labels.
workflow_run.head_sha read_only_udm.target.file.sha256 SHA kepala run alur kerja dipetakan ke target.file.sha256.
workflow_run.id read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value ID eksekusi alur kerja dipetakan sebagai label dalam array target.resource.attribute.labels.
workflow_run.workflow_id read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value ID alur kerja operasi alur kerja dipetakan sebagai label dalam array security_result.about.labels.
(Logika Parser) read_only_udm.metadata.event_type Jenis peristiwa ditentukan oleh parser berdasarkan keberadaan dan nilai kolom lain, seperti data.team, action, dan actor. Setelan defaultnya adalah USER_RESOURCE_ACCESS jika tidak ada kondisi spesifik lainnya yang terpenuhi.
(Logika Parser) read_only_udm.metadata.log_type Jenis log di-hardcode ke "GITHUB".
(Logika Parser) read_only_udm.metadata.product_name Nama produk di-hardcode menjadi "GITHUB".
(Logika Parser) read_only_udm.metadata.vendor_name Nama vendor di-hardcode menjadi "GITHUB".
(Logika Parser) read_only_udm.target.resource.resource_type Jenis resource ditetapkan ke STORAGE_OBJECT jika kolom repo ada.
(Logika Parser) read_only_udm.target.resource.type Jenis resource berasal dari kolom action.
(Logika Parser) read_only_udm.security_result.action Tindakan keamanan (ALLOW/BLOCK) berasal dari kolom at atau raw.at jika ada dan sama dengan "success" atau tidak.
(Logika Parser) read_only_udm.security_result.severity Tingkat keparahan keamanan berasal dari kolom level atau SeverityText jika ada. "INFO" dipetakan ke "INFORMATIONAL", "WARN" ke "MEDIUM", dan nilai lainnya dipetakan secara langsung. Untuk log git-daemon, "fatal" dipetakan ke "CRITICAL".
(Logika Parser) read_only_udm.network.application_protocol Protokol aplikasi berasal dari kolom protocol, proto, babeld_proto, transport_protocol_name, atau raw.protocol, yang dikonversi ke huruf besar dan memeriksa "HTTP", "HTTPS", dan "SSH".
(Logika Parser) read_only_udm.network.application_protocol_version Versi protokol aplikasi berasal dari kolom http_version jika ada.
(Logika Parser) read_only_udm.network.http.parsed_user_agent Agen pengguna yang diuraikan berasal dari kolom user_agent, column5, http_ua, atau content jika ada.
(Logika Parser) read_only_udm.network.received_bytes Byte yang diterima berasal dari kolom column3, read_bytes, fs_recv, atau uploaded_bytes jika ada, yang dikonversi menjadi bilangan bulat tanpa tanda tangan.
(Logika Parser) read_only_udm.network.received_packets Paket yang diterima berasal dari kolom client_recv jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.network.response_code Kode respons berasal dari kolom column2, status, status_code, atau http_status jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.network.sent_bytes Byte yang dikirim berasal dari kolom client_sent jika ada, yang dikonversi menjadi bilangan bulat tanpa tanda tangan.
(Logika Parser) read_only_udm.network.sent_packets Paket yang dikirim berasal dari kolom fs_sent jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.network.session_duration.seconds Durasi sesi dalam detik berasal dari kolom time_duration jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.target.file.full_path Jalur lengkap file target berasal dari kolom path, git_dir, atau dir jika ada.
(Logika Parser) read_only_udm.target.file.sha1 SHA1 file target berasal dari kolom sha jika ada.
(Logika Parser) read_only_udm.target.hostname Nama host target berasal dari kolom client_hostname jika ada.
(Logika Parser) read_only_udm.target.ip IP target berasal dari kolom x_real_ip, remote_address, client_ip, atau remote_addr jika ada.
(Logika Parser) read_only_udm.target.location.name Nama lokasi target berasal dari kolom datacenter atau public_repo jika ada.
(Logika Parser) read_only_udm.target.port Port target berasal dari kolom client_port, dstp, atau remote_port jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.target.process.command_line Command line proses target berasal dari kolom command, ssh_cmd, cmdline, atau cmd jika ada.
(Logika Parser) read_only_udm.target.process.parent_process.pid ID proses induk proses target berasal dari kolom ppid jika ada, yang dikonversi menjadi string.
(Logika Parser) read_only_udm.target.process.pid ID proses target berasal dari kolom pid jika ada, yang dikonversi menjadi string.
(Logika Parser) read_only_udm.target.url URL target berasal dari kolom url, http_url, request_url, http_request, dest_url, config.url, atau url_path jika ada. Nilai ini juga dapat dibuat dari path_info dan query_string.
(Logika Parser) read_only_udm.target.user.attribute.roles.[].name Peran pengguna target berasal dari kolom actor_type atau user_type jika ada.
(Logika Parser) read_only_udm.target.user.email_addresses Alamat email pengguna target berasal dari kolom external_identity_nameid jika merupakan alamat email.
(Logika Parser) read_only_udm.target.user.group_identifiers ID grup pengguna target berasal dari kolom data.team jika ada.
(Logika Parser) read_only_udm.target.user.userid ID pengguna target berasal dari kolom userid, external_identity_nameid, current_user, member, user_id, actor_id, atau raw.user_id jika ada.
(Logika Parser) read_only_udm.target.user.user_display_name Nama tampilan pengguna target berasal dari kolom login, user, external_identity_username, user_login, atau raw.login jika ada.
(Logika Parser) read_only_udm.principal.asset.asset_id ID aset utama berasal dari kolom guid, yang diawali dengan "GUID: ".
(Logika Parser) read_only_udm.principal.hostname Nama host akun utama berasal dari kolom hostname, request_host, host, atau principal_hostname jika ada.
(Logika Parser) read_only_udm.principal.ip IP utama berasal dari kolom column6, ip, x_real_ip, remote_address, raw.ip, actor_ip, atau log:source:ip jika ada.
(Logika Parser) read_only_udm.principal.location.country_or_region Negara atau wilayah lokasi utama berasal dari kolom actor_location.country_code jika ada.
(Logika Parser) read_only_udm.principal.port Port utama berasal dari kolom srcp atau log:source:port jika ada, yang dikonversi menjadi bilangan bulat.
(Logika Parser) read_only_udm.principal.resource.name Nama resource utama berasal dari kolom service.name jika ada.
(Logika Parser) read_only_udm.principal.resource.product_object_id ID objek produk resource utama berasal dari kolom service.instance.id atau subject_id jika ada.
(Logika Parser) read_only_udm.principal.url URL utama berasal dari kolom repo jika ada.
(Logika Parser) read_only_udm.principal.user.userid ID pengguna utama berasal dari kolom repository_owner_id jika ada, yang dikonversi menjadi string.
(Logika Parser) read_only_udm.principal.user.user_display_name Nama tampilan pengguna utama berasal dari kolom repo_name jika ada.
(Logika Parser) read_only_udm.intermediary.hostname Nama host perantara berasal dari kolom hostname jika ada.
(Logika Parser) read_only_udm.intermediary.ip IP perantara berasal dari kolom x_forwarded_for atau xff_ip jika ada.
(Logika Parser) read_only_udm.metadata.description Deskripsi metadata berasal dari kolom content, at, atau raw.message jika ada.
(Logika Parser) read_only_udm.metadata.product_event_type Jenis peristiwa produk berasal dari kolom process_type atau action jika ada.
(Logika Parser) read_only_udm.metadata.product_log_id ID log produk berasal dari kolom github_request_id, id, request_id, atau raw.request_id jika ada.
(Logika Parser) read_only_udm.metadata.product_version Versi produk berasal dari kolom version jika ada.
(Logika Parser) read_only_udm.security_result.about.labels.[].key, read_only_udm.security_result.about.labels.[].value Berbagai label ditambahkan ke array security_result.about.labels berdasarkan keberadaan dan nilai kolom seperti data.events, data.workflow_id, workflow.name, data.head_branch, data.trigger_id, data.workflow_run_id, dan data.event.
(Logika Parser) read_only_udm.security_result.description Deskripsi hasil keamanan berasal dari kolom auth_status, data_msg, msg, Body, desc, atau content jika ada.
(Logika Parser) read_only_udm.security_result.severity_details Detail tingkat keparahan hasil keamanan berasal dari kolom userid jika ada.
(Logika Parser) read_only_udm.security_result.summary Ringkasan hasil keamanan berasal dari kolom creason, action, atau reason jika ada.
(Logika Parser) read_only_udm.network.http.referral_url URL rujukan HTTP berasal dari kolom column4 atau referer jika ada.
(Logika Parser) read_only_udm.network.http.user_agent Agen pengguna HTTP berasal dari kolom column5, http_ua, atau user_agent jika ada.
(Logika Parser) read_only_udm.network.sent_bytes Byte yang dikirim jaringan berasal dari kolom client_sent atau fs_sent jika ada, yang dikonversi menjadi bilangan bulat tanpa tanda tangan.
(Logika Parser) read_only_udm.additional.fields.[].key, read_only_udm.additional.fields.[].value.string_value Banyak kolom yang dipetakan secara kondisional sebagai pasangan nilai kunci dalam array additional.fields, termasuk 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, dan job. Logika spesifik untuk setiap kolom dijelaskan dalam kode parser.
(Logika Parser) read_only_udm.security_result.detection_fields.[].key, read_only_udm.security_result.detection_fields.[].value Kolom controller_action, two_factor, delay_time, queued_time, delivery_build, delivery_send, dan stages dipetakan secara kondisional ke array security_result.detection_fields.
(Logika Parser) read_only_udm.target.resource.attribute.labels.[].key, read_only_udm.target.resource.attribute.labels.[].value Kolom hook_id, job_name, job_workflow_ref, runner_group_id, runner_group_name, runner_name, runner_id, workflow_run_id, dan business_id dipetakan secara kondisional sebagai label dalam array target.resource.attribute.labels.
(Logika Parser) read_only_udm.metadata.event_timestamp Jika stempel waktu tidak langsung tersedia dalam format yang didukung, parser akan mencoba mengekstraknya dan mengonversinya dari berbagai kolom, termasuk ts, now, created_at, Timestamp, time, dan raw.now.
(Logika Parser) read_only_udm.network.http.method Metode HTTP berasal dari kolom method, column1, request_method, http_method, atau raw.method, yang dikonversi ke huruf besar.
(Logika Parser) read_only_udm.target.application Aplikasi target berasal dari kolom process, program, atau app jika ada.

Perubahan

2023-12-18

  • Perbaikan Bug:
  • Jika "process_type" adalah "github_production", tambahkan pola Grok untuk mengekstrak "kv_data".
  • Jika "process_type" adalah "github_production", pemetaan "user" ke "target.user.user_display_name".
  • Jika "process_type" adalah "github_production", pemetakan "user_id" ke "target.user.userid".
  • Memetakan "referrer" ke "network.http.referral_url".
  • Memetakan "user_session_id" ke "network.session_id".
  • Memetakan "ip" ke "principal.ip".
  • Memetakan "from" ke "additional.fields".
  • Memetakan "request_category" ke "additional.fields".
  • Memetakan "device_cookie" ke "additional.fields".
  • Memetakan "operation_type" ke "additional.fields".
  • Memetakan "category_type" ke "additional.fields".
  • Memetakan "note" ke "additional.fields".
  • Memetakan "read" ke "additional.fields".
  • Memetakan "pre_perform_allocation_count" ke "additional.fields".
  • Memetakan "backend" ke "additional.fields".
  • Memetakan "queue" ke "additional.fields".
  • Memetakan "class" ke "additional.fields".
  • Memetakan "success" ke "additional.fields".
  • Memetakan "controller_action" ke "security_result.detection_fields".
  • Memetakan "two_factor" ke "security_result.detection_fields".

2023-10-25

  • Jika "public_repo" adalah "false", tetapkan "target.location.name" ke "PRIVATE", jika tidak, tetapkan ke "PUBLIC".

2023-10-11

  • Memetakan "user_agent" ke "network.http.user_agent" dan "network.http.parsed_user_agent".
  • Memetakan "request_method" ke "network.http.method".
  • Memetakan "application_name" ke "target.application".
  • Memetakan "status_code" ke "network.http.response_code".
  • Memetakan "url_path" ke "target.url".
  • Memetakan "user_id" ke "target.userid".
  • Memetakan "transport_protocol_name" ke "network.application_protocol".
  • Memetakan "raw.now" ke "metadata.event_timestamp".
  • Memetakan "raw.ip" ke "principal.ip".
  • Memetakan "raw.request_id" ke "metadata.product_log_id".
  • Memetakan "raw.repo" ke "target.url".
  • Memetakan "raw.action" ke "security_result.summary".
  • Memetakan "raw.protocol" ke "network.application_protocol".
  • Memetakan "raw.message" ke "metadata.description".
  • Memetakan "raw.at" ke "security_result.action".
  • Memetakan "raw.login" ke "target.user_display_name".
  • Memetakan "raw.user_id" ke "target.userid".
  • Memetakan "raw.failure_reason", "raw.failure_type", "raw.raw_login", dan "raw.from" ke "additional.fields".
  • Memetakan "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", "repository_public" ke "additional.fields".

2023-07-31

  • Perbaikan Bug:
  • Menambahkan "on_error" ke pola Grok.
  • Memetakan "workflow_run.id" ke "target.resource.attribute.labels".
  • Memetakan "workflow_run.event" ke "additional.fields".
  • Memetakan "workflow_run.actor.login" ke "principal.user.userid".
  • Memetakan "workflow_run.head_branch" ke "security_result.about.labels".
  • Memetakan "workflow_run.head_sha" ke "target.file.sha256".
  • Memetakan "enterprise.name" ke "additional.fields".
  • Memetakan "workflow.name" ke "security_result.about.labels".
  • Memetakan "workflow_run.workflow_id" ke "security_result.about.labels".

2023-06-22

  • Menambahkan dukungan untuk format log syslog "github_auth", "haproxy", "github_access", "github_unicorn", "github_production", "hookshot-go", "babeld", "github_gitauth", "babeld2hydro", "authzd", "gitrpcd", "agent", "git-daemon", "github_resqued", "sudo", "systemd", dan "github_audit".

2023-06-09

  • Enhancement-
  • Memetakan "external_identity_nameid" ke "target.user.email_addresses" jika dalam format email.
  • Ambil nama pengguna dari "external_identity_nameid" dan petakan ke "target.user.userid".

2023-01-13

  • Enhancement-
  • Memetakan "actor_ip" ke "principal.ip".
  • Memetakan "hashed_token" ke "network.session_id".
  • Memetakan "external_identity_nameid" ke "target.user.userid "
  • Memetakan "external_identity_username" ke target.user.user_display_name".

2022-11-28

  • Peningkatan - Memetakan "config.url" ke "target.url".

2022-07-07

  • Peningkatan - Log format JSON yang baru diserap yang memiliki tindakan "git.clone","git.push", dan "workflows.prepared_workflow_job" telah ditangani dan diuraikan.
  • 'job_name' dipetakan ke 'target.resource.attribute.labels'.
  • 'job_workflow_ref' dipetakan ke 'target.resource.attribute.labels'.
  • 'runner_group_id' dipetakan ke 'target.resource.attribute.labels'.
  • 'runner_group_name' dipetakan ke 'target.resource.attribute.labels'.
  • 'runner_name' dipetakan ke 'target.resource.attribute.labels'.
  • 'runner_id' dipetakan ke 'target.resource.attribute.labels'.
  • 'workflow_run_id' dipetakan ke 'target.resource.attribute.labels'.
  • 'actor_location.country_code' dipetakan ke 'principal.location.country_or_region'.