Kurniadi Ahmad Wijaya
Forward Deployed AI Engineer
Membangun AI dan software kelas production untuk perbankan, fintech, dan enterprise.
Technical Consultant, Software & AI · Metrodata (PT Mitra Integrasi Informatika)
Langsung ke konten

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. 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. 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. 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. 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. 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.

    Dashboard Review Fraud dan Remediasi Keamanan

  • 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.

    Dashboard Review Fraud dan Remediasi Keamanan

  • 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.

    Review Dokumen Fraud Berbasis AI

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.

    628 PR di-scan keamanan

    Baca studi kasus

  • Otomasi Pemindaian Kerentanan

    Scan kerentanan terjadwal, kepemilikan aset, dan laporan remediasi, sehingga setiap temuan sampai ke tim pemilik aset.

    Dibandingkan antar scan setiap 15 menit

    Baca studi kasus

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. 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. 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. 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. 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. 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. 2

    Transport dan header

    HSTS selama setahun termasuk subdomain, nosniff, referrer policy yang ketat, dan Permissions-Policy yang mematikan kamera, mikrofon, dan lokasi.

  3. 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. 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. 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. 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)