Mengumpulkan log IAM Ergon Informatik Airlock
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
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
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
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collectorStatus layanan harus RUNNING.
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sudo systemctl status observiq-otel-collectorStatus 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.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edit file konfigurasi
Ganti seluruh konten
config.yamldengan 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_iamGanti placeholder berikut:
Konfigurasi penerima:
listen_address: Setel ke0.0.0.0:514untuk memproses semua antarmuka di port 51. Untuk sistem Linux yang berjalan sebagai non-root, gunakan port1514atau 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
- Linux:
YOUR_CUSTOMER_ID: Ganti dengan ID pelanggan Google SecOps Anda dari langkah sebelumnyaendpoint: URL endpoint regional:- Amerika Serikat:
malachiteingestion-pa.googleapis.com - Eropa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com
- Amerika Serikat:
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, laluEnter, laluCtrl+X - Windows: Klik File > Save
Mulai ulang agen Bindplane untuk menerapkan perubahan
Untuk memulai ulang agen Bindplane di Linux:
Jalankan perintah berikut:
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa log untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -f
Untuk memulai ulang agen Bindplane di Windows:
Pilih salah satu opsi berikut:
Command Prompt atau PowerShell sebagai administrator:
net stop observiq-otel-collector && net start observiq-otel-collectorKonsol layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
- Klik kanan, lalu pilih Mulai Ulang.
- Tekan
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Mengonfigurasi penerusan syslog IAM Airlock
- Hubungkan ke server IAM Airlock menggunakan SSH atau akses konsol.
Buka direktori instance:
cd /opt/airlock/iam/instances/<instance_name>/Edit file konfigurasi Log4j untuk semua modul:
nano log4j/all-modules.xmlTambahkan 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>Konfigurasi parameter appender Syslog:
- host: Ganti
BINDPLANE_AGENT_IPdengan alamat IP host agen BindPlane (misalnya,192.168.1.100) - port: Setel ke
514(atau1514jika agen Bindplane dikonfigurasi untuk port non-privilege) - protocol: Tetapkan ke
UDP(atauTCPjika Anda mengonfigurasi penerima tcplog di Bindplane) - format: Tetapkan ke
RFC5424untuk format syslog terstruktur - fasilitas: Setel ke
LOCAL1(atau kode fasilitas lain sesuai kebutuhan:LOCAL0hinggaLOCAL7) - Tingkat ThresholdFilter: Setel ke
INFOuntuk mengirim log dengan tingkat keparahan INFO dan yang lebih tinggi, atauDEBUGuntuk semua log
- host: Ganti
Tambahkan referensi appender di dalam bagian logger
<Root>:<Loggers> <Root level="${sys:iam.log.level}"> <AppenderRef ref="SYSLOG"/> </Root> </Loggers>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>Simpan file konfigurasi:
Tekan
Ctrl+O, laluEnter, laluCtrl+XKonfigurasi Log4j dipantau perubahannya setiap 60 detik secara default. Penerusan syslog baru akan diaktifkan secara otomatis tanpa perlu memulai ulang.
Pastikan log dikirim ke agen Bindplane:
sudo journalctl -u observiq-otel-collector -fPastikan log tiba di Google SecOps:
- Login ke konsol Google SecOps.
- Buka SIEM > Penelusuran.
Menjalankan kueri penelusuran:
metadata.log_type = "ERGON_INFORMATIK_AIRLOCK_IAM"Pastikan log Airlock IAM muncul di hasil penelusuran.
Opsi konfigurasi tambahan
Mengonfigurasi syslog TCP, bukan UDP
Jika Anda lebih memilih pengiriman TCP daripada UDP:
Dalam file
config.yamlagen Bindplane, ubah penerima menjaditcplog:receivers: tcplog: listen_address: "0.0.0.0:514"Dalam file
log4j/all-modules.xmlAirlock IAM, ubah protokol menjadiTCP:<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>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:
TRACEDEBUGINFOWARNERRORFATAL
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
Pastikan agen Bindplane menerima log:
sudo journalctl -u observiq-otel-collector -fPeriksa konektivitas jaringan dari Airlock IAM ke agen Bindplane:
telnet BINDPLANE_AGENT_IP 514Verifikasi bahwa konfigurasi Log4j valid:
cat /opt/airlock/iam/instances/<instance_name>/log4j/all-modules.xmlPeriksa log IAM Airlock untuk mengetahui error:
tail -f /opt/airlock/iam/instances/<instance_name>/logs/loginapp.log
Error agen BindPlane
Periksa log agen BindPlane untuk mengetahui error:
sudo journalctl -u observiq-otel-collector -n 100Pastikan sintaksis
config.yamlsudah benar. YAML peka terhadap indentasi.Pastikan jalur file autentikasi penyerapan sudah benar dan file tersebut ada.
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 |
| src.email | Nilai disalin langsung jika ada | |
| 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.