Mengumpulkan log JFrog Artifactory

Didukung di:

Dokumen ini menjelaskan cara menyerap log Jfrog Artifactory ke Google Security Operations menggunakan Bindplane. Parser 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 SecOps.
  • Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan systemd.
  • Jika berjalan di balik proxy, pastikan port firewall terbuka.
  • Pastikan Anda memiliki akses dengan hak istimewa ke instance Jfrog Artifactory.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Proses Transfer. Simpan file dengan aman di sistem tempat Bindplane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. Jalankan perintah berikut:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Referensi penginstalan tambahan

Mengonfigurasi agen Bindplane untuk menyerap Syslog dan mengirim ke Google SecOps

  1. Akses file konfigurasi:

    1. Temukan file config.yaml. Biasanya, file ini berada di direktori /etc/bindplane-agent/ di Linux atau di direktori penginstalan di Windows.
    2. Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  2. Edit file config.yaml sebagai berikut:

    ```yaml
    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'JFROG_ARTIFACTORY'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    ```
    
  3. Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.

  4. Ganti <customer_id> dengan ID pelanggan yang sebenarnya.

  5. Perbarui /path/to/ingestion-authentication-file.json ke jalur tempat file autentikasi disimpan di bagian Mendapatkan file autentikasi penyerapan Google SecOps.

Mulai ulang agen Bindplane untuk menerapkan perubahan

  • Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:

    sudo systemctl restart bindplane-agent
    
  • Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Mengonfigurasi Syslog Jfrog Artifactory

  1. Hubungkan ke instance Jfrog Artifactory.
  2. Edit file $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml menggunakan vi:

    vi $JFROG_HOME/artifactory/var/etc/artifactory/logback.xml
    
  3. Tambahkan appender syslog berikut ke file:

    <appender name="SYSLOG" class= "ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>Bindplane-Agent-IP</syslogHost>
        <facility>SYSLOG</facility>
        <suffixPattern>[%thread] %logger %msg</suffixPattern>
    </appender>
    
    • Ganti Bindplane-Agent-IP di syslogHost, dengan alamat IP sebenarnya yang dikonfigurasi untuk agen Bindplane.
  4. Tambahkan data konfigurasi tambahan ke file:

    <root>
    < level value="debug"/>
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="SYSLOG"/>
    </root>
    
  5. Simpan file dengan mengklik tombol ESC (escape) di keyboard dan mengetik :wq.

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

2025-02-27

Peningkatan:

  • Memetakan "data.repository_key", "data.release_bundle_name", "data.release_bundle_version", "data.property_key", "data.property_values", "data.platforms.architecture", dan "data.platforms.os" ke "additional.fields".

2025-02-19

Peningkatan:

  • Memetakan "data.repo_key" ,"subscription_key","source","image_name", "data.platforms" ke "additional.fields".
  • Memetakan "domain" ke "principal.administrative_domain".
  • Memetakan "event_type" ke "metadata.product_event_type".
  • Memetakan "data.path" ke "target.file.full_path".
  • Memetakan "data.name" ke "target.user.user_display_name".
  • Memetakan "data.size" ke "target.file.size".
  • Memetakan "SHA256" ke "target.process.file.sha256".

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.

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.