Mengumpulkan log MongoDB

Didukung di:

Dokumen ini menjelaskan cara menyerap log MongoDB ke Google Security Operations menggunakan Bindplane.

MongoDB adalah database dokumen NoSQL yang menghasilkan log audit untuk operasi CRUD, peristiwa autentikasi, perintah database, dan operasi set replika. MongoDB menulis file log JSON terstruktur secara lokal, yang dapat dikumpulkan oleh agen Bindplane langsung dari sistem file.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows Server 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Konektivitas jaringan antara agen Bindplane dan server MongoDB
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses istimewa ke server MongoDB (peran root atau administrator database)
  • MongoDB Enterprise atau MongoDB Community Edition dengan logging audit diaktifkan

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan. 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

Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

Layanan akan ditampilkan sebagai RUNNING.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sudo systemctl status observiq-otel-collector
    

Layanan akan ditampilkan sebagai aktif (berjalan).

Referensi penginstalan tambahan

Untuk opsi pemasangan dan pemecahan masalah tambahan, lihat Panduan pemasangan agen Bindplane.

Mengonfigurasi agen Bindplane untuk menyerap log dan mengirimkannya ke Google SecOps

Cari file konfigurasi

  • Linux:

    sudo systemctl status observiq-otel-collector
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
        filelog:
            include:
                - /var/log/mongodb/auditLog.json
            start_at: beginning
    
    exporters:
        chronicle/mongodb:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: MONGO_DB
            raw_log_field: body
            ingestion_labels:
                env: production
    
    service:
        pipelines:
            logs/mongodb_to_chronicle:
                receivers:
                    - filelog
                exporters:
                    - chronicle/mongodb
    

Parameter konfigurasi

Ganti placeholder berikut:

  • Konfigurasi penerima:

    • filelog: Jenis penerima untuk mengumpulkan file log dari disk
    • include: Daftar jalur file yang akan dipantau:
      • Linux: /var/log/mongodb/auditLog.json (jalur log audit MongoDB default)
      • Windows: C:\data\log\auditLog.json atau jalur log audit yang dikonfigurasi
    • start_at: Setel ke beginning untuk membaca log yang ada atau end untuk hanya membaca entri baru
  • Konfigurasi pengekspor:

    • mongodb: Nama deskriptif untuk eksportir
    • creds_file_path: Jalur lengkap ke file autentikasi penyerapan:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: ID Pelanggan dari langkah sebelumnya
    • endpoint: URL endpoint regional:
      • Amerika Serikat: malachiteingestion-pa.googleapis.com
      • Eropa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya
    • MONGO_DB: Jenis log persis seperti yang muncul di Chronicle
    • ingestion_labels: Label opsional dalam format YAML (misalnya, env: production)
  • Konfigurasi pipeline:

    • mongodb_to_chronicle: Nama deskriptif untuk pipeline

Simpan file konfigurasi

  • Setelah mengedit, simpan file:
    • Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
    • Windows: Klik File > Save

Mulai ulang agen Bindplane untuk menerapkan perubahan

Untuk memulai ulang agen Bindplane di Linux:

  1. Jalankan perintah berikut:

    sudo systemctl restart observiq-otel-collector
    
  2. Pastikan layanan sedang berjalan:

    sudo systemctl status observiq-otel-collector
    
  3. Periksa log untuk mengetahui error:

    sudo journalctl -u observiq-otel-collector -f
    

Untuk memulai ulang agen Bindplane di Windows:

  1. Pilih salah satu opsi berikut:

    • Command Prompt atau PowerShell sebagai administrator:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Konsol layanan:
      1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
      2. Cari observIQ OpenTelemetry Collector.
      3. Klik kanan, lalu pilih Mulai ulang.
  2. Pastikan layanan sedang berjalan:

    sc query observiq-otel-collector
    
  3. Periksa log untuk mengetahui error:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Mengonfigurasi MongoDB untuk membuat log audit

  1. Login ke server MongoDB dengan hak istimewa administrator atau root.
  2. Buka file konfigurasi MongoDB (mongod.conf). Lokasi default:
    • Linux: /etc/mongod.conf
    • Windows: C:\Program Files\MongoDB\Server\<version>\bin\mongod.cfg
  3. Pastikan logging audit diaktifkan. Di file mongod.conf, konfirmasi setelan berikut:

    • auditLog.destination disetel ke file.
    • auditLog.format disetel ke JSON.
    • Perhatikan auditLog.path (misalnya, /var/log/mongodb/auditLog.json).

    • Jika logging audit tidak diaktifkan, tambahkan kode berikut ke mongod.conf:

      auditLog:
        destination: file
        format: JSON
        path: /var/log/mongodb/auditLog.json
      
  4. Mulai ulang layanan MongoDB untuk menerapkan konfigurasi:

    • Linux:

      sudo systemctl restart mongod
      
    • Windows:

      net stop MongoDB && net start MongoDB
      
  5. Pastikan file log audit sedang ditulis di jalur yang dikonfigurasi (misalnya, /var/log/mongodb/auditLog.json).

  6. Pastikan jalur include agen Bindplane di config.yaml cocok dengan auditLog.path yang dikonfigurasi di mongod.conf.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
