ABAC: Access Control Canggih dan Luwes
RBAC atau Role Based Access Control muncul pertama kali tahun 1992, jadi sudah cukup lama. Semenjak itu, telah banyak yang mencoba menerapkannya dan menggunakannya. Beberapa pihak menganggapnya terlalu sederhana sehingga tidak memadai lagi untuk keperluan mereka. Untuk itulah, NIST mengeluarkan standar baru yang dinamakan dengan ABAC atau Attribute Based Access Control. ABAC berusaha menjawab permasalahan di mana hak akses tidak tergantung pada role seorang pengguna, melainkan juga kondisi lingkungan (perangkat yang digunakan, waktu akses, lokasi akses) dan perubahan status pengguna (terdaftar, e-mail terverifikasi, kartu kredit terverifikasi, atau menyetujui persyaratan penggunaan layanan).
Tidak ada definisi baku ABAC, tapi NIST mendefinisikannya sebagai:
Attribute Based Access Control (ABAC): An access control method where subject requests to perform operations on objects are granted or denied based on assigned attributes of the subject, assigned attributes of the object, environment conditions, and a set of policies that are specified in terms of those attributes and conditions.
Nah, kalau RBAC hanya mengenal subjek dan predikat (operation) saja, maka ABAC memperluasnya menjadi enam, yaitu subjek, predikat, objek, atribut subjek, atribut objek dan kondisi lingkungan. Dari dua menjadi enam, pantas saja ABAC jadi sangat ampuh. Sudah terlanjur rumit begini, kalau tidak ampuh ya rugi dong.
Sebenarnya, permasalahan apa sih yang dicoba diselesaikan oleh ABAC? Mari kita lihat contoh kasus toko daring di bawah ini supaya lebih jelas:
-
Hanya pengguna yang sudah menerima syarat dan ketentuan saja yang boleh mmembeli barang
-
Hanya pengguna yang sudah mendaftarkan kartu kredit saja yang boleh membuka lapak
-
Pembeli hanya bisa mengakses transaksi pembelian miliknya
-
Penjual hanya bisa mengakses transaksi penjualan miliknya
Contoh-contoh hak akses di atas sebenarnya bisa diselesaikan dengan RBAC, tapi hasilnya akan jadi ribet. Begini caranya:
-
Hanya pengguna yang sudah menerima syarat dan ketentuan saja yang boleh mmembeli barang
Setelah pengguna menerima syarat dan ketentuan layanan, maka sistem akan mengubah role si pengguna dari PENGGUNA_TERDAFTAR menjadi PENGGUNA_MENERIMA_SYARAT_DAN_KETENTUAN
-
Hanya pengguna yang sudah mendaftarkan kartu kredit saja yang boleh membuka lapak
Setelah pengguna mendaftarkan kartu kredit, maka role pengguna akan berubah menjadi PELAPAK.
-
Pembeli hanya bisa mengakses transaksi pembelian miliknya
Setiap kali data transaksi diakses, sistem akan memeriksa kepemilikan data transaksi untuk dibandingkan dengan identitas pengguna
-
Penjual hanya bisa mengakses transaksi penjualan miliknya
Setiap kali data transaksi diakses, sistem akan memeriksa kepemilikan data transaksi untuk dibandingkan dengan identitas pengguna
Dari empat kasus di atas, dua kasus memerlukan perubahan role untuk pengguna, sedangkan tiga kasus ditangani langsung oleh aplikasi. Dua kasus perubahan role membuktikan bahwa jika hak akses sangat banyak dan bertingkat-tingkat, akan sangat banyak role yang dibutuhkan untuk memenuhi kebutuhan sistem. Sementara itu, dua kasus berikutnya yang langsung ditangani aplikasi, hasilnya akan jadi kaku dan susah disesuaikan jika ada kebijakan baru. ABAC menyelesaikan masalah-masalah ini dengan elegan dalam konteks perubahan kebijakan yang dinamis.
-
Hanya pengguna yang sudah menerima syarat dan ketentuan saja yang boleh membeli barang
Pengguna dengan atribut MENERIMA_SYARAT_DAN_KETENTUAN boleh membeli barang apa saja
-
Hanya pengguna yang sudah mendaftarkan kartu kredit saja yang boleh membuka lapak
Pengguna dengan atribut KARTU_KREDIT_TERDAFTAR boleh membuka lapak
-
Pembeli hanya bisa mengakses transaksi pembelian miliknya
Pengguna dengan atribut NOMOR_PENGGUNA boleh mengakses transaksi pembelian dengan atribut NOMOR_PENGGUNA yang sama
-
Penjual hanya bisa mengakses transaksi penjualan miliknya
Pengguna dengan atribut NOMOR_PENGGUNA boleh mengakses transaksi penjualan dengan atribut NOMOR_PENGGUNA yang sama
Dengan begini, maka tidak perlu membuat banyak-banyak role untuk menerapkan kebijakan hak akses, cukup dengan memeriksa atribut objek saja. Juga, tidak perlu melakukan pemeriksaan hak akses hingga dua tingkat, di tingkat access control dan di tingkat aplikasi, cukup di tingkat aplikasi saja. Cuma memang, dengan adanya atribut subjek dan objek, maka sistem harus mendefinisikan dengan jelas apa dan bagaimana subjek dan atribut subjek, objek dan atribut objek, serta bagaimana kondisi lingkungan yang berlaku. Itu artinya, setiap operasi yang dilakukan harus memiliki subjek dan objek beserta atribut-atributnya dan itu harus terwujudkan dalam sebuah struktur data yang baku supaya ABAC bisa menerapkan kebijakan-kebijakan hak akses secara menyeluruh.