В некой базе данных Active Directory могут храниться примерно 2 миллиарда объектов. Как она будет уникально идентифицировать все объекты? Всякий раз когда в Active Directory создаётся некий объект, ему будет назначаться одно или два уникальных значения. Если это объект пользователя или группы, они получат GUID (globally unique identifier, глобально уникальный идентификатор) и SID (security identifier, идентификатор безопасности). Величина значения GUID будет сохранена в атрибуте objectGUID каждого объекта, а числовое значение SID будет храниться в атрибуте objectSid каждого объекта.
Для просмотра отображения значений GUID и SID для определённой учётной записи пользователя в его контроллере домена можно запустить такую команду PowerShell:
Get-ADUser username
Здесь username следует заменить на реальное имя пользователя искомого участника.
На следующем снимке экрана ObjectGUID приводит отображение значения GUID, а SID представление значения SID, связанных с учётной записью запрошенного пользователя.
Active Directory - Глобально уникальные идентификаторы и идентификаторы безопасности
ObjectGUID является некий значением из 128- бит и применяется ко всем объектам в Active Directory. Это значение служит не только для конкретного домена Active Directory. Оно также имеет силу и глобально. После того как GUID назначен некому объекту, он будет существовать до тех пор пока сам объект не будет удалён из данного каталога. Изменение или перемещение объектов не будет изменять значение величины самого GUID. Значение атрибута ObjectGUID будет опубликовано для имеющихся серверов глобального каталога. Когда некому приложению в домене требуется отыскать какой- то объект пользователя, наилучшим методом будет запрос при помощи ObjectGUID, ибо он выдаст точный результат.
Совет
Существует недопонимание относительно того что значение GUID является некой уникальной величиной. Никакая имеющаяся документация не говорит что это значение уникально. Вся она сообщает лишь что достаточно маловероятно иметь некий дублирующий GUID, так как тот метод, который применяется для его выработки является комплексным.
Величина значения SID для некого объекта уникальна внутри своего домена. Определение значения SID будет изменено если объект его пользователя мигрирует в другой домен. Некое назначенное в одном домене значение SID не будет приниматься другим доменом.
Как только некий объект пользователя мигрирует в другой домен, будет выработано новое значение SID. После этого старое значение SID будет сохранено в соответствующем атрибуте sIDHistory. Этот атрибут может содержать множество значений. Когда конкретная система создаёт некий маркер (ticket) Kerberos для аутентификации пользователя, она будет принимать во внимание некое новое значение SID, а также все прочие SID, перечисляемые в его атрибуте sIDHistory. sIDHistory является важным, в особенности при перестроении Active Directory.
Имеющиеся в определённом домене ресурсы принимают решение дать полномочия пользовательской учётной записи или запретить ей доступ на основании ACL (access control list, списка контроля доступа). Этот ACL использует имеющиеся значения SID. Поэтому, когда некий объект перемещается в какой- то другой домен без sIDHistory, он утратит доступ к ресурсам пока не будет изменён сам ACL. Однако когда система при подтверждении некого маркера доступа принимает во внимание sIDHistory, и когда старое значение SID перемещается в свой новый домен, этот пользователь всё ещё будет иметь возможность доступа к тем ресурсам, которые ему назначены.