Ayrıcalık
ayrıcalığı, yerel bilgisayarda sistemi kapatma, cihaz sürücülerini yükleme veya sistem saatini değiştirme gibi sistemle ilgili çeşitli işlemleri gerçekleştirmek için kullanıcı veya grup hesabı gibi bir hesabın hakkıdır. Ayrıcalıklar erişim haklarından iki şekilde farklıdır:
- Ayrıcalıklar sistem kaynaklarına ve sistemle ilgili görevlere erişimi denetlerken, erişim hakları güvenliği sağlanabilirnesnelere erişimi denetler.
- Sistem yöneticisi kullanıcı ve grup hesaplarına ayrıcalık atarken, sistem nesnenin DACL'sindeki ACL'lerde verilen erişim haklarına göre güvenli hale getirilebilir bir nesneye erişim verir veya erişimi reddeder.
Her sistemin, kullanıcı ve grup hesapları tarafından tutulan ayrıcalıkları depolayan bir hesap veritabanı vardır. Bir kullanıcı oturum açtığında sistem, kullanıcıya verilenler veya kullanıcının ait olduğu gruplar dahil olmak üzere kullanıcının ayrıcalıklarının listesini içeren bir erişim belirteci oluşturur. Ayrıcalıkların yalnızca yerel bilgisayar için geçerli olduğunu unutmayın; bir etki alanı hesabının farklı bilgisayarlarda farklı ayrıcalıkları olabilir.
Kullanıcı ayrıcalıklı bir işlem gerçekleştirmeye çalıştığında, sistem kullanıcının erişim belirtecini denetleerek kullanıcının gerekli ayrıcalıklara sahip olup olmadığını belirler ve varsa ayrıcalıkların etkinleştirilip etkinleştirilmediğini denetler. Kullanıcı bu testleri başarısız olursa, sistem işlemi gerçekleştirmez.
Erişim belirtecinde tutulan ayrıcalıkları belirlemek için, hangi ayrıcalıkların etkinleştirildiğini de gösteren GetTokenInformationişleviniçağırın. Çoğu ayrıcalık varsayılan olarak devre dışı bırakılır.
Windows API,çeşitli ayrıcalıkları tanımlamak için SE_ASSIGNPRIMARYTOKEN_NAME gibi bir dizi dize sabiti tanımlar. Bu sabitler tüm sistemlerde aynıdır ve Winnt.h içinde tanımlanır. Windows tarafından tanımlanan ayrıcalıkların tablosu için bkz. Privilege Constants. Ancak, erişim belirtecindeki ayrıcalıkları alan ve ayarlayan işlevler, ayrıcalıkları tanımlamak için LUID türünü kullanır. Ayrıcalık için LUID değerleri bir bilgisayardan diğerine ve aynı bilgisayarda bir önyüklemeden diğerine farklılık gösterebilir. Dize sabitlerinden birine karşılık gelen geçerli LUID almak için LookupPrivilegeValueişlevinikullanın. LUID ilgili dize sabitine dönüştürmek için LookupPrivilegeNameişlevini kullanın.
Sistem, ayrıcalıkların her birini açıklayan bir dizi görünen ad sağlar. Bunlar, kullanıcıya ayrıcalık açıklaması görüntülemeniz gerektiğinde yararlıdır. LookupPrivilegeDisplayName işlevini kullanarak ayrıcalık için dize sabitine karşılık gelen bir açıklama dizesi alın. Örneğin, ABD İngilizcesi kullanan sistemlerde, SE_SYSTEMTIME_NAME ayrıcalığının görünen adı "Sistem saatini değiştir" şeklindedir.
Erişim belirtecinin belirli bir ayrıcalık kümesine sahip olup olmadığını belirlemek için PrivilegeCheck işlevini kullanabilirsiniz. Bu, öncelikle istemcinin kimliğine bürünen sunucu uygulamaları için yararlıdır.
Sistem yöneticisi, kullanıcı ve grup hesaplarının ayrıcalıklarını eklemek veya kaldırmak için Kullanıcı Yöneticisi gibi yönetim araçlarını kullanabilir. Yöneticiler, ayrıcalıklarla çalışmak için Yerel Güvenlik Yetkilisi (LSA) işlevlerini program aracılığıyla kullanabilir. LsaAddAccountRights ve LsaRemoveAccountRights işlevleri bir hesaptan ayrıcalık ekler veya kaldırır. LsaEnumerateAccountRights işlevi, belirtilen bir hesap tarafından tutulan ayrıcalıkları numaralandırır. LsaEnumerateAccountsWithUserRight işlevi, belirtilen ayrıcalığı barındıran hesapları numaralandırır.
İlgili konular