Mengumpulkan log IAM Ergon Informatik Airlock

Didukung di:

Dokumen ini menjelaskan cara menyerap log IAM Ergon Informatik Airlock ke Google Security Operations menggunakan agen Bindplane.

Airlock IAM adalah solusi pengelolaan akses dan identitas yang menyediakan kemampuan autentikasi, otorisasi, dan layanan mandiri pengguna. Layanan ini menghasilkan log JSON terstruktur untuk peristiwa autentikasi, aktivitas jejak pengguna, log audit, dan tindakan administratif di seluruh modul Loginapp, Adminapp, Persetujuan Transaksi, Service Container, dan API Policy Service.

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 IAM Airlock
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses administratif ke instance Airlock IAM
  • Akses SSH atau konsol ke server Airlock IAM untuk mengedit file konfigurasi

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
    

    Status layanan harus 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
    

    Status layanan harus aktif (berjalan).

Referensi penginstalan tambahan

Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.

Mengonfigurasi agen BindPlane untuk menyerap syslog dan mengirimkannya ke Google SecOps

Cari file konfigurasi

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

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

Edit file konfigurasi

  1. Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/airlock_iam:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                source: airlock_iam
    
    service:
        pipelines:
            logs/airlock_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam
    
  2. Ganti placeholder berikut:

    • Konfigurasi penerima:

      • listen_address: Setel ke 0.0.0.0:514 untuk memproses semua antarmuka di port 51. Untuk sistem Linux yang berjalan sebagai non-root, gunakan port 1514 atau yang lebih tinggi.
    • Konfigurasi pengekspor:

      • 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
      • YOUR_CUSTOMER_ID: Ganti dengan ID pelanggan Google SecOps Anda 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
      • ingestion_labels: Label opsional untuk mengategorikan log (ubah sesuai kebutuhan)

Contoh konfigurasi untuk Windows

  • receivers:
        udplog:
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/airlock_iam:
            compression: gzip
            creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
            customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                source: airlock_iam
    
    service:
        pipelines:
            logs/airlock_to_chronicle:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam
    

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. Temukan 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 penerusan syslog IAM Airlock

  1. Hubungkan ke server IAM Airlock menggunakan SSH atau akses konsol.
  2. Buka direktori instance:

    cd /opt/airlock/iam/instances/<instance_name>/
    
  3. Edit file konfigurasi Log4j untuk semua modul:

    nano log4j/all-modules.xml
    
  4. Tambahkan konfigurasi Syslog appender di bagian <Appenders>:

    <Syslog name="SYSLOG" 
            facility="LOCAL1" 
            host="BINDPLANE_AGENT_IP" 
            port="514" 
            protocol="UDP" 
            format="RFC5424" 
            includeMDC="true" 
            mdcId="mdc" 
            newLine="true">
        <ExceptionPattern>%ex{full}</ExceptionPattern>
        <ThresholdFilter level="INFO"/>
    </Syslog>
    
  5. Konfigurasi parameter appender Syslog:

    • host: Ganti BINDPLANE_AGENT_IP dengan alamat IP host agen BindPlane (misalnya, 192.168.1.100)
    • port: Setel ke 514 (atau 1514 jika agen Bindplane dikonfigurasi untuk port non-privilege)
    • protocol: Tetapkan ke UDP (atau TCP jika Anda mengonfigurasi penerima tcplog di Bindplane)
    • format: Tetapkan ke RFC5424 untuk format syslog terstruktur
    • fasilitas: Setel ke LOCAL1 (atau kode fasilitas lain sesuai kebutuhan: LOCAL0 hingga LOCAL7)
    • Tingkat ThresholdFilter: Setel ke INFO untuk mengirim log dengan tingkat keparahan INFO dan yang lebih tinggi, atau DEBUG untuk semua log
  6. Tambahkan referensi appender di dalam bagian logger <Root>:

    <Loggers>
      <Root level="${sys:iam.log.level}">
        <AppenderRef ref="SYSLOG"/>
      </Root>
    </Loggers>
    
  7. Contoh konfigurasi lengkap:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration name="Custom Log4j 2 Configuration for All IAM Modules">
      <Appenders>
        <Syslog name="SYSLOG" 
                facility="LOCAL1" 
                host="192.168.1.100" 
                port="514" 
                protocol="UDP" 
                format="RFC5424" 
                includeMDC="true" 
                mdcId="mdc" 
                newLine="true">
          <ExceptionPattern>%ex{full}</ExceptionPattern>
          <ThresholdFilter level="INFO"/>
        </Syslog>
      </Appenders>
      <Loggers>
        <Root level="${sys:iam.log.level}">
          <AppenderRef ref="SYSLOG"/>
        </Root>
      </Loggers>
    </Configuration>
    
  8. Simpan file konfigurasi:

    Tekan Ctrl+O, lalu Enter, lalu Ctrl+X

  9. Konfigurasi Log4j dipantau perubahannya setiap 60 detik secara default. Penerusan syslog baru akan diaktifkan secara otomatis tanpa perlu memulai ulang.

  10. Pastikan log dikirim ke agen Bindplane:

    sudo journalctl -u observiq-otel-collector -f
    
  11. Pastikan log tiba di Google SecOps:

    1. Login ke konsol Google SecOps.
    2. Buka SIEM > Penelusuran.
    3. Menjalankan kueri penelusuran:

      metadata.log_type = "ERGON_INFORMATIK_AIRLOCK_IAM"
      
    4. Pastikan log Airlock IAM muncul di hasil penelusuran.

