Keamanan dalam Praktik
Saya memperlakukan keamanan sebagai bagian dari desain, bukan checklist di akhir: tidak ada key yang bisa bocor, akses sekecil mungkin yang tetap berfungsi, dan gate yang berjalan di setiap perubahan. Berikut hasil terukurnya.
15 dari 37
Temuan keamanan terbuka di aplikasi AI produksi dalam sekitar dua hari, dari 4 Critical dan 8 High di awal
Hari yang sama
Key database yang bocor ditangani: semua key dirotasi dan key lama mengembalikan 401; layanan menjadi keyless dalam 24 jam
1 hari
Untuk menerapkan rilis keamanan Node.js Oktober 2026 di 12 repositori
Cara saya mengamankan aplikasi
Lima kebiasaan yang muncul di setiap proyek, dari portofolio publik hingga produk AI enterprise.
- 1
Keyless sebagai default
Aplikasi masuk ke layanan cloud dengan managed identity, bukan API key. Jika file konfigurasi bocor, tidak ada akses yang ikut bocor, dan tidak ada key yang perlu dirotasi.
- 2
Least privilege
Setiap identitas hanya mendapat role data-plane yang dibutuhkan. Hak admin berasal dari allow-list berdasarkan object ID di direktori, bukan dari alamat email atau sekadar login.
- 3
Pertahanan berlapis untuk fitur LLM
Dokumen yang tidak tepercaya dibungkus delimiter, disaring Prompt Shields, dan harus cocok dengan output schema yang ketat. Jika pemeriksaan keamanan tidak berjalan, pipeline gagal secara tertutup (fail closed).
- 4
Security gate di CI
Secret scanning, audit dependensi, analisis statis, dan action yang di-pin berjalan di setiap pull request, sehingga masalah tertangkap sebelum merge, bukan setelah rilis.
- 5
Pulih dengan cepat
Secret disimpan di vault dengan runbook rotasi tertulis, sehingga kebocoran ditangani di hari yang sama dan perbaikannya diverifikasi, bukan sekadar diasumsikan.
Azure tanpa key
Data plane AI, database, messaging, dan storage pada produk AI enterprise, dipindahkan dari API key ke managed identity.
7 repositori
Dimigrasikan dari API key ke managed identity, setiap perpindahan tercatat di commit-nya
6 repositori
Sepenuhnya keyless di infrastructure as code yang dirilis: autentikasi key lokal dimatikan untuk layanan AI, database, messaging, dan storage
3 repositori
Deploy dari CI hanya melalui federasi GitHub OIDC, tanpa secret cloud yang disimpan di pipeline
Menolak berjalan
Di produksi, aplikasi menolak berjalan jika masih ada pengaturan key yang tersisa
Alur tanpa key
- Key Vault dalam mode RBAC dengan purge protection; setiap pengaturan non-platform adalah referensi vault, dan aplikasi gagal secara tertutup jika referensi tidak terbaca.
- Pipeline rilis memublikasikan tanpa role Azure apa pun: token push registry yang terbatas dan tautan tulis yang terikat policy, dengan rilis yang ditandatangani lewat OIDC.
- Aplikasi web menjaga batas minimum TLS 1.2 dengan publikasi FTP dan basic auth dimatikan, dicek saat build dan dibaca ulang dari aplikasi yang berjalan.
Keamanan AI dan LLM
Fitur LLM membaca teks yang tidak tepercaya, jadi fitur ini punya test sendiri dan diukur seperti hasil lainnya.
98.3% menjadi 100%
Deteksi prompt injection pada test suite 96 kasus berbahasa Inggris dan Indonesia, dijalankan di setiap pull request
Dari 58 menjadi 59 dari 59 kasus injection yang tertangkap, pada file PDF, Word, Excel, CSV, teks, dan gambar; set evaluasi sintetis, bukan trafik produksi.
29 menjadi 5
Analisis file unggahan, dari 98, yang berjalan tanpa penyaringan keamanan, setelah pipeline dibuat gagal secara tertutup
Jika content filter atau Prompt Shields tidak berjalan, tingkat risiko dinaikkan dan jalan pintas AI dimatikan.
11.1% menjadi 3.7%
Tingkat keberhasilan prompt injection pada evaluasi live, bukan produksi
Evaluasi live setelah pergantian model pada review fraud dokumen berbasis AI; ini hasil evaluasi, bukan hasil produksi.
Produk keamanan
Selain mengamankan pekerjaan saya sendiri, saya membangun tool yang menemukan dan memperbaiki kerentanan untuk tim lain.
Platform Keamanan Kode Berbasis AI
Tujuh scanner di setiap pull request, triage dengan AI, dan pull request perbaikan yang ditolak jika mencoba membungkam scanner. Repositori yang tidak tepercaya di-scan di dalam sandbox.
Otomasi Pemindaian Kerentanan
Scan kerentanan terjadwal, kepemilikan aset, dan laporan remediasi, sehingga setiap temuan sampai ke tim pemilik aset.
Insiden yang ditangani
Diceritakan tanpa nama klien, nama layanan, atau tanggal yang lebih rinci dari bulan.
Key lama: 401
Key database yang bocor ditangani di hari yang sama
Keempat key dirotasi, kesembilan pengaturan kredensial dipindahkan ke referensi vault, dan backend dikunci hanya untuk pemanggil yang dikenal. Database menjadi keyless keesokan harinya.
Okt 2026
201 menjadi 403
Celah eskalasi hak akses ditutup
Seorang admin bisa memberikan hak super-admin. Permintaan itu kini ditolak dengan catatan audit, dan pencabutan role mengakhiri sesi aktif pengguna tersebut.
Nov 2026
12 dari 12
12 temuan terkonfirmasi diperbaiki dalam satu hari
Dari security review sebuah platform pengadaan, termasuk script injection di CI dan formula injection pada ekspor spreadsheet.
Nov 2026
114 menjadi 43
Kerentanan di image scanner dipangkas
Setiap binary scanner yang dibundel diperbarui dan diverifikasi checksum-nya. CVE High dan Critical yang masih bisa diperbaiki tinggal menunggu perbaikan dari upstream.
Okt 2026
A+
Nilai security header tertinggi di aplikasi web produksi
CSP berbasis nonce, anti-clickjacking, no-store pada respons sensitif, dan format error yang generik. Mozilla Observatory: skor 110, 12 dari 12 tes lolos.
Okt 2026
Supply chain dan CI
Hal yang harus dilewati setiap perubahan sebelum sampai ke produksi.
- 1
Action di-pin ke SHA commit
Setiap GitHub Action di-pin ke SHA commit lengkap di 8 repositori, sehingga tag yang dipindahkan tidak bisa mengubah apa yang dijalankan.
- 2
Secret scanning
gitleaks di CI pada 8 repositori, ditambah pre-commit hook lokal yang memakai binary yang sama, di-pin dan diverifikasi checksum-nya.
- 3
Gate dependensi
Pembaruan Dependabot, audit yang memblokir temuan High ke atas dengan allow-list bertanggal, dan analisis statis Semgrep yang di-triage hingga baseline kosong.
- 4
Gate rilis
Base image yang di-pin dengan digest, gate Trivy, SBOM CycloneDX, dan rilis bertanda tangan yang tanda tangannya dicek saat instalasi.
Cara situs ini diamankan
Aturan yang sama berlaku untuk portofolio ini, dan source code-nya publik.
- 1
Content security policy yang ketat
Setiap halaman membawa script policy sendiri dengan hash SHA-256 tanpa unsafe-inline, framing ditolak, dan test end-to-end gagal jika ada pelanggaran policy.
- 2
Transport dan header
HSTS selama setahun termasuk subdomain, nosniff, referrer policy yang ketat, dan Permissions-Policy yang mematikan kamera, mikrofon, dan lokasi.
- 3
Asisten Rover
Turnstile, rate limit 8 per menit dan 40 per hari per hash pengunjung yang di-salt, batas harian global, batas ukuran body, pembersihan PII, dan riwayat percakapan yang ditandatangani.
- 4
Pemeriksaan output di setiap jawaban
Jawaban dipindai untuk secret, kebocoran prompt, pencemaran nama baik, dan angka yang tidak didukung sumber; tautan dibatasi allow-list, dan evaluasi red team berjalan setiap malam terhadap asisten.
- 5
Privasi Agent Office
Kantor live hanya menampilkan status dan aktivitas agent; detail repositori hanya muncul untuk repositori publik dalam allow-list, dan prompt, perintah, path, atau nama klien tidak pernah dikirim.
- 6
CI dan deploy yang terkunci
Action di-pin dengan SHA, gitleaks dan Dependabot di setiap perubahan; secret deploy hanya ada di environment khusus main dan tidak pernah sampai ke run pull request.
Cara situs ini dibuatSource code di GitHub (terbuka di tab baru)
Latar belakang
Keamanan berawal dari hobi: kompetisi capture the flag semasa kuliah.
- Mar 2021Juara 1 · Foresty CTF Competition 2021 (Forensic and Security Laboratory)
- Feb 2020Juara 3 · Capture the Flag Competition (Forensic and Security Laboratory)