Cara Kerja AccessCheck

Ketika utas mencoba mengakses objek yang dapat diamankan, sistem memberikan atau menolak akses. Jika objek tidak memiliki daftar kontrol akses diskresi (DACL), sistem memberikan akses; jika tidak, sistem mencari entri Access Control (ACE) di DACL objek yang berlaku untuk utas. Setiap ACE dalam DACL objek menentukan hak akses yang diizinkan atau ditolak untuk wali, yang dapat berupa akun pengguna, akun grup, atau sesi masuk.

DACL

Sistem membandingkan wali amanat di setiap ACE dengan kepercayaan yang diidentifikasi dalam token akses utas. Token akses berisi pengidentifikasi keamanan (SID) yang mengidentifikasi pengguna dan akun grup tempat pengguna berada. Token juga berisi SID masuk yang mengidentifikasi sesi masuk saat ini. Selama pemeriksaan akses, sistem mengabaikan SID grup yang tidak diaktifkan. Untuk informasi selengkapnya tentang SID yang diaktifkan, dinonaktifkan, dan hanya ditolak, lihat Atribut SID dalam Token Akses.

Biasanya, sistem menggunakan token akses utama utas yang meminta akses. Namun, jika utas meniru pengguna lain, sistem menggunakan token peniruan utas.

Sistem memeriksa setiap ACE secara berurutan sampai salah satu peristiwa berikut terjadi:

  • ACE yang ditolak akses secara eksplisit menolak salah satu hak akses yang diminta ke salah satu kepercayaan yang tercantum dalam token akses utas.
  • Satu atau beberapa ACE yang diizinkan akses untuk wali yang tercantum dalam token akses utas secara eksplisit memberikan semua hak akses yang diminta.
  • Semua ACE telah diperiksa dan masih ada setidaknya satu hak akses yang diminta yang belum diizinkan secara eksplisit, dalam hal ini, akses secara implisit ditolak.

Ilustrasi berikut menunjukkan bagaimana DACL objek dapat mengizinkan akses ke satu utas sambil menolak akses ke utas lainnya.

dacl yang memberikan hak akses yang berbeda ke utas yang berbeda

Untuk Thread A, sistem membaca ACE 1 dan segera menolak akses karena ACE yang ditolak akses berlaku untuk pengguna dalam token akses utas. Dalam hal ini, sistem tidak memeriksa ACE 2 dan 3. Untuk Thread B, ACE 1 tidak berlaku, sehingga sistem melanjutkan ke ACE 2, yang memungkinkan akses tulis, dan ACE 3 yang memungkinkan akses baca dan jalankan.

Karena sistem berhenti memeriksa ACE ketika akses yang diminta secara eksplisit diberikan atau ditolak, urutan ACE dalam DACL adalah penting. Perhatikan bahwa jika urutan ACE berbeda dalam contoh, sistem mungkin telah memberikan akses ke Utas A. Untuk objek sistem, sistem operasi mendefinisikan urutan ACE pilihan dalam DACL.