Как работает AccessCheck

Когда поток пытается получить доступ к защищаемому объекту, система либо предоставляет, либо запрещает доступ. Если у объекта нет списка управления доступом на уровне пользователей (DACL), система предоставляет доступ; В противном случае система ищет контроль доступа записи (ACE) в daCL объекта, которые применяются к потоку. В каждом ACE в DACL объекта указываются права доступа, разрешенные или запрещенные для доверенного лица, которые могут быть учетной записью пользователя, учетной записью группы или сеансом входа.

Списки DACCl

Система сравнивает доверенного лица в каждом ACE с доверенными лицами, указанными в маркере доступа потока. Маркер доступа содержит идентификаторы безопасности (SID), которые идентифицируют пользователя и учетные записи группы, к которым принадлежит пользователь. Маркер также содержит идентификатор безопасности входа , который идентифицирует текущий сеанс входа. Во время проверка доступа система игнорирует идентификаторы безопасности групп, которые не включены. Дополнительные сведения о включенных, отключенных и запрещенных идентификаторах БЕЗОПАСНОСТИ см. в разделе Атрибуты SID в маркере доступа.

Как правило, система использует основной маркер доступа потока, запрашивающего доступ. Однако если поток олицетворяет другого пользователя, система использует токен олицетворения потока.

Система проверяет каждый ACE последовательно, пока не произойдет одно из следующих событий:

  • ACE с запретом в доступе явно запрещает какие-либо из запрошенных прав доступа одному из доверенных лиц, перечисленных в маркере доступа потока.
  • Одно или несколько ACE, разрешенных доступом, для доверенных лиц, перечисленных в маркере доступа потока, явно предоставляют все запрошенные права доступа.
  • Все ACE были проверены, и по-прежнему есть по крайней мере одно запрошенное право доступа, которое не было явно разрешено. В этом случае доступ неявно запрещен.

На следующем рисунке показано, как DACL объекта может разрешить доступ к одному потоку, запрещая доступ к другому.

dacl, предоставляющий разные права доступа к разным потокам

Для потока A система считывает ACE 1 и немедленно запрещает доступ, так как ACE с запретом доступа применяется к пользователю в маркере доступа потока. В этом случае система не проверка ACE 2 и 3. Для потока B ACE 1 не применяется, поэтому система переходит к ACE 2, который разрешает доступ на запись, и ACE 3, который разрешает доступ на чтение и выполнение.

Так как система перестает проверять ACE, когда запрошенный доступ явно предоставлен или запрещен, важен порядок ACE в списке управления доступом. Обратите внимание, что если порядок ACE в примере отличается, система могла бы предоставить доступ к потоку A. Для системных объектов операционная система определяет предпочтительный порядок ACE в DACL.