Mengumpulkan log audit GitHub
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
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, GitHub Logs).
- Pilih Webhook sebagai Jenis sumber.
- Pilih GitHub sebagai Jenis log.
- Klik Berikutnya.
- 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.
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- 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.
- Di tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Konsol Google Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
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.
- Buka repositori GitHub Anda.
- Buka Setelan.
- Klik Webhook.
- Klik Tambahkan webhook.
- Di kolom Payload URL, masukkan URL endpoint Google SecOps API.
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.
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
.Pastikan kotak Aktif dicentang.
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'.