Jak działa kontrola dostępu
Gdy wątek próbuje uzyskać dostęp do zabezpieczanego obiektu, system udziela lub odmawia dostępu. Jeśli obiekt nie ma uznaniowej listy kontroli dostępu (DACL), system udziela dostępu; w przeciwnym razie system wyszukuje wpisy listy kontroli dostępu (ACEs) w DACL obiektu, które mają zastosowanie do wątku. Każda ACE w DACL obiektu określa prawa dostępu, które są dozwolone lub odrzucone dla podmiotu, którym może być konto użytkownika, konto grupowe lub sesja logowania .
Listy kontroli dostępu
System porównuje powiernika w każdym ACE z powiernikami zidentyfikowanymi w tokenie dostępu wątku . Token dostępu zawiera identyfikatory zabezpieczeń (SID), które identyfikują użytkownika i konta grupy, do których należy użytkownik. Token zawiera również identyfikator SID logowania , który identyfikuje bieżącą sesję logowania. Podczas sprawdzania dostępu system ignoruje identyfikatory SID grupy, które nie są włączone. Aby uzyskać więcej informacji na temat włączonych, wyłączonych i tylko-odmowy identyfikatorów SID, zobacz Atrybuty SID w tokenie dostępu.
Zazwyczaj system używa podstawowego tokenu dostępu wątku, żądającego dostępu. Jeśli jednak wątek podszywa się pod innego użytkownika, system używa tokenu podszywania się wątku .
System sprawdza poszczególne ACE w sekwencji do momentu wystąpienia jednego z następujących zdarzeń:
- Odmowa dostępu ACE jawnie odrzuca dowolny z żądanych praw dostępu do jednego z powierniczych wymienionych w tokenie dostępu wątku.
- Co najmniej jedna z dozwolonych kontroli dostępu dla zaufanych osób wymienionych w tokenie dostępu wątku jawnie udziela wszystkich żądanych praw dostępu.
- Wszystkie ACL zostały sprawdzone i nadal istnieje co najmniej jedno żądane prawo dostępu, które nie zostało jawnie dozwolone, w takim przypadku dostęp jest niejawnie blokowany.
Na poniższej ilustracji pokazano, jak DACL obiektu może zezwalać na dostęp do jednego wątku, odmawiając dostępu do innego.
W przypadku wątku A system odczytuje ACE 1 i natychmiast odmawia dostępu, ponieważ ACE odmawiająca dostępu ma zastosowanie do użytkownika w tokenie dostępu wątku. W takim przypadku system nie sprawdza ACEs 2 i 3. W przypadku wątku B, ACE 1 nie ma zastosowania, więc system przechodzi do ACE 2, który umożliwia dostęp do zapisu i ACE 3, który umożliwia dostęp do odczytu i wykonywania.
Ponieważ system przestaje sprawdzać listy ACE, gdy żądany dostęp jest wyraźnie udzielony lub odrzucony, kolejność ACE w listach DACL jest istotna. Należy pamiętać, że jeśli kolejność ACE była inna w tym przykładzie, system mógł udzielić dostępu do wątku A. W przypadku obiektów systemowych system operacyjny definiuje preferowaną kolejność ACL wDACL.