Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh 4: Pemfilteran UI dengan OPA dan Rego
Fleksibilitas OPA dan Rego mendukung kemampuan untuk memfilter elemen UI. Contoh berikut menunjukkan bagaimana aturan sebagian OPA dapat membuat keputusan otorisasi tentang elemen mana yang harus ditampilkan di UI dengan RBAC. Metode ini adalah salah satu dari banyak cara berbeda Anda dapat memfilter elemen UI dengan OPA.

Dalam contoh ini, aplikasi web satu halaman memiliki empat tombol. Katakanlah Anda ingin memfilter UI Bob, Shirley, dan Alice sehingga mereka hanya dapat melihat tombol yang sesuai dengan peran mereka. Ketika UI menerima permintaan dari pengguna, itu menanyakan aturan paral OPA untuk menentukan tombol mana yang harus ditampilkan di UI. Kueri meneruskan yang berikut ini sebagai input ke OPA saat Bob (dengan peranviewer
) membuat permintaan ke UI:
{ "role": "viewer" }
OPA menggunakan data eksternal terstruktur untuk RBAC untuk membuat keputusan akses:
{ "roles": { "viewer": ["viewUsers", "viewData"], "dataViewOnly": ["viewData"], "admin": ["viewUsers", "viewData", "updateUsers", "updateData"] } }
Aturan paral OPA menggunakan data eksternal dan input untuk menghasilkan daftar tindakan yang diizinkan:
user_permissions[permissions] { permissions := data.roles[input.role][_] }
Dalam aturan sebagian, OPA menggunakan yang input.role
ditentukan sebagai bagian dari kueri untuk menentukan tombol mana yang harus ditampilkan. Bob memiliki peranviewer
, dan data eksternal menentukan bahwa pemirsa memiliki dua izin: viewUsers
dan. viewData
Oleh karena itu, output dari aturan ini untuk Bob (dan untuk pengguna lain yang memiliki peran pemirsa) adalah sebagai berikut:
{ "user_permissions": [ "viewData", "viewUsers" ] }
Output untuk Shirley, yang memiliki dataViewOnly
peran, akan berisi tombol izin:. viewData
Output untuk Alice, yang memiliki admin
peran, akan berisi semua izin ini. Tanggapan ini dikembalikan ke UI saat OPA ditanyakan. user_permissions
Aplikasi kemudian dapat menggunakan respons ini untuk menyembunyikan atau menampilkanviewUsersButton
, viewDataButton
updateUsersButton
,, danupdateDataButton
.