Hak Istimewa

Hak istimewa adalah hak akun, seperti akun pengguna atau grup, untuk melakukan berbagai operasi terkait sistem di komputer lokal, seperti mematikan sistem, memuat driver perangkat, atau mengubah waktu sistem. Hak istimewa berbeda dari hak akses dengan dua cara:

  • Hak istimewa mengontrol akses ke sumber daya sistem dan tugas terkait sistem, sedangkan hak akses mengontrol akses ke objek yang dapat diamankan.
  • Administrator sistem menetapkan hak istimewa untuk akun pengguna dan grup, sedangkan sistem memberikan atau menolak akses ke objek yang dapat diamankan berdasarkan hak akses yang diberikan dalam ACE dalam DACL objek.

Setiap sistem memiliki database akun yang menyimpan hak istimewa yang dipegang oleh akun pengguna dan grup. Saat pengguna masuk, sistem menghasilkan token akses yang berisi daftar hak istimewa pengguna, termasuk yang diberikan kepada pengguna atau ke grup tempat pengguna berada. Perhatikan bahwa hak istimewa hanya berlaku untuk komputer lokal; akun domain dapat memiliki hak istimewa yang berbeda pada komputer yang berbeda.

Ketika pengguna mencoba melakukan operasi istimewa, sistem memeriksa token akses pengguna untuk menentukan apakah pengguna memegang hak istimewa yang diperlukan, dan jika demikian, sistem memeriksa apakah hak istimewa diaktifkan. Jika pengguna gagal dalam pengujian ini, sistem tidak melakukan operasi.

Untuk menentukan hak istimewa yang disimpan dalam token akses, panggil fungsi GetTokenInformation , yang juga menunjukkan hak istimewa mana yang diaktifkan. Sebagian besar hak istimewa dinonaktifkan secara default.

API Windows mendefinisikan sekumpulan konstanta string, seperti SE_ASSIGNPRIMARYTOKEN_NAME, untuk mengidentifikasi berbagai hak istimewa. Konstanta ini sama pada semua sistem dan didefinisikan dalam Winnt.h. Untuk tabel hak istimewa yang ditentukan oleh Windows, lihat Konstanta Hak Istimewa. Namun, fungsi yang mendapatkan dan menyesuaikan hak istimewa dalam token akses menggunakan jenis LUID untuk mengidentifikasi hak istimewa. Nilai LUID untuk hak istimewa dapat berbeda dari satu komputer ke komputer lainnya, dan dari satu boot ke komputer lain di komputer yang sama. Untuk mendapatkan LUID saat ini yang sesuai dengan salah satu konstanta string, gunakan fungsi LookupPrivilegeValue . Gunakan fungsi LookupPrivilegeName untuk mengonversi LUID ke konstanta string yang sesuai.

Sistem ini menyediakan sekumpulan nama tampilan yang menjelaskan masing-masing hak istimewa. Ini berguna ketika Anda perlu menampilkan deskripsi hak istimewa kepada pengguna. Gunakan fungsi LookupPrivilegeDisplayName untuk mengambil string deskripsi yang sesuai dengan konstanta string untuk hak istimewa. Misalnya, pada sistem yang menggunakan bahasa Inggris AS, nama tampilan untuk hak istimewa SE_SYSTEMTIME_NAME adalah "Ubah waktu sistem".

Anda dapat menggunakan fungsi PrivilegeCheck untuk menentukan apakah token akses menyimpan serangkaian hak istimewa tertentu. Ini berguna terutama untuk aplikasi server yang meniru klien.

Administrator sistem dapat menggunakan alat administratif, seperti Manajer Pengguna, untuk menambahkan atau menghapus hak istimewa untuk akun pengguna dan grup. Administrator dapat secara terprogram menggunakan fungsi Otoritas Keamanan Lokal (LSA) untuk bekerja dengan hak istimewa. Fungsi LsaAddAccountRights dan LsaRemoveAccountRights menambahkan atau menghapus hak istimewa dari akun. Fungsi LsaEnumerateAccountRights menghitung hak istimewa yang dipegang oleh akun tertentu. Fungsi LsaEnumerateAccountsWithUserRight menghitung akun yang memiliki hak istimewa tertentu.

Konstanta Otorisasi

Mengaktifkan dan Menonaktifkan Hak Istimewa di C++