Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Daftar kontrol akses (ACL) adalah daftar entri kontrol akses (ACL) yang dibuat oleh sistem operasi untuk mengontrol perilaku keamanan yang terkait dengan objek tertentu (dilindungi) dari beberapa jenis. Di Windows ada dua jenis ACL:
ACL diskresioner adalah daftar nol atau lebih ACE yang menggambarkan hak akses untuk objek yang dilindungi. Ini diskresi karena akses yang diberikan adalah atas kebijakan pemilik atau pengguna mana pun dengan hak yang sesuai.
system ACL adalah daftar nol atau lebih ACE yang menjelaskan kebijakan pengauditan dan alarm untuk objek yang dilindungi.
Istilah "diskresi" mengacu pada diferensiasi antara kontrol wajib dan diskresi. Di lingkungan yang menggunakan kontrol wajib, pemilik objek mungkin tidak dapat memberikan akses ke objek. Dalam lingkungan diskresi, seperti Windows, pemilik objek diizinkan untuk memberikan akses tersebut. Kontrol wajib biasanya dikaitkan dengan lingkungan keamanan yang ketat, seperti yang menggunakan keamanan kompartemen, di mana sistem harus mencegah pengungkapan informasi sensitif antara pengguna pada sistem yang sama.
Driver yang membangun ACL mengikuti beberapa langkah utama:
Alokasikan penyimpanan untuk ACL.
Inisialisasi ACL.
Tambahkan nol (atau lebih) ACE ke ACL.
Contoh kode berikut menunjukkan cara membuat ACL:
dacl = ExAllocatePool(PagedPool, PAGE_SIZE);
if (!dacl) {
return;
}
status = RtlCreateAcl(dacl, PAGE_SIZE, ACL_REVISION);
if (!NT_SUCCESS(status)) {
ExFreePool(dacl);
return;
}
Fragmen kode sebelumnya membuat ACL kosong. Sampel kode mengalokasikan sejumlah besar memori, karena kita tidak tahu ukuran yang diperlukan untuk ACL.
Pada titik ini, ACL kosong karena tidak memiliki entri ACE. ACL kosong menolak akses ke siapa pun yang mencoba mengakses objek karena tidak ada entri yang memberikan akses tersebut. Fragmen kode berikut menambahkan ACE ke ACL ini:
status = RtlAddAccessAllowedAce(dacl, ACL_REVISION, FILE_ALL_ACCESS, SeExports->SeWorldSid);
if (!NT_SUCCESS(status)) {
ExFreePool(dacl);
return;
}
ACE yang ditambahkan memberikan akses ke entitas apa pun yang mengakses objek, yang merupakan tujuan dari SID akses global (SeWorldSid). SID ini biasanya direpresentasikan sebagai akses "Semua Orang" di utilitas sistem Windows lainnya.
Saat membuat ACL, penting untuk menempatkan entri ACE yang ditolak akses di awal ACL, dan mengakses entri ACE yang diizinkan di akhir ACL. Perintah ini penting. Jika tidak, monitor referensi keamanan akan memberikan akses jika menemukan ACE yang diizinkan akses sebelum ACE yang ditolak akses saat mengevaluasi ACL. Perilaku ini didokumenkan dengan baik di Microsoft Windows SDK, tetapi berkaitan dengan mekanisme spesifik yang digunakan monitor referensi keamanan untuk menentukan apakah akses harus diberikan atau ditolak.