ctx, connectionId, connectionCount, attr.protocol, attr.storage.data.bytesRead, attr.storage.data.timeReadingMicros, attr.command.$readPreference.mode, attr.queryHash, param_old, cluster_node, param.indexName, temp_db_value additional.fields Digabungkan dari berbagai kolom berdasarkan kondisi
db_mechanism, param.mechanism extensions.auth.auth_details Nilai dari db_mechanism jika tidak kosong, atau param.mechanism
extensions.auth.mechanism Ditetapkan ke "MECHANISM_OTHER"
extensions.auth.type Tetapkan ke "AUTHTYPE_UNSPECIFIED"
lb_hostname, src_hostname intermediary.hostname Nilai dari lb_hostname jika tidak kosong, jika tidak, src_hostname
lb_port, src_port intermediary.port Nilai dari lb_port jika tidak kosong, atau src_port (dikonversi menjadi bilangan bulat)
msg metadata.description Nilai disalin secara langsung
metadata.event_type Ditetapkan berdasarkan kondisi msg_atype, category, param_passwordChanged, param_command, remote_ip
msg_atype, category metadata.product_event_type Nilai dari msg_atype jika tidak kosong, atau kategori
id, type, traceId metadata.product_log_id Nilai dari id jika tidak kosong, atau uuid.$binary jika jenis == "04", atau traceId
metadata.product_name Tetapkan ke "MongoDB Enterprise"
metadata.vendor_name Tetapkan ke "MongoDB"
application_name principal.application Nilai disalin secara langsung
accessLog.hostname principal.asset.hostname Nilai disalin secara langsung
remote_ip principal.asset.ip Nilai disalin secara langsung
software_label principal.asset.software Digabungkan dari software_label
accessLog.hostname principal.hostname Nilai disalin langsung
remote_ip principal.ip Nilai disalin secara langsung
os_type principal.platform Tetapkan ke WINDOWS jika cocok dengan Windows; MAC jika cocok dengan osx atau mac; LINUX jika cocok dengan Linux
os_name, param.clientMetadata.os.name principal.platform_patch_level Nilai dari os_name jika tidak kosong, atau param.clientMetadata.os.name
os_version, param.clientMetadata.os.version principal.platform_version Nilai dari os_version jika tidak kosong, atau param.clientMetadata.os.version
remote_port principal.port Dikonversi ke bilangan bulat
principal_userid principal.user.userid Nilai disalin secara langsung
sr_action security_result.action Nilai disalin secara langsung
param.reason, param.indexBuildState security_result.description Nilai dari param.reason jika msg_atype == "logout"; dari param.indexBuildState jika msg_atype dalam ["createIndex", "dropIndex"]
tingkat keparahan, level security_result.severity Setel ke INFORMATIONAL jika tingkat keparahan dalam ["i", "I"] atau level dalam ["INFO", "DEBUG"]; ERROR jika tingkat keparahan dalam ["e", "E"] atau level == "ERROR"; MEDIUM jika tingkat keparahan dalam ["w", "W", "f", "F"]
msg_result, attr.error, attr.planSummary, reason, attr.msg_data security_result.summary Ditetapkan berdasarkan kondisi msg_result, attr.error, attr.planSummary, reason, attr.msg_data
db_value target.administrative_domain Nilai disalin secara langsung
application_name target.application Nilai disalin langsung
local_ip target.asset.ip Nilai disalin langsung
host_group target.group.group_display_name Nilai disalin langsung
local_ip target.ip Nilai disalin langsung
local_port target.port Dikonversi ke bilangan bulat
old_name_label, cluster_node_label, mode_label, query_hash_label, bytes_read_label, time_reading_micro_label, environment_label, area_label target.resource.attribute.labels Digabungkan dari berbagai kolom label
param_ns, db_value, param_new, param.args.find target.resource.name Ditetapkan berdasarkan kondisi msg_atype dan param_command
target.resource.resource_subtype Tetapkan ke "MongoDB Database" untuk peristiwa database/pengguna; "MongoDB Collection" untuk peristiwa koleksi; "MongoDB Index" untuk peristiwa indeks
target.resource.resource_type Tetapkan ke "DATABASE" untuk peristiwa database/pengguna; "TABLE" untuk peristiwa pengumpulan/pengindeksan
db_user, param.user target.user.userid Nilai dari db_user jika tidak kosong, jika tidak, param.user
service.name event.idm.read_only_udm.target.application Dipetakan dari log perubahan
host.name event.idm.read_only_udm.principal.hostname Dipetakan dari log perubahan
host.name event.idm.read_only_udm.principal.asset.hostname Dipetakan dari log perubahan
mongodb.group.id event.idm.read_only_udm.principal.group.product_object_id Dipetakan dari log perubahan
mongodb.cluster.name event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
mongodb.customer.cluster.name event.idm.read_only_udm.target.resource.attribute.labels Dipetakan dari log perubahan
timestamp event.idm.read_only_udm.metadata.event_timestamp Dipetakan dari log perubahan
ts.date event.idm.read_only_udm.metadata.event_timestamp Dipetakan dari log perubahan
uuid.binary event.idm.read_only_udm.metadata.product_log_id Dipetakan dari log perubahan
users.1.user event.idm.read_only_udm.principal.user.userid Dipetakan dari log perubahan
remote.ip event.idm.read_only_udm.principal.ip dan event.idm.read_only_udm.principal.asset.ip Dipetakan dari log perubahan
remote.port event.idm.read_only_udm.principal.port Dipetakan dari log perubahan
local.ip event.idm.read_only_udm.target.ip dan event.idm.read_only_udm.target.asset.ip Dipetakan dari log perubahan
local.port event.idm.read_only_udm.target.port Dipetakan dari log perubahan
roles.role event.idm.read_only_udm.principal.user.attribute.roles Dipetakan dari log perubahan
param.args.client.application.name event.idm.read_only_udm.principal.application Dipetakan dari log perubahan
param.args.client.os.type event.idm.read_only_udm.principal.asset.platform_software.platform Dipetakan dari log perubahan
param.args.client.os.version event.idm.read_only_udm.principal.platform_version Dipetakan dari log perubahan
param.args.client.os.architecture event.idm.read_only_udm.principal.asset.hardware Dipetakan dari log perubahan
atype event.idm.read_only_udm.metadata.product_event_type Dipetakan dari log perubahan
param.command event.idm.read_only_udm.metadata.product_event_type Dipetakan dari log perubahan
param.ns event.idm.read_only_udm.target.resource.name Dipetakan dari log perubahan
result event.idm.read_only_udm.security_result.action Dipetakan dari log perubahan
mongodb.log.type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.db event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
uuid.type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.clientOperationKey.type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.clientOperationKey.binary event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.aggregate event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.mayBypassWriteBlocking event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.configTime.timestamp.t event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.topologyTime.timestamp.t event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.audit event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.cursor.batchSize.numberLong event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.includeQueryStatsMetrics event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.fromMongos event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.readConcern.provenance event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.readConcern.level event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.writeConcern.provenance event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.writeConcern.level event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.platform event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.driver.name event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.driver.version event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.os.name event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.clusterTime event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.lsid.id.type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.lsid.uid.binary event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.users.1.db event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.mongos.version event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.writeConcern.w event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.writeConcern.wtimeout event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.lsid.uid.type event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.pipeline.1.match.managedClusterType event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.pipeline.2.group.n.sum.const event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.pipeline.2.group._id.const event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.client.mongos.client.port event.idm.read_only_udm.additional.fields Dipetakan dari log perubahan
param.args.audit.impersonatedRoles event.idm.read_only_udm.principal.user.attribute.roles Dipetakan dari log perubahan
param.args.audit.impersonatedUser event.idm.read_only_udm.principal.user.attribute.labels Dipetakan dari log perubahan
param.args.client.mongos.client event.idm.read_only_udm.principal.ip dan event.idm.read_only_udm.principal.asset.ip Dipetakan dari log perubahan
param.args.client.mongos.host event.idm.read_only_udm.intermediary.ip Dipetakan dari log perubahan
param.args.client.mongos.host event.idm.read_only_udm.intermediary.port Dipetakan dari log perubahan
accessLog.authResult additional.fields Dipetakan dari log perubahan
accessLog.authSource additional.fields Dipetakan dari log perubahan
accessLog.failureReason additional.fields Dipetakan dari log perubahan
accessLog.groupId target.resource.product_object_id Dipetakan dari log perubahan
accessLog.ipAddress intermediary.ip Dipetakan dari log perubahan
accessLog.logLine.t.$date additional.fields Dipetakan dari log perubahan
accessLog.logLine.s additional.fields Dipetakan dari log perubahan
accessLog.logLine.c additional.fields Dipetakan dari log perubahan
accessLog.logLine.id additional.fields Dipetakan dari log perubahan
accessLog.logLine.ctx additional.fields Dipetakan dari log perubahan
accessLog.logLine.msg additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.client additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.isSpeculative additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.isClusterMember additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.mechanism additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.user additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.db additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.result additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.metrics.conversation_duration.micros additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.metrics.conversation_duration.summary.step additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.metrics.conversation_duration.summary.step_total additional.fields Dipetakan dari log perubahan
accessLog.logLine.attr.metrics.conversation_duration.summary.duration_micros additional.fields Dipetakan dari log perubahan
accessLog.username target.user.user_display_name Dipetakan dari log perubahan
accessLog.timestamp additional.fields Dipetakan dari log perubahan
roles.db principal.user.attribute.roles Dipetakan dari log perubahan
roles.db target.user.attribute.roles Dipetakan dari log perubahan

Log Perubahan

Melihat Log Perubahan untuk parser ini

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