Mengumpulkan log JFrog Artifactory

Didukung di:

Parser ini menangani dua format log JFrog Artifactory yang berbeda. Fungsi ini menggunakan pola grok untuk mengidentifikasi dan mengekstrak kolom dari setiap format. Kemudian, kolom tersebut dipetakan ke UDM, menangani payload JSON dalam salah satu format, dan menghapus log yang tidak cocok dengan salah satu format.

Sebelum memulai

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

Mengonfigurasi feed di Google SecOps untuk menyerap log JFrog Artifactory

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Feed name, masukkan nama untuk feed (misalnya, JFrog Artifactory Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih JFrog Artifactory 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. Dari 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.

  3. 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 SecOps.
    • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Membuat webhook di JFrog Artifactory untuk mengirim data ke Google SecOps

  1. Login ke instance JFrog menggunakan kredensial administrator Anda.
  2. Buka Administration > General > Webhooks.
  3. Klik + Webhook Baru.
  4. Konfigurasikan setelan webhook berikut:

    • Webhook Key: Berikan nama deskriptif (misalnya, Google SecOps).
    • URL: Masukkan <ENDPOINT_URL> endpoint Google SecOps API.

    • Peristiwa: Pilih peristiwa Artifactory yang akan memicu webhook, pilih peristiwa yang relevan dengan kebutuhan pemantauan keamanan Anda (misalnya, di-deploy, didownload, dihapus).

    • Domain: Jika Anda menggunakan repositori virtual, pilih domain yang relevan. Jika tidak, biarkan kolom ini sebagai Semua Lokal.

    • Repositori: Pilih repositori tertentu atau biarkan sebagai Mana Saja Jarak Jauh atau Mana Saja Lokal, bergantung pada persyaratan Anda.

  5. Klik Uji, tindakan ini akan mengirim peristiwa pengujian ke Google SecOps.

  6. Klik Simpan.

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
action read_only_udm.metadata.product_event_type Nilai action dari log mentah dikonversi menjadi huruf kecil dan dipetakan.
datetime read_only_udm.metadata.event_timestamp Kolom datetime log mentah diuraikan dan dikonversi menjadi stempel waktu.
hostname read_only_udm.principal.hostname Dipetakan langsung dari kolom hostname log mentah.
id read_only_udm.metadata.product_log_id Dipetakan langsung dari kolom id log mentah (dari payload JSON).
ip read_only_udm.principal.ip Dipetakan langsung dari kolom ip log mentah. Di-hardcode ke "USER_RESOURCE_ACCESS". Di-hardcode ke "JFROG_ARTIFACTORY". Di-hardcode ke "Artifactory". Di-hardcode ke "JFROG".
owner read_only_udm.principal.user.userid Dipetakan jika username tidak ada dalam log mentah (dari payload JSON).
repo_name read_only_udm.target.resource.name Dipetakan langsung dari kolom repo_name log mentah.
repo_type read_only_udm.target.resource.resource_subtype Dipetakan langsung dari kolom repo_type log mentah.
scope read_only_udm.target.resource.name Dipetakan langsung dari kolom scope log mentah (dari payload JSON).
scope read_only_udm.target.resource.resource_subtype Di-hardcode ke "scope" jika scope ada dalam log mentah.
sequenceId read_only_udm.metadata.product_log_id Tanda kutip dihapus dari kolom sequenceId, lalu dipetakan.
subjek read_only_udm.about.labels.key Di-hardcode ke "subjek" jika subjek ada dalam log mentah.
subjek read_only_udm.about.labels.value Dipetakan langsung dari kolom subjek log mentah (dari payload JSON).
jenis read_only_udm.metadata.product_event_type Dipetakan langsung dari kolom type log mentah (dari payload JSON).
pengguna read_only_udm.principal.user.userid Dipetakan langsung dari kolom user log mentah.
username read_only_udm.principal.user.userid Dipetakan langsung dari kolom username log mentah (dari payload JSON).

Perubahan

2024-09-23

  • Peningkatan:
  • Menambahkan dukungan untuk mengurai log yang tidak diuraikan.
  • Memetakan "target_ip" ke "target.ip" dan "target.asset.ip".
  • Memetakan "desc" ke "metadata.description".
  • Memetakan "method" ke "network.http.method".
  • Memetakan "url" ke "target.url".
  • Memetakan "prin_url" ke "principal.url".
  • Memetakan "response_code" ke "network.http.response_code".
  • Memetakan "RequestMethod" ke "network.http.method".
  • Memetakan "RequestPath" ke "target.url".
  • Memetakan "DownstreamContentSize" dan "DownstreamStatus" ke "Additional.Fields".
  • Memetakan "ServiceAddr" ke "principal.hostname" dan "principal.port".
  • Memetakan "ClientAddr" ke "target.ip" dan "target.port".
  • Memetakan "user_agent" ke "network.http.user_agent".
  • Memetakan "level" ke "security_result.severity".
  • Memetakan "msg" ke "security_result.description".
  • Memetakan "protocol" ke "network.application_protocol".

2023-08-25

  • Parser yang baru dibuat.