
Daftar Isi
Anda pernah mengalami kondisi di mana sistem Anda semakin kompleks, aturan akses makin banyak, dan Anda mulai bingung mengatur siapa boleh melakukan apa? Atau mungkin Anda khawatir bila aturan authorization yang salah bisa membuka celah keamanan? Jika iya, Anda tidak sendiri. Hampir semua developer pemula—bahkan yang berpengalaman—pernah ada di fase ini.
Banyak orang bingung harus memulai dari mana saat ingin menerapkan policy-based authorization, terutama jika sebelumnya hanya terbiasa menggunakan role-based akses sederhana. Di sisi lain, Anda tentu ingin sistem yang fleksibel, mudah dikelola, dan tidak bikin pusing di masa depan.
Di sinilah Open Policy Agent (OPA) hadir sebagai solusi. Artikel ini akan membantu Anda memahami OPA dari nol, lengkap dengan contoh, langkah-langkah implementasi, dan tips agar tidak salah arah. Jika Anda mengikuti artikel ini sampai selesai, Anda akan mendapatkan:
- Penjelasan sederhana: apa itu OPA dan kenapa penting
- Cara kerja policy-based authorization
- Praktik langsung membuat policy menggunakan Rego
- Contoh integrasi OPA dengan service Anda
- Tips menghindari kesalahan umum pemula
Apa Itu OPA (Open Policy Agent)?
Open Policy Agent (OPA) adalah policy engine open-source yang memungkinkan Anda menuliskan aturan authorization dalam bentuk deklaratif. Artinya: Anda membuat aturan dalam file policy, dan aplikasi Anda tinggal “bertanya” ke OPA apakah suatu aksi boleh dilakukan.
Dengan pendekatan ini, aturan authorization tidak lagi hard-coded di aplikasi. Hasilnya: lebih fleksibel, terpisah dari logic bisnis, dan sangat mudah diuji atau diperbarui.
Mengapa Menggunakan Policy-Based Authorization?
Beberapa manfaat penting:
- Fleksibel — aturan bisa berubah tanpa mengubah kode aplikasi
- Terpusat — semua aturan berada di satu tempat
- Kuat — mendukung skenario authorization kompleks
- Independen stack — bisa dipakai di microservices, API gateway, Kubernetes, dsb.
Cara Kerja OPA Secara Singkat
OPA bekerja dengan pola berikut:
- Aplikasi mengirim input (misalnya user, role, action).
- OPA memproses input dengan policy Rego.
- OPA mengembalikan allow / deny atau nilai lain sesuai policy.
Sederhana sekali konsepnya, tapi sangat kuat saat dipakai di skala besar.
Tutorial: Building Policy-Based Authorization dengan OPA untuk Pemula
Di bagian ini, Anda akan mengikuti langkah demi langkah membangun policy-based authorization menggunakan OPA.
1. Install OPA
Berikut langkah termudah untuk menginstal OPA:
- Download OPA (Linux/Mac/Windows)
curl -L -o opa https://openpolicyagent.org/downloads/latest/opa_linux_amd64 - Beri permission eksekusi
chmod +x opa - Pastikan OPA berhasil di-install
./opa version
2. Buat Policy Dasar Menggunakan Rego
Buat file baru bernama policy.rego:
package authz
default allow = false
allow {
input.user.role == "admin"
}Penjelasan singkat:
- Policy ini menolak semua akses sebagai default
- Hanya user dengan role admin yang diizinkan
3. Buat File Input
Buat file bernama input.json:
{
"user": {
"name": "budi",
"role": "admin"
}
}4. Jalankan Evaluasi Policy
Gunakan perintah:
opa eval --data policy.rego --input input.json "data.authz.allow"Jika user memenuhi policy, hasilnya akan true.
5. Menjalankan OPA sebagai Server
OPA bisa dijalankan sebagai server HTTP menggunakan:
opa run --server policy.regoAplikasi Anda dapat mengirim permintaan seperti ini:
POST /v1/data/authz/allow
Content-Type: application/json
{
"input": {
"user": { "role": "admin" }
}
}OPA akan merespons:
{
"result": true
}Sederhana, bersih, dan sangat mudah diintegrasikan dengan service apa pun.
6. Membuat Policy Authorization Lebih Kompleks
Berikut contoh policy dengan aturan lebih realistis:
package authz
default allow = false
allow {
input.user.role == "admin"
}
allow {
input.user.role == "editor"
input.action == "update"
}
allow {
input.user.role == "viewer"
input.action == "read"
}Kini aturan authorization Anda bisa menangani banyak skenario—tanpa menyentuh kode aplikasi.
Setelah mengikuti panduan ini, kini Anda sudah memahami dasar-dasar policy-based authorization menggunakan OPA: mulai dari instalasi, penulisan policy, menjalankan OPA sebagai server, hingga membuat aturan kompleks dengan Rego. Anda sekarang sudah berada di jalur yang benar untuk membangun sistem authorization yang aman, fleksibel, dan mudah dikembangkan.
Jika Anda ingin mempelajari pola desain backend lainnya, Anda bisa membaca artikel lanjutan seperti:
Baca juga: Building Resilient Backend dengan Circuit Breaker (Hystrix Pattern)
