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 memiliki 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 menu 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 yang Anda inginkan (misalnya,
us-east-1). - Klik Create.
- Nama Bucket: 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 Akses terprogram dan/atau Akses AWS Management Console sesuai kebutuhan.
- Pilih Sandi yang dibuat otomatis atau Sandi kustom.
- Klik Berikutnya: Izin.
- Pilih Attach existing policies directly.
- Cari 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 pada bucket Amazon S3
- Di konsol Amazon S3, 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-userke 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 Informasi Umum, berikan detail konfigurasi berikut:
- Name: 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.
- Log Level: Pilih Information (default) atau sesuaikan sesuai kebutuhan.
- Name: 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,
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.
- Hari Data Historis yang Diambil: Masukkan jumlah hari data audit historis yang akan diambil (misalnya,
Mengonfigurasi tujuan AWS S3
- Untuk Tujuan, pilih AWS S3.
- Berikan detail konfigurasi berikut:
- Nama Tujuan: Masukkan nama (misalnya,
Google SecOps S3 Bucket). - AWS Access Key: Masukkan Access Key ID 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:
- 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 Jadwal, 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 pastikan log audit diekspor ke bucket S3 Anda.
Opsional: Buat 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. - Jenis akses: Pilih Kunci akses – Akses terprogram.
- Pengguna: Masukkan
- Klik Create user.
- 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 Create policy > search/select > Next > Add permissions.
Buka Kredensial keamanan > Kunci akses > Buat kunci akses.
Download CSV (nilai ini dimasukkan ke dalam feed).
Mengonfigurasi feed di Google SecOps untuk memproses 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 Log type.
- Klik Berikutnya.
- Tentukan nilai untuk parameter input berikut:
- URI S3:
s3://tanium-audit-logs/tanium/audit/(sesuaikan jalur jika Anda menggunakan nama bucket atau jalur yang berbeda). - Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda.
- Usia File Maksimum: Menyertakan file yang diubah dalam beberapa 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 kunci-nilai. |
details |
principal.user.attribute.labels[authentication_type].value |
Diekstrak dari kolom details menggunakan penguraian kunci-nilai. |
details |
principal.asset.ip, principal.ip |
Alamat IP diekstrak dari kolom details menggunakan penguraian kunci-nilai 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 |
Diuraikan 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. |
Log Perubahan
Melihat Log Perubahan untuk parser ini
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.