Access Control
Access Control terhadap user digunakan untuk mengatur dan membuat policy terhadap akses data. Pembuatan Access control bisa memakan waktu karena jenis dan kebutuhannya berbeda-beda, tidak ada model khusus untuk membuat access control bahkan sebuah perusahaan atau satu tim khusus untuk mengelola akses kontrol ini agar menjadi se-dinamis mungkin sesuai kebutuhan perusahaan.
ACL (Access control list)
access-control list (ACL) is a list of permissions. Wikipedia
Sebagai contoh sebuah file memiliki ACL yaitu (alice: read,write; bob: read)
, ini memberikan akses file kepada alice dan bob dengan masing-masing aksi yang bisa dilakukan.
Dalam konteks pemrograman, SQL sudah menggunakan dengan perintah GRANT, GRANT ALL PRIVILEGES ON kinds TO manuel;
.
ACL adalah hal sederhana untuk menggambarkan konsep sederhana dari access control, penggunaannya adalah menghubungkan Resource pada Policy (aturan/kebijakan) dan hanya berlaku untuk Resource tersebut.
RBAC (Role Based Access Control)
Role-based access control is a policy-neutral access control mechanism defined around roles and privileges. Wikipedia
RBAC lebih kompleks karena tidak mengikat aturan pada sebuah file tetapi pada Role. Role ini akan memiliki Permission sebagai validasi akses. Selain itu, Role perlu di Assign pada subject/user. 3 hal utama yang ada di RBAC:
- Role Assignment
- Role Authorization
- Permission Authorization
RBAC memiliki beberapa attribut yaitu:
- Subject, user atau orang
- Role, Job function atau nama dari Role
- permission, Akses ke Resource
Berbeda dengan ACL, RBAC melekatkan Policy pada Role User, tidak lagi melekat pada sebuah resource. Kelebihan dari RBAC adalah bisa membuat Role sebanyak mungkin untuk Resource apapun, kekurangannya tidak ada konteks dan untuk perusahaan besar yang memiliki berbagai departemen akan kewalahan karena banyaknya cabang perusahaan dan struktur organisasi yang besar.
ABAC (Attribute Based Access Control)
ABAC is a method of implementing access control policies that is highly adaptable and can be customized using a wide range of attributes, making it suitable for use in distributed or rapidly changing environments. Wikipedia
Berbeda dengan RBAC yang memiliki Role dengan spesifikasi permission, ABAC lebih kompleks dan fleksibel yang bisa dikondisikan berbeda-beda role, subject, project, hingga data atomic-valued lainnya. Misalnya user A di departemen ABC memiliki semua akses di departemen ABC dan memiliki akses approval dari departemen CDE"
.
Attribut yang ada dari ABAC adalah
- Subject, tidak hanya data user, tetapi juga departemen, role, job title.
- Action, seperti read, delete, view, approve
- Object Attribute, misal medical record, bank account, departemen, location
- Contextual (environment), seperti waktu, lokasi, dan skenario.
Selain itu, ABAC memiliki Policies (Kebijakan) seperti:
- User bisa lihat data dokumen jika dokumen dari departemen yang sama
- User bisa edit dokumen jika ia pemilik dokumen dan dokumen dalam mode draft
- Akses ditolak jika lebih dari jam 9 malam.
ABAC sangat fleksibel karena memiliki konteks dan subject tidak hanya tentang user tetapi juga departemen, unit, role, job title. Kontekstual membuat dimensi baru dalam akses kontrol dan menjadi sangat fleksibel. Kita bisa membuat Policy tanpa batas untuk user dan kondisi apapun.
Kesimpulan
Access Control didalam aplikasi bisa sederhana hingga sangat kompleks sesuai kebutuhan dari perusahaan. Tidak ada yang satu tipe atau jenis untuk seluruh kasus, pilihlah sesuai kebutuhan. ACL adalah bentuk sederhana dan simpel, sering digunakan pada akses pada sebuah file. RBAC membuat role sebagai label yang disambungkan langsung pada user. Dilain sisi, ABAC adalah konfigurasi akses yang lebih dinamis karena tidak bergantung pada sebuah role saja tetapi hingga subjek dan konteks. Terima kasih sudah membaca semoga bermanfaat.