Mengumpulkan log audit Tanium
Dokumen ini menjelaskan cara menyerap log audit Tanium ke Google Security Operations menggunakan Amazon S3 dengan kemampuan ekspor S3 native Tanium Connect. Parser mengekstrak log, yang awalnya menghapus banyak kolom default. Kemudian, pesan log diuraikan menggunakan grok dan filter json, dengan mengekstrak kolom seperti stempel waktu, IP perangkat, dan detail audit. Parser memetakan kolom yang diekstrak ini ke UDM, menangani berbagai jenis data dan logika bersyarat untuk mengisi kolom UDM yang sesuai berdasarkan keberadaan dan nilai atribut log audit Tanium tertentu.
Sebelum memulai
Pastikan Anda memenuhi prasyarat berikut:
- Instance Google SecOps
- Akses istimewa ke Tanium Connect dan Tanium Console
- Akses istimewa ke AWS (S3, IAM)
Buat bucket Amazon S3
- Buka konsol Amazon S3.
- Jika diperlukan, Anda dapat mengubah Wilayah.
- Dari panel navigasi, pilih Region tempat Anda ingin Tanium Audit logs berada.
- Klik Create Bucket.
- Nama Bucket: Masukkan nama yang bermakna untuk bucket (misalnya,
tanium-audit-logs
). - Region: Pilih Region pilihan Anda (misalnya,
us-east-1
). - Klik Buat.
- Nama Bucket: Masukkan nama yang bermakna untuk bucket (misalnya,
Buat pengguna IAM dengan akses penuh ke Amazon S3
- Buka IAM console.
- Klik Pengguna > Tambahkan pengguna.
- Masukkan nama pengguna (misalnya,
tanium-connect-s3-user
). - Pilih Akses terprogram dan/atau Akses AWS Management Console sesuai kebutuhan.
- Pilih Sandi yang dibuat otomatis atau Sandi kustom.
- Klik Berikutnya: Izin.
- Pilih Lampirkan kebijakan yang ada secara langsung.
- Cari dan pilih kebijakan AmazonS3FullAccess untuk pengguna.
- Klik Berikutnya: Tanda.
- Klik Berikutnya: Tinjau.
- Klik Buat pengguna.
- Salin dan simpan ID Kunci Akses dan Kunci Akses Rahasia untuk referensi di masa mendatang.
Mengonfigurasi izin pada bucket Amazon S3
- Di Amazon S3 console, pilih bucket yang Anda buat sebelumnya.
- Klik Izin > Kebijakan bucket.
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_ID
menjadi ID akun AWS Anda. - Ubah
tanium-audit-logs
menjadi nama bucket Anda yang sebenarnya jika berbeda. - Ubah
tanium-connect-s3-user
menjadi 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:
- Nama: Masukkan nama deskriptif (misalnya,
Tanium Audit to S3
). - Deskripsi: Masukkan deskripsi yang bermakna (misalnya,
Export Tanium audit logs to S3 for Google SecOps ingestion
). - Aktifkan: Pilih untuk mengaktifkan koneksi.
- Tingkat Log: Pilih Informasi (default) atau sesuaikan sesuai kebutuhan.
- Nama: Masukkan nama deskriptif (misalnya,
Mengonfigurasi sumber koneksi
- Di bagian Configuration, untuk Source, pilih Tanium Audit.
- Konfigurasi setelan sumber audit:
- Hari Data Historis yang Diambil: Masukkan jumlah hari data audit historis yang akan diambil (misalnya,
7
untuk satu minggu). - Jenis Audit: Pilih jenis audit yang ingin Anda ekspor. Pilih dari:
- Histori Tindakan: Tindakan yang dikeluarkan oleh operator konsol.
- Authentication: 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.
- Hari Data Historis yang Diambil: 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
). - Kunci Akses AWS: Masukkan ID Kunci Akses dari pengguna IAM yang dibuat sebelumnya.
- AWS Secret Key: Masukkan Kunci Akses Rahasia dari pengguna IAM yang dibuat sebelumnya.
- Nama Bucket: 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:
- Jenis Format: Pilih JSON.
- Sertakan Header Kolom: Pilih apakah Anda ingin menyertakan header kolom.
- Buat Dokumen: Batalkan pilihan opsi ini untuk mengirim data JSON mentah.
- Di bagian Schedule, konfigurasikan kapan koneksi berjalan:
- Jenis Jadwal: Pilih Cron.
- Ekspresi Cron: 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 Connect Overview, buka Connections.
- Klik koneksi yang Anda buat (Tanium Audit to S3).
- Klik Jalankan Sekarang untuk menguji koneksi.
- Konfirmasi bahwa Anda ingin menjalankan koneksi.
- Pantau status koneksi dan verifikasi bahwa log audit diekspor ke bucket S3 Anda.
Opsional: Buat pengguna & kunci IAM hanya baca untuk Google SecOps
- Buka Konsol AWS > IAM > Pengguna > Tambahkan pengguna.
- Klik Add users.
- Berikan detail konfigurasi berikut:
- Pengguna: Masukkan
secops-reader
. - Jenis akses: Pilih Kunci akses – Akses terprogram.
- Pengguna: Masukkan
- Klik Buat pengguna.
- Lampirkan kebijakan baca minimal (kustom): Pengguna > secops-reader > Izin > Tambahkan izin > Lampirkan kebijakan secara langsung > Buat kebijakan.
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 Buat kebijakan > cari/pilih > Berikutnya > Tambahkan izin.
Buka Kredensial keamanan > Kunci akses > Buat kunci akses.
Download CSV (nilai ini dimasukkan ke dalam feed).
Mengonfigurasi feed di Google SecOps untuk menyerap log Audit Tanium
- Buka Setelan SIEM > Feed.
- 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 Jenis log.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- URI S3:
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: Menyertakan file yang diubah dalam jumlah hari terakhir. Defaultnya adalah 180 hari.
- ID Kunci Akses: Kunci akses pengguna dengan akses ke bucket S3 (dari pengguna hanya baca yang dibuat di atas).
- Kunci Akses Rahasia: 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.
- URI S3:
- Klik Berikutnya.
- Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.
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 parsing 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 , diawali dengan "Host ID:". |
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 |
Diparsing 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". Dikodekan secara permanen ke "TANIUM_AUDIT". Dikodekan secara permanen ke "cybersecurity". Dikodekan secara permanen 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 "TINGGI" jika syslog_severity adalah "error" atau "warning", "SEDANG" jika "notice", "RENDAH" jika "information" atau "info". |
syslog_severity |
security_result.severity_details |
Dipetakan langsung dari kolom syslog_severity . |
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.