Keamanan & Akses
Memahami RBAC (Role-Based Access Control) dan dua mekanisme otentikasi yang digunakan Lenz.
Apa yang Akan Anda Pelajari
Lenz adalah sistem yang menangani data sensitif — wajah, plat kendaraan, rekaman video. Karena itu, kontrol akses adalah hal mendasar. Halaman ini menjelaskan dua konsep penting:
- RBAC — siapa boleh melakukan apa di Lenz
- Otentikasi — cara membuktikan identitas saat mengakses sistem (UI maupun API)
RBAC (Role-Based Access Control)
RBAC adalah model kontrol akses yang berjenjang. Modelnya dibangun dari tiga konsep:
| Istilah | Penjelasan | Contoh |
|---|---|---|
| User | Akun individu yang login ke Lenz | "siti.rahayu" |
| Role | Kumpulan permission yang diberi nama | "Operator", "Supervisor", "Admin" |
| Permission | Aksi yang diizinkan pada sebuah resource | "boleh read stream" |
| Resource | Objek di sistem yang aksesnya dikendalikan | stream, enrollment, alert-rule, site |
Contoh Role
| Role | Bisa Melakukan |
|---|---|
| Operator | Lihat stream, lihat event, lihat alert |
| Supervisor | Semua akses Operator + buat/edit alert rule |
| Enrollment Officer | Kelola data wajah dan plat enrollment |
| Administrator | Semua akses penuh termasuk manajemen user |
Bagaimana RBAC Diberlakukan
- Setiap halaman dan aksi di Lenz memeriksa permission sebelum menampilkan data
- Jika user tidak punya permission, fitur tersebut tidak ditampilkan atau menolak request dengan error
403 Forbidden - Role dan permission dikelola oleh administrator melalui menu User Access
RBAC bersifat default deny: jika role tidak secara eksplisit memiliki permission untuk sebuah aksi, aksi itu tidak diizinkan. Ini lebih aman daripada model "default allow".
Otentikasi
Otentikasi adalah proses membuktikan identitas Anda ke sistem. Lenz mendukung dua mekanisme, masing-masing untuk konteks berbeda.
JWT Token (untuk User)
JWT (JSON Web Token) digunakan saat manusia login ke Dashboard Lenz. Cara kerjanya:
- User memasukkan username & password di halaman login
- Sistem mengembalikan JWT yang berlaku untuk durasi tertentu
- Setiap request berikutnya menyertakan JWT di header
Authorization: Bearer <token> - Saat token mendekati kadaluarsa, sistem otomatis refresh tanpa mengganggu user
GET /api/streams
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Cocok untuk: penggunaan Dashboard sehari-hari, akses dari aplikasi yang punya alur login.
API Key (untuk Service)
API Key digunakan untuk integrasi service-to-service — misalnya aplikasi internal Anda yang perlu mengirim atau membaca data dari Lenz secara otomatis, tanpa ada user yang login.
GET /api/streams
X-Api-Key: lenz_sk_a1b2c3d4e5f6...Karakteristik API Key:
- Tidak ada masa berlaku otomatis — tetap aktif sampai dinonaktifkan administrator
- Dibuat oleh administrator melalui menu User Access → API Keys
- Dapat dicabut kapan saja jika dicurigai bocor
- Memiliki permission tersendiri — sama seperti role user
Jaga API Key seperti password. Jangan commit API Key ke repository Git, jangan kirim via channel chat publik. Jika curiga API Key bocor, segera nonaktifkan di Dashboard dan buat yang baru.
Memilih Mekanisme
| Konteks | Pakai |
|---|---|
| User login ke Dashboard | JWT (otomatis dari proses login) |
| Aplikasi mobile / web pihak Anda | JWT (login dengan kredensial user) |
| Backend script otomatis | API Key |
| Integrasi sistem eksternal | API Key |
| Webhook receiver memvalidasi caller | API Key |
Best Practice
- Prinsip Least Privilege — beri user hanya permission yang benar-benar dibutuhkan, jangan default ke role Administrator
- Gunakan API Key terpisah per integrasi — agar mudah dicabut jika hanya satu integrasi yang bermasalah
- Rotasi API Key secara berkala — terutama untuk integrasi yang berjalan jangka panjang
- Audit log secara rutin — periksa siapa melakukan apa kapan melalui menu Audit Logs