15 poin oleh baeba 2025-05-13 | Belum ada komentar. | Bagikan ke WhatsApp

Seri ini membahas cara mengimplementasikan autentikasi (Authentication) dan otorisasi (Authorization) dalam arsitektur microservices.
Artikel ini menjelaskan gambaran umum keseluruhan beserta perbedaannya dibanding aplikasi tunggal (monolitik).


Aplikasi contoh: RealGuard.io

RealGuard.io adalah platform sistem keamanan komersial yang mengelola kontrol perangkat keamanan dan alarm.
Pengguna berasal dari perusahaan penjual, perusahaan pelanggan, dan penyedia layanan pemantauan, masing-masing dengan hak akses yang berbeda.


Autentikasi dan otorisasi dalam arsitektur monolitik

Struktur monolitik terdiri dari satu aplikasi dan satu database, dan autentikasi diimplementasikan dengan token sesi.
Otorisasi dilakukan dengan struktur berikut:

isAllowed(user, operation, resource)  

Contoh:

isAllowed(user, "disarm", SecuritySystem(ID))  

Empat model otorisasi

  1. RBAC: kontrol akses berbasis peran – menentukan hak berdasarkan peran yang diberikan kepada pengguna
  2. ReBAC: kontrol akses berbasis relasi – menentukan akses berdasarkan hubungan antara pengguna dan sumber daya
  3. ABAC: kontrol akses berbasis atribut – menentukan berdasarkan atribut pengguna, sumber daya, dan lingkungan
  4. Model campuran: dapat menggabungkan tiga model di atas untuk menerapkan kebijakan yang lebih kompleks

Contoh otorisasi dan hak per peran

Operation Required Role
getAlarmSystem() SecuritySystemViewer
armSystem() SecuritySystemArmer
disarmSystem() SecuritySystemDisarmer
cancelSystem() SecuritySystemAlarmCanceller

Selain peran tertentu, syarat tambahan seperti batasan jam kerja (ABAC) atau apakah termasuk dalam daftar notifikasi juga dapat diterapkan.


Lokasi pemeriksaan otorisasi

  1. Infrastruktur jaringan: pemeriksaan hak sederhana dapat dilakukan di service mesh, ingress controller, dan sebagainya
  2. Handler REST API: menangani otorisasi coarse-grained pada tingkat permintaan
  3. Logika domain: menangani otorisasi berbasis kondisi yang kompleks
  4. Lapisan akses DB: filtering otorisasi di dalam SQL (efektif untuk pemrosesan skala besar)

Otorisasi di UI

UI tidak dapat memaksakan otorisasi, tetapi dapat mengoptimalkan UX dengan menampilkan atau menonaktifkan tombol/fitur sesuai hak pengguna.


Autentikasi dalam arsitektur microservices

BFF (Backend For Frontend) bertanggung jawab atas login dan pengelolaan sesi.
Karena setiap microservice berjalan secara independen, informasi pengguna tidak bisa diakses langsung dari sesi, sehingga informasi pengguna harus diteruskan melalui token seperti JWT.


Otorisasi dalam arsitektur microservices

Permintaan diteruskan dengan urutan BFF → SecurityService, dan pemeriksaan otorisasi dapat dilakukan di tiga lokasi berikut:

  1. BFF: otorisasi tingkat permintaan berdasarkan informasi sesi, jalur, dan metode
  2. Inter-service Network: service mesh menjalankan sebagian otorisasi berbasis JWT
  3. Di dalam tiap layanan: otorisasi dilakukan di logika domain dan lapisan akses DB

Sulitnya otorisasi terdistribusi

Karena tiap layanan tidak memiliki semua informasi yang dibutuhkan di database-nya sendiri, panggilan ke API layanan lain mungkin diperlukan untuk otorisasi.
Ada juga pendekatan untuk mengatasinya dengan JWT, tetapi ukuran token dan biaya verifikasi menjadi masalah.


Ringkasan

  • autentikasi adalah verifikasi identitas pengguna, otorisasi adalah penentuan hak akses
  • pola isAllowed(user, operation, resource) adalah inti otorisasi
  • tiga model otorisasi RBAC, ReBAC, dan ABAC dapat digabungkan untuk implementasi
  • dalam monolitik, otorisasi mudah karena akses ke satu database
  • dalam microservices, implementasi lebih kompleks karena data untuk otorisasi tersebar

Belum ada komentar.

Belum ada komentar.