Membangun mata di cloud: CloudTrail management vs data events, GuardDuty sebagai threat detection, VPC Flow Logs, sentralisasi log ke akun logging, integrasi SIEM, dan menulis detection rule pertama kalian dengan Athena untuk menangkap aktivitas mencurigakan seperti console login tanpa MFA

Setelah di episode 7 kita membangun CSPM — mesin yang mengawasi postur (konfigurasi statis) — ada kelas ancaman lain yang tidak terlihat dari konfigurasi: perilaku. Kredensial yang dicuri dipakai pada jam 3 pagi, role yang diasumsikan dari ASN asing, instance yang tiba-tiba mining crypto. Mengawasi perilaku inilah tugas threat detection.
Mengapa episode ini penting? Karena rata-rata waktu untuk menyadari adanya breach masih dihitung mingguan, bukan menit. Selisih antara deteksi hari-0 dan hari-30 adalah selisih antara satu insiden kecil dan headline berita. Sebagai Cloud Security Engineer, sistem deteksi adalah produk utama kalian.
Deteksi hanya sebaik sumber datanya. Empat lapisan minimum di AWS:
| Sumber | Menangkap Apa | Catatan Biaya |
|---|---|---|
| CloudTrail management events | Semua API call control plane (CreateUser, RunInstances) | Copy pertama gratis per akun |
| CloudTrail data events | Akses objek S3, invoke Lambda | Berat — aktifkan selektif per bucket kritikal |
| VPC Flow Logs | Metadata trafik jaringan (siapa-ke-siapa, port) | Volume tinggi; simpan parquet + partisi |
| DNS query logs | Resolusi domain mencurigakan/C2 | Sering dilupakan; emas untuk hunting |
Prinsip penting: management events adalah non-negotiable — tanpa itu, insiden tidak bisa direkonstruksi sama sekali.
Log di akun yang sama dengan workload adalah masalah: penyerang yang menguasai akun bisa mematikan lognya sendiri. Pola yang benar: organizational trail yang ditujukan ke bucket di akun logging terpisah, dengan Object Lock (WORM) agar log tidak bisa dihapus bahkan oleh admin akun asal.
aws cloudtrail create-trail \
--name org-trail \
--bucket-name acme-security-logs \
--is-multi-region-trail \
--is-organization-trail \
--enable-log-file-validation
aws cloudtrail start-logging --name org-trailDi akun logging, kunci bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailWrite",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::acme-security-logs/AWSLogs/*",
"Condition": {"StringEquals": {"s3:x-amz-acl": "bucket-owner-full-control"}}
},
{
"Sid": "NoDeleteForAnyone",
"Effect": "Deny",
"Principal": "*",
"Action": ["s3:DeleteObject", "s3:PutBucketPolicy"],
"Resource": ["arn:aws:s3:::acme-security-logs/*"]
}
]
}Pola serupa berlaku di GCP (log sink ke project terpisah) dan Azure (Diagnostic Settings → Log Analytics workspace dedikasi).
GuardDuty menganalisis CloudTrail, Flow Logs, dan DNS logs dengan machine learning + intel threat feed, lalu menghasilkan finding siap-pakai: crypto mining, credential exfiltration, reconnaissance IAM, EC2 malicious IP. Untuk tim kecil-menengah, ini ROI tertinggi di security cloud — aktifkan di level organization:
aws guardduty create-detector --enable --features '[
{"Name":"S3_DATA_EVENTS","Status":"ENABLED"},
{"Name":"EKS_AUDIT_LOGS","Status":"ENABLED"},
{"Name":"RDS_LOGIN_EVENTS","Status":"ENABLED"}
]'Finding GuardDuty formatnya standar (OCSF), sehingga mudah dikirim ke SIEM atau EventBridge untuk otomasi. Jangan lupa: GuardDuty mendeteksi, bukan mencegah — ia butuh jalur respons (episode 9).
Kapan butuh SIEM eksternal? Ketika kalian perlu korelasi lintas sumber (cloud + on-prem + aplikasi), retensi panjang murah, atau tim SOC sudah bekerja di sana. Pilihan umum:
Aturan arsitektur: raw logs tetap di cloud storage murah (S3 + Object Lock); SIEM mengindeks salinan untuk pencarian cepat. Dengan begitu biaya SIEM tidak meledak oleh volume Flow Logs, tetapi evidence forensik tetap lengkap.
Mari tulis deteksi klasik: konsol login sukses tanpa MFA — sinyal kuat sesi dicuri atau MFA dimatikan diam-diam.
Aktifkan dulu integrasi CloudTrail → Athena (via Glue table), lalu:
SELECT
eventtime,
useridentity.username AS who,
sourceipaddress AS from_ip
FROM cloudtrail_logs_org_trail
WHERE eventname = 'ConsoleLogin'
AND eventtime >= date_add('day', -1, now())
AND json_extract_scalar(additionaleventdata, '$.MFAUsed') = 'No'
ORDER BY eventtime DESC;Jika tabel belum ada, buat via konsol "Create Athena table" dari trail, atau gunakan IaC. Jadikan query ini scheduled (EventBridge Scheduler → Athena → SNS saat ada hasil) dan kalian punya detection rule produksi pertama — tanpa SIEM sekalipun.
Tip
Mulai koleksi query detection kalian di repo Git: setiap query diberi nama teknik MITRE ATT&CK yang dideteksi. Repo ini nanti menjadi fondasi episode 24 tentang detection engineering.
Detection yang buruk lebih merusak daripada tidak ada deteksi: alert fatigue membuat tim mati rasa. Prinsip desainnya:
RootLogin sukses (kepastian tinggi, prioritas maksimum).Inti yang harus dibawa pulang:
Di episode 9 selanjutnya kita latih momen paling kritis: cloud incident response — siklus IR, forensik snapshot tanpa merusak evidence, containment identitas, dan walkthrough skenario kredensial bocor. Sampai jumpa!