Mengenal Access Control

Access control pada intinya adalah "menentukan siapa boleh berbuat apa kepada apa dalam kondisi apa". Memang sepertinya njelimet dan tidak jelas, tapi ternyata sangat penting kalau kita peduli soal keamanan pada sistem kita. Tidak jelas, karena ruang penyelesaian masalahnya sangat lebar. "Siapa" (subjek) bisa mewakili pengguna tertentu, sekelompok pengguna, atau bahkan pengguna dengan ciri-ciri tertentu. "boleh berbuat apa" (predikat) mewakili satu tindakan tertentu (baca, tulis, hapus) atau sekelompok tindakan tertentu yang merupakan satu kesatuan kegiatan (menjual). "kepada apa" (object) mewakili benda tertentu (buku dengan judul tertentu), sekelompok benda tertentu (barang yang dijual), atau sekelompok benda tertentu di tempat tertentu (buku yang dijual di Shopping Centre Jogja). "dalam kondisi apa" (atribut) mewakili waktu, tempat, atau situasi tertentu (pagi, jam kerja, ketika di kantor).

Nah, makin bingung kan? Memang menjelaskan barang abstrak susah kalau tidak ada contohnya. Sekarang, mari kita lihat contohnya pada Linux file system permissions. Kalau tidak mau dibikin bingung dengan penjelasan saya, silakan lihat sendiri di sini.

Pada ACL di sistem operasi Linux, subjeknya adalah pengguna (user) dan kelompok pengguna (group). Predikatnya adalah read, write, dan execute. Objeknya, karena kita membahas file system permissions, adalah berkas dan direktori. Access control-nya menempel pada objeknya, yaitu pada berkas dan direktori.

yuse@wokpisi work]# getfacl ~/work
getfacl: Removing leading '/' from absolute path names
# file: work
# owner: yuse
# group: woke
user::rwx
group::r_x
other::---

Si owner (yang namanya adalah yuse) bisa membaca, menulis, ataupun mengeksekusi direktori work. Kemudian, semua pengguna yang merupakan anggota group woke hanya bisa membaca atau mengeksekusi semua yang ada dalam direktori work. Semua pengguna yang lain (other) tidak bisa apa-apa, bahkan hanya untuk melihat saja. Dengan demikian, ada tiga macam subjek di sini, yaitu owner, group dan other. Predikat dari sistem ini adalah baca, tulis, dan eksekusi. Objeknya adalah direktori yang bernama work.

Tingkat abstraksi dan kerumitan tertinggi ada pada subjek, karena ada tiga macam subjek dan ketiganya tidak setara. Owner hanya mewakili satu pengguna saja, sementara group mewakili banyak pengguna yang tergabung dalam grup tersebut. Lain lagi dengan other, yang artinya adalah semua pengguna selain owner dan group. Sementara itu, predikatnya konkret dan tertentu, yaitu read, write, dan execute. Objeknya hanya ada dua macam dan keduanya konkret, yaitu file dan folder. Di sini, Access control melekat pada file.

Yang saya jelaskan baru saja memang termasuk salah satu jenis akses kontrol, tapi bukanlah ACL sebagaimana dimaksud dalam Linux. ACL menaikkan tingkat abstraksi dari subjek, di mana selain owner dan group, ada banyak pengguna tunggal dan grup-grup lain yang juga bisa mengakses suatu file.

[root@wokpisi work]# getfacl ./duwekejoko.txt
# file: duwekejoko.txt
# owner: joko
# group: tukangngetik
user::rwx
user:sastro:r-x
user:painem:r-x
group::rwx
group:tukangngetik:r-x
group:woke:r-x

Dalam ilustrasi di atas, user sastro dan painem bisa mengakses berkas duwekejoko.txt. Group tukangngetik dan woke juga sama. Inilah ACL pada file system Linux. Sementara yang sebelumnya tadi, bolehlah kita sebut sebagai base permissions.

Itu tadi adalah penjelasan singkat soal ACL di Linux. Ada lagi ACL tapi untuk jaringan Cisco. Tidak sebagaimana ACL di Linux di mana subjek sangat penting walaupun ACL-nya menempel di objek, ACL di Cisco menempel pada perangkat yang melewatkan paket-paket data. Karena itu, subjek-nya hanya satu sehingga tidak pernah disebut, yaitu si router sendiri. Predikatnya biasanya cuma dua, yaitu permit dan deny. Objeknya, nah ini yang rumit, Karena yang paling panjang dari ACL di Cisco adalah deskripsi dari objeknya. Gampangnya, lihat gambar di bawah ini

acl

Selain permit dan deny, itu semuanya menjelaskan soal objek dari ACL. Saya nggak ngerti jaringan, makanya saya tidak bisa ngomong banyak-banyak di sini. Marilah kita lihat saja contoh ACL di bawah ini:

access-list 100 deny tcp 10.0.0.0 0.255.255.255 host 192.168.2.2 eq 23
access-list 100 deny tcp 10.0.0.0 0.255.255.255 any eq 80
access-list 100 permit ip any any

Yang jelas, yang penting buat saya ketahui adalah si objek dijelaskan dengan sangat rinci sesuai dengan atribut-atributnya.

ACL untuk Linux dan untuk jaringan memang jauh beda, walau namanya memang sama. Mereka berdua termasuk dalam ranah access control, karena itu dua-duanya tadi kita coba urai sedikit dengan analisis subjek-predikat-objek. Saya akan terus memakai analisis ini untuk mengupas access control dan permasalahannya, termasuk jika nanti merancang pola ACL sendiri.