Opsi konfigurasi tambahan

Mengonfigurasi syslog TCP, bukan UDP

Jika Anda lebih memilih pengiriman TCP daripada UDP:

  1. Dalam file config.yaml agen Bindplane, ubah penerima menjadi tcplog:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
  2. Dalam file log4j/all-modules.xml Airlock IAM, ubah protokol menjadi TCP:

    <Syslog name="SYSLOG" 
            facility="LOCAL1" 
            host="192.168.1.100" 
            port="514" 
            protocol="TCP" 
            format="RFC5424" 
            includeMDC="true" 
            mdcId="mdc" 
            newLine="true">
      <ExceptionPattern>%ex{full}</ExceptionPattern>
      <ThresholdFilter level="INFO"/>
    </Syslog>
    
  3. Mulai ulang agen Bindplane untuk menerapkan perubahan penerima.

Mengonfigurasi berbagai level log

  • Untuk mengirim hanya log dengan tingkat keparahan WARNING dan yang lebih tinggi:

    <ThresholdFilter level="WARN"/>
    
  • Untuk mengirim semua log termasuk DEBUG:

    <ThresholdFilter level="DEBUG"/>
    

Level log yang tersedia, dari tingkat keparahan terendah hingga tertinggi:

  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL

Mengonfigurasi beberapa instance IAM Airlock

  • Jika Anda memiliki beberapa instance Airlock IAM yang mengirim ke agen Bindplane yang sama, gunakan label penyerapan untuk membedakannya:

    exporters:
        chronicle/airlock_iam_prod:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: production
                instance: prod-iam-01
    
        chronicle/airlock_iam_dev:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: 'YOUR_CUSTOMER_ID'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: ERGON_INFORMATIK_AIRLOCK_IAM
            raw_log_field: body
            ingestion_labels:
                env: development
                instance: dev-iam-01
    
    service:
        pipelines:
            logs/airlock_prod:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam_prod
    
            logs/airlock_dev:
                receivers:
                    - udplog
                exporters:
                    - chronicle/airlock_iam_dev
    

Pemecahan masalah

Log tidak muncul di Google SecOps

  1. Pastikan agen Bindplane menerima log:

    sudo journalctl -u observiq-otel-collector -f
    
  2. Periksa konektivitas jaringan dari Airlock IAM ke agen Bindplane:

    telnet BINDPLANE_AGENT_IP 514
    
  3. Verifikasi bahwa konfigurasi Log4j valid:

    cat /opt/airlock/iam/instances/<instance_name>/log4j/all-modules.xml
    
  4. Periksa log IAM Airlock untuk mengetahui error:

    tail -f /opt/airlock/iam/instances/<instance_name>/logs/loginapp.log
    

Error agen BindPlane

  1. Periksa log agen BindPlane untuk mengetahui error:

    sudo journalctl -u observiq-otel-collector -n 100
    
  2. Pastikan sintaksis config.yaml sudah benar. YAML peka terhadap indentasi.

  3. Pastikan jalur file autentikasi penyerapan sudah benar dan file tersebut ada.

  4. Uji konektivitas jaringan ke endpoint Google SecOps:

    curl -v https://malachiteingestion-pa.googleapis.com
    

Konfigurasi firewall

Pastikan aturan firewall berikut dikonfigurasi:

Agen masuk ke Bindplane:

  • Protokol: UDP (atau TCP jika menggunakan tcplog)
  • Port: 514 (atau port yang Anda konfigurasi)
  • Sumber: Alamat IP server Airlock IAM

Keluar dari agen Bindplane:

  • Protokol: HTTPS (TCP 443)
  • Tujuan: Endpoint regional Google SecOps
  • Tujuan: Pengiriman log ke Google SecOps

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
expire_time additional.fields Digabungkan sebagai label dengan kunci "expire_time" jika tidak kosong
mobile additional.fields Digabungkan sebagai label dengan kunci "mobile" jika tidak kosong
sn additional.fields Digabungkan sebagai label dengan kunci "sn" jika tidak kosong
CONFIG_CONTEXT additional.fields Digabungkan sebagai label dengan kunci "CONFIG_CONTEXT" jika tidak kosong
department additional.fields Digabungkan sebagai label dengan kunci "department" jika tidak kosong
ctxData additional.fields Digabungkan sebagai label dengan kunci "ctxData" jika tidak kosong
displayLanguage additional.fields Digabungkan sebagai label dengan kunci "displayLanguage" jika tidak kosong
nrPwdTrialsForUserDeletion additional.fields Digabungkan sebagai label dengan kunci "nrPwdTrialsForUserDeletion" jika tidak kosong
authInstant additional.fields Digabungkan sebagai label dengan kunci "authInstant" jika tidak kosong
auditToken additional.fields Digabungkan sebagai label dengan kunci "auditToken" jika tidak kosong
authPlugin additional.fields Digabungkan sebagai label dengan kunci "authPlugin" jika tidak kosong
latestIdPropagation additional.fields Digabungkan sebagai label dengan kunci "latestIdPropagation" jika tidak kosong
pelanggan additional.fields Digabungkan sebagai label dengan kunci "service" jika tidak kosong
ldap_type additional.fields Digabungkan sebagai label dengan kunci "ldap_type" jika tidak kosong
report_message additional.fields Digabungkan sebagai label dengan kunci "report_message" jika tidak kosong
authenteeProvidedId additional.fields Digabungkan sebagai label dengan kunci "authenteeProvidedId" jika tidak kosong
representerId additional.fields Digabungkan sebagai label dengan kunci "representerId" jika tidak kosong
mesin additional.fields Digabungkan sebagai label dengan kunci "engine" jika tidak kosong
channel additional.fields Digabungkan sebagai label dengan kunci "channel" jika tidak kosong
authnFactor additional.fields Digabungkan sebagai label dengan kunci "authnFactor" jika tidak kosong
authnFactorDetail additional.fields Digabungkan sebagai label dengan kunci "authnFactorDetail" jika tidak kosong
required_roles additional.fields Digabungkan sebagai label dengan kunci "required_roles" jika tidak kosong
target_pattern additional.fields Digabungkan sebagai label dengan kunci "target_pattern" jika tidak kosong
nameid additional.fields Digabungkan sebagai label dengan kunci "nameid" jika tidak kosong
plugin_name additional.fields Digabungkan sebagai label dengan kunci "plugin_name" jika tidak kosong
mekanisme additional.fields Digabungkan sebagai label dengan kunci "mechanism" jika tidak kosong
new_session_id additional.fields Digabungkan sebagai label dengan kunci "new_session_id" jika tidak kosong
former_session_id additional.fields Digabungkan sebagai label dengan kunci "former_session_id" jika tidak kosong
req_id additional.fields Digabungkan sebagai label dengan kunci "req_id" jika tidak kosong
auth_method additional.fields Digabungkan sebagai label dengan kunci "auth_method" jika tidak kosong
otp additional.fields Digabungkan sebagai label dengan kunci "otp" jika tidak kosong
mob_num additional.fields Digabungkan sebagai label dengan kunci "mob_num" jika tidak kosong
jsessionid additional.fields Digabungkan sebagai label dengan kunci "jsessionid" jika tidak kosong
creationDate additional.fields Digabungkan sebagai label dengan kunci "creationDate" jika tidak kosong
lastLogin additional.fields Digabungkan sebagai label dengan kunci "lastLogin" jika tidak kosong
accountStatus additional.fields Digabungkan sebagai label dengan kunci "accountStatus" jika tidak kosong
companyAdministrator additional.fields Digabungkan sebagai label dengan kunci "companyAdministrator" jika tidak kosong
companyCustomer additional.fields Digabungkan sebagai label dengan kunci "companyCustomer" jika tidak kosong
privateCustomer additional.fields Digabungkan sebagai label dengan kunci "privateCustomer" jika tidak kosong
otpNotifyChannel additional.fields Digabungkan sebagai label dengan kunci "otpNotifyChannel" jika tidak kosong
nas_identifier additional.fields Digabungkan sebagai label dengan kunci "nas_identifier" jika tidak kosong
session_id additional.fields Digabungkan sebagai label dengan kunci "session_id" jika tidak kosong
authPluginClassName extensions.auth.auth_details Nilai disalin langsung jika ada
authenticator_type extensions.auth.auth_details Nilai disalin langsung jika ada dan authPluginClassName kosong
logon_type extensions.auth.mechanism Nilai disalin secara langsung
T/A perantara Digabungkan dari objek perantara
FORWARD_LOCATION intermediary.url Nilai disalin secara langsung
metadata_description metadata.description Nilai disalin secara langsung
T/A metadata.event_type Ditetapkan berdasarkan konteks peristiwa; ditentukan oleh logika parser
REQUEST_ID metadata.product_log_id Nilai disalin secara langsung
airlock_version metadata.product_version Nilai disalin secara langsung
metode network.http.method Nilai disalin secara langsung
user_agent network.http.user_agent Nilai disalin secara langsung
packet_size network.received_packets Nilai dikonversi menjadi bilangan bulat
GSID network.session_id Nilai disalin secara langsung
host principal.hostname Nilai disalin secara langsung
CLIENT_IP principal.ip Nilai disalin secara langsung
UID principal.user.userid Nilai disalin secara langsung
role_name role.name Nilai disalin secara langsung
authenteeType role.type Nilai disalin secara langsung
T/A security_result Digabungkan dari objek security_result
tindakan security_result.action_details Nilai disalin langsung jika ada
authMethodShortDesc security_result.action_details Nilai digabungkan jika ada
action_detail security_result.action_details Nilai digabungkan jika ada
category_value security_result.category Nilai disalin secara langsung
actionGroup security_result.category_details Nilai disalin secara langsung
result_description security_result.description Nilai disalin secara langsung
pengecualian security_result.summary Nilai disalin langsung jika ada
STATLOG security_result.summary Nilai disalin langsung jika ada dan pengecualian kosong
mob_num src.asset.type Nilai disalin secara langsung
mail src.email Nilai disalin langsung jika ada
email src.email Nilai disalin langsung jika ada dan email kosong
src_ip src.ip Nilai disalin secara langsung
src_port src.port Nilai dikonversi menjadi bilangan bulat
peran src.user.attribute.roles Nilai disalin secara langsung
perusahaan src.user.company_name Nilai disalin secara langsung
firstName src.user.first_name Nilai disalin secara langsung
lastName src.user.last_name Nilai disalin secara langsung
status src.user.user_authentication_status Nilai disalin secara langsung
displayName src.user.user_display_name Nilai disalin langsung jika ada
nama pengguna src.user.user_display_name Nilai disalin langsung jika ada dan displayName kosong
src_user src.user.user_display_name Nilai disalin langsung jika ada dan displayName/username kosong
authenteeId src.user.userid Nilai disalin langsung jika ada
src_userid src.user.userid Nilai disalin secara langsung jika ada dan authenteeId kosong
UID src.user.userid Nilai disalin langsung jika ada dan authenteeId/src_userid kosong
file_path target.file.full_path Nilai disalin secara langsung
target_hostname target.hostname Nilai disalin secara langsung
target_port target.port Nilai dikonversi menjadi bilangan bulat
task_name target.resource.name Nilai disalin secara langsung
target_url target.url Nilai disalin secara langsung
T/A metadata.product_name Disetel ke "Ergon Informatik Airlock IAM"
T/A metadata.vendor_name Ditetapkan ke "Ergon Informatik"

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