Mengumpulkan log audit Tanium
Dokumen ini menjelaskan cara menyerap log audit Tanium ke Google Security Operations menggunakan Amazon S3 menggunakan kemampuan ekspor S3 native Tanium Connect. Parser mengekstrak log, yang awalnya menghapus banyak kolom default. Kemudian, Logstash mengurai pesan log menggunakan grok dan filter json, mengekstrak kolom seperti stempel waktu, IP perangkat, dan detail audit. Parser memetakan kolom yang diekstrak ini ke UDM, menangani berbagai jenis data dan logika kondisional untuk mengisi kolom UDM yang sesuai berdasarkan keberadaan dan nilai atribut log audit Tanium tertentu.
Sebelum memulai
Pastikan Anda memiliki prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke Tanium Connect dan Tanium Console
- Akses istimewa ke AWS (S3, IAM)
Membuat bucket Amazon S3
- Buka konsol Amazon S3.
- Jika diperlukan, Anda dapat mengubah Region.
- Dari menu navigasi, pilih Region tempat Anda ingin menyimpan log Audit Tanium.
- Klik Create Bucket.
- Bucket Name: Masukkan nama yang bermakna untuk bucket (misalnya,
tanium-audit-logs). - Region: Pilih Region yang Anda inginkan (misalnya,
us-east-1). - Klik Create.
- Bucket Name: Masukkan nama yang bermakna untuk bucket (misalnya,
Membuat pengguna IAM dengan akses penuh ke Amazon S3
- Buka IAM console.
- Klik Pengguna > Tambahkan pengguna.
- Masukkan nama pengguna (misalnya,
tanium-connect-s3-user). - Pilih Programmatic access dan/atau AWS Management Console access sesuai kebutuhan.
- Pilih Sandi yang dibuat otomatis atau Sandi kustom.
- Klik Berikutnya: Izin.
- Pilih Attach existing policies directly.
- Telusuri dan pilih kebijakan AmazonS3FullAccess untuk pengguna.
- Klik Berikutnya: Tanda.
- Klik Berikutnya: Tinjau.
- Klik Create user.
- Salin dan simpan Access Key ID dan Secret Access Key untuk referensi di masa mendatang.
Mengonfigurasi izin di bucket Amazon S3
- Di Amazon S3 console, pilih bucket yang Anda buat sebelumnya.
- Klik Permissions > Bucket policy.
Di Bucket Policy Editor, tambahkan kebijakan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }Ganti variabel berikut:
- Ubah
YOUR_ACCOUNT_IDmenjadi ID akun AWS Anda. - Ubah
tanium-audit-logsmenjadi nama bucket Anda yang sebenarnya jika berbeda. - Ubah
tanium-connect-s3-usermenjadi nama pengguna IAM Anda yang sebenarnya jika berbeda.
- Ubah
Klik Simpan.
Mengonfigurasi Tanium Connect untuk ekspor S3
Membuat koneksi AWS S3 di Tanium Connect
- Login ke Tanium Console sebagai administrator.
- Buka Tanium Connect > Connections.
- Klik Buat Koneksi.
- Di bagian General Information, berikan detail konfigurasi berikut:
- Name: Masukkan nama deskriptif (misalnya,
Tanium Audit to S3). - Description: Masukkan deskripsi yang bermakna (misalnya,
Export Tanium audit logs to S3 for Google SecOps ingestion). - Enable: Pilih untuk mengaktifkan koneksi.
- Log Level: Pilih Information (default) atau sesuaikan seperlunya.
- Name: Masukkan nama deskriptif (misalnya,
Mengonfigurasi sumber koneksi
- Di bagian Configuration, untuk Source, pilih Tanium Audit.
- Konfigurasikan setelan sumber audit:
- Days of History Retrieved: Masukkan jumlah hari data audit historis yang akan diambil (misalnya,
7untuk satu minggu). - Jenis Audit: Pilih jenis audit yang ingin Anda ekspor. Pilih dari:
- Histori Tindakan: Tindakan yang dikeluarkan oleh operator konsol.
- Autentikasi: Peristiwa autentikasi pengguna.
- Konten: Perubahan dan modifikasi konten.
- Grup: Perubahan grup komputer.
- Paket: Aktivitas terkait paket.
- Sensor: Modifikasi sensor.
- Setelan Sistem: Perubahan konfigurasi sistem.
- Pengguna: Aktivitas pengelolaan pengguna.
- Days of History Retrieved: Masukkan jumlah hari data audit historis yang akan diambil (misalnya,
Mengonfigurasi tujuan AWS S3
- Untuk Destination, pilih AWS S3.
- Berikan detail konfigurasi berikut:
- Nama Tujuan: Masukkan nama (misalnya,
Google SecOps S3 Bucket). - AWS Access Key: Masukkan ID Kunci Akses dari pengguna IAM yang dibuat sebelumnya.
- AWS Secret Key: Masukkan Secret Access Key dari pengguna IAM yang dibuat sebelumnya.
- Bucket Name: Masukkan nama bucket S3 Anda (misalnya,
tanium-audit-logs). - Bucket Path: Opsional. Masukkan awalan jalur (misalnya,
tanium/audit/). - Region: Pilih region AWS tempat bucket Anda berada (misalnya,
us-east-1).
- Nama Tujuan: Masukkan nama (misalnya,
Mengonfigurasi format dan jadwal
- Di bagian Format, konfigurasikan format output:
- Format Type: Pilih JSON.
- Sertakan Header Kolom: Pilih jika Anda ingin menyertakan header kolom.
- Generate Document: Batalkan pilihan opsi ini untuk mengirim data JSON mentah.
- Di bagian Schedule, konfigurasikan kapan koneksi akan dijalankan:
- Schedule Type: Pilih Cron.
- Cron Expression: Masukkan ekspresi cron untuk ekspor reguler (misalnya,
0 */1 * * *untuk ekspor per jam). - Tanggal Mulai: Tetapkan tanggal mulai untuk jadwal.
- Klik Simpan Perubahan.
Menguji dan menjalankan koneksi
- Dari halaman Ringkasan Connect, buka Koneksi.
- Klik koneksi yang Anda buat (Tanium Audit to S3).
- Klik Run Now untuk menguji koneksi.
- Konfirmasi bahwa Anda ingin menjalankan koneksi.
- Pantau status koneksi dan pastikan log audit diekspor ke bucket S3 Anda.
Opsional: Membuat pengguna & kunci IAM hanya baca untuk Google SecOps
- Buka AWS Console > IAM > Users > Add users.
- Klik Add users.
- Berikan detail konfigurasi berikut:
- Pengguna: Masukkan
secops-reader. - Access type: Pilih Access key – Programmatic access.
- Pengguna: Masukkan
- Klik Create user.
- Lampirkan kebijakan baca minimal (kustom): Users > secops-reader > Permissions > Add permissions > Attach policies directly > Create policy.
Di editor JSON, masukkan kebijakan berikut:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }Tetapkan nama ke
secops-reader-policy.Buka Create policy > telusuri/pilih > Next > Add permissions.
Buka Security credentials > Access keys > Create access key.
Download CSV (nilai ini dimasukkan ke dalam feed).
Mengonfigurasi feed di Google SecOps untuk menyerap log Tanium Audit
- Buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
- Klik + Tambahkan Feed Baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya,
Tanium Audit logs). - Pilih Amazon S3 V2 sebagai Jenis sumber.
- Pilih Tanium Audit sebagai Log type.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- S3 URI:
s3://tanium-audit-logs/tanium/audit/(sesuaikan jalur jika Anda menggunakan nama atau jalur bucket yang berbeda). - Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
- Usia File Maksimum: Sertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
- Access Key ID: Kunci akses pengguna dengan akses ke bucket S3 (dari pengguna hanya baca yang dibuat di atas).
- Secret Access Key: Kunci rahasia pengguna dengan akses ke bucket S3 (dari pengguna hanya baca yang dibuat di atas).
- Namespace aset: Namespace aset.
- Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.
- S3 URI:
- Klik Berikutnya.
- Tinjau konfigurasi feed berita baru Anda di layar Finalize, lalu klik Submit.
Tabel Pemetaan UDM
| Kolom Log | Pemetaan UDM | Logika |
|---|---|---|
ActionId |
metadata.product_log_id |
Dipetakan langsung dari kolom ActionId. |
ActionName |
security_result.action_details |
Dipetakan langsung dari kolom ActionName. |
Approver |
additional.fields[Approver].value.string_value |
Dipetakan langsung dari kolom Approver. |
Approver |
principal.user.userid |
Dipetakan dari kolom Approver jika Issuer tidak ada. |
audit_name |
metadata.description |
Dipetakan langsung dari kolom audit_name. |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
Dipetakan langsung dari kolom audit_row_id. |
audit_type |
additional.fields[audit_type].value.string_value |
Dipetakan langsung dari kolom audit_type. |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
Dipetakan langsung dari kolom authentication_type yang diekstrak dari kolom details. |
Command |
principal.process.command_line |
Dipetakan langsung dari kolom Command setelah decoding URL. |
creation_time |
target.resource.attribute.creation_time |
Dipetakan langsung dari kolom creation_time. |
details |
network.session_id |
Diekstrak dari kolom details menggunakan penguraian nilai kunci. |
details |
principal.user.attribute.labels[authentication_type].value |
Diekstrak dari kolom details menggunakan penguraian nilai kunci. |
details |
principal.asset.ip, principal.ip |
Alamat IP diekstrak dari kolom details menggunakan penguraian nilai kunci dan dipetakan ke principal.asset.ip dan principal.ip. |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
Dipetakan langsung dari kolom DistributeOver. |
dvc_ip |
intermediary.hostname |
Dipetakan langsung dari kolom dvc_ip yang diekstrak dari pesan syslog. |
dvc_ip |
observer.ip |
Dipetakan langsung dari kolom dvc_ip jika logstash.collect.host tidak ada. |
Expiration |
additional.fields[Expiration].value.string_value |
Dipetakan langsung dari kolom Expiration. |
host.architecture |
target.asset.hardware.cpu_platform |
Dipetakan langsung dari kolom host.architecture. |
host.id |
target.asset.asset_id |
Dipetakan langsung dari kolom host.id, dengan awalan "ID Host:". |
host.ip |
target.ip |
Dipetakan langsung dari kolom host.ip. |
host.mac |
target.mac |
Dipetakan langsung dari kolom host.mac. |
host.name |
target.hostname |
Dipetakan langsung dari kolom host.name jika host.hostname tidak ada. |
host.os.kernel |
target.platform_patch_level |
Dipetakan langsung dari kolom host.os.kernel. |
host.os.name |
additional.fields[os_name].value.string_value |
Dipetakan langsung dari kolom host.os.name. |
host.os.version |
target.platform_version |
Dipetakan langsung dari kolom host.os.version. |
InsertTime |
additional.fields[InsertTime].value.string_value |
Dipetakan langsung dari kolom InsertTime. |
Issuer |
additional.fields[Issuer].value.string_value |
Dipetakan langsung dari kolom Issuer. |
Issuer |
principal.user.userid |
Dipetakan langsung dari kolom Issuer jika ada. |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
Dipetakan langsung dari kolom last_modified_by. |
log.source.address |
principal.ip |
Alamat IP diekstrak dari kolom log.source.address dan dipetakan ke principal.ip. |
log.source.address |
principal.port |
Port diekstrak dari kolom log.source.address. |
logstash.collect.host |
observer.ip |
Dipetakan langsung dari kolom logstash.collect.host jika ada. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Dipetakan langsung dari kolom logstash.collect.timestamp. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Dipetakan langsung dari kolom logstash.ingest.timestamp. |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Dipetakan langsung dari kolom logstash.irm_environment. |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Dipetakan langsung dari kolom logstash.irm_region. |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Dipetakan langsung dari kolom logstash.irm_site. |
logstash.process.host |
intermediary.hostname |
Dipetakan langsung dari kolom logstash.process.host. |
message |
dvc_ip, json_data, timestamp |
Diurai menggunakan grok untuk mengekstrak dvc_ip, json_data, dan timestamp. |
modification_time |
target.resource.attribute.last_update_time |
Dipetakan langsung dari kolom modification_time. |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
Dipetakan langsung dari kolom modifier_user_id. |
object_id |
target.resource.product_object_id |
Dipetakan langsung dari kolom object_id. |
object_name |
target.resource.name |
Dipetakan langsung dari kolom object_name. |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
Dipetakan langsung dari kolom object_type_name. |
PackageName |
additional.fields[PackageName].value.string_value |
Dipetakan langsung dari kolom PackageName. |
SourceId |
additional.fields[SourceId].value.string_value |
Dipetakan langsung dari kolom SourceId. |
StartTime |
additional.fields[StartTime].value.string_value |
Dipetakan langsung dari kolom StartTime. |
Status |
security_result.action |
Dipetakan ke "BLOCK" jika Status adalah "Closed", "ALLOW" jika Status adalah "Open". |
Status |
security_result.summary |
Dipetakan langsung dari kolom Status. |
tanium_audit_type |
metadata.product_event_type |
Dipetakan langsung dari kolom tanium_audit_type. |
timestamp |
metadata.event_timestamp |
Dipetakan langsung dari kolom timestamp yang diekstrak dari pesan syslog atau kolom message. |
type |
additional.fields[type].value.string_value |
Dipetakan langsung dari kolom type. |
type_name |
metadata.product_event_type |
Dipetakan langsung dari kolom type_name. |
User |
principal.user.userid |
Dipetakan langsung dari kolom User. Ditentukan oleh logika parser berdasarkan keberadaan src_ip, has_target, dan has_user. Dapat berupa "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE", atau "GENERIC_EVENT". Dihardcode ke "TANIUM_AUDIT". Diprogram secara permanen ke "cybersecurity". Dihardcode ke "TANIUM_AUDIT". |
@version |
metadata.product_version |
Dipetakan langsung dari kolom @version. |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
Dipetakan langsung dari kolom agent.ephemeral_id. |
agent.id |
observer.asset_id |
Dipetakan langsung dari kolom agent.id, dengan awalan "filebeat:". |
agent.type |
observer.application |
Dipetakan langsung dari kolom agent.type. |
agent.version |
observer.platform_version |
Dipetakan langsung dari kolom agent.version. |
Comment |
security_result.description |
Dipetakan langsung dari kolom Comment. |
host.hostname |
target.hostname |
Dipetakan langsung dari kolom host.hostname jika ada. |
input.type |
network.ip_protocol |
Dipetakan ke "TCP" jika input.type adalah "tcp" atau "TCP". |
syslog_severity |
security_result.severity |
Dipetakan ke "HIGH" jika syslog_severity adalah "error" atau "warning", "MEDIUM" jika "notice", "LOW" jika "information" atau "info". |
syslog_severity |
security_result.severity_details |
Dipetakan langsung dari kolom syslog_severity. |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.