Contoh 4: Pemfilteran UI dengan OPA dan Rego - AWS Bimbingan Preskriptif

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.

Pemfilteran UI dengan OPA dan Rego

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, viewDataButtonupdateUsersButton,, danupdateDataButton.