Back to IF5161 Keamanan Data dan Perangkat Lunak

Tantangan dan Kesalahan Implementasi IAM

Questions/Cues

  • Apa lima tantangan IAM (sprawl, privilege creep, distributed, multi-tenant, dynamic permissions)?
  • Apa delapan kesalahan implementasi yang sering terjadi?
  • Bagaimana password disimpan dengan benar?
  • Bagaimana memperbaiki IDOR pada endpoint API?
  • Apa kelemahan pada proses reset password?

Reference Points

  • IF5161 — W05 Identity, Authentication, and Authorization, bagian “Identity Challenges” (Challenge 2–5) dan “Mistake 1–8”

Lima Tantangan

#TantanganMasalahSolusi/Catatan
1Identity sprawlIdentitas berlebih, akun yatimInventaris, deprovisioning otomatis
2Privilege creepHak menumpuk; perubahan peran tak mencabut akses lama; akses sementara menjadi permanen (rata-rata pengguna punya 2x izin dari yang dibutuhkan, Forrester 2024)Access review berkala, JIT (Just-In-Time) privilege
3Sistem terdistribusiOtorisasi di microservice: latensi jaringan, konsistensi kebijakan, keputusan terdistribusiPDP terpusat + PEP lokal
4Multi-tenantIsolasi tenant; mencegah horizontal privilege escalationTenant ID wajib di setiap query
5Dynamic permissionsPerubahan kebijakan real-time harus konsisten di sistem terdistribusiPropagasi kebijakan dan versi

Delapan Kesalahan Implementasi

  1. Insecure password storage — gunakan Argon2id atau bcrypt (cost factor >= 10) dengan salt unik per password; jangan plaintext atau hash cepat.
  2. Broken authentication — OWASP #7. Kode contoh membangun query dengan concatenation dan membandingkan password plaintext; memungkinkan SQL injection, timing attack, session fixation, tanpa rate limiting dan MFA.
  3. JWT implementation errors — lihat Session Management dan Token-Based Authentication.
  4. Authorization bypass (IDOR) — endpoint /api/documents/<doc_id> tanpa cek kepemilikan; GET /api/documents/124 mengembalikan dokumen orang lain. Perbaikan: @login_required + if doc.owner_id != current_user.id: abort(403). Uji dengan mengubah ID objek di request.
  5. Insecure OAuth — whitelist redirect URI, gunakan PKCE, validasi parameter state, kode berumur pendek.
  6. Privilege escalation — vertikal (ke peran lebih tinggi) dan horizontal (ke data pengguna sejajar); cegah dengan pengecekan otorisasi server-side pada SETIAP request.
  7. Session security failures — flag cookie dan umur sesi.
  8. Insecure password reset — invalidasi token lama, rate limit, dan beri notifikasi ke pengguna.
flowchart TB
    R["Request masuk"] --> A{"Terautentikasi?"}
    A -- tidak --> D1["401"]
    A -- ya --> B{"Berwenang atas<br/>objek ini?"}
    B -- tidak --> D2["403 (default deny)"]
    B -- ya --> OK["Proses &amp; catat audit log"]

Diagram di atas adalah pola pertahanan inti untuk kesalahan 4 dan 6: autentikasi lalu otorisasi per objek pada setiap request, default deny.

Summary

Lima tantangan IAM: sprawl, privilege creep, otorisasi terdistribusi, multi-tenant, dan permission dinamis. Delapan kesalahan implementasi: penyimpanan password, broken authentication, JWT, IDOR, OAuth, privilege escalation, sesi, dan reset password. Perbaikan konsisten: hash lambat bersalt (Argon2id/bcrypt), otorisasi server-side per request, default deny, token berumur pendek, rate limiting.