Идентификаторы безопасности
Идентификатор безопасности (SID) — это уникальное значение переменной длины, используемое для идентификации доверенного лица. Каждая учетная запись имеет уникальный идентификатор безопасности, выданный центром сертификации, таким как контроллер домена Windows, и хранящийся в базе данных безопасности. Каждый раз, когда пользователь входит в систему, система получает идентификатор безопасности для этого пользователя из базы данных и помещает его в маркер доступа для этого пользователя. Система использует sid в маркере доступа для идентификации пользователя во всех последующих взаимодействиях с безопасностью Windows. Если идентификатор sid используется в качестве уникального идентификатора пользователя или группы, его нельзя использовать повторно для идентификации другого пользователя или группы.
Безопасность Windows использует идентификаторы безопасности в следующих элементах безопасности:
- В дескрипторах безопасности для идентификации владельца объекта и основной группы
- В записях контроля доступа для определения доверенного лица, для которого разрешен, запрещен или проверен доступ.
- В маркерах доступа — для идентификации пользователя и групп, к которым принадлежит пользователь.
В дополнение к уникально созданным идентификаторам безопасности для конкретного домена, назначенным определенным пользователям и группам, существуют хорошо известные идентификаторы безопасности , которые определяют универсальные группы и универсальных пользователей. Например, известные идентификаторы безопасности ,Все и Мир, идентифицируют группу, в которую входят все пользователи.
Большинству приложений никогда не требуется работать с идентификаторами БЕЗОПАСНОСТИ. Так как имена известных идентификаторов безопасности могут различаться, следует использовать функции для создания идентификатора безопасности на основе предопределенных констант, а не имени хорошо известного идентификатора безопасности. Например, английская версия операционной системы Windows для США имеет хорошо известный идентификатор безопасности с именем BUILTIN\Administrators, который может иметь другое имя в международных версиях системы. Пример создания хорошо известного идентификатора безопасности см. в разделе Поиск идентификатора безопасности в маркере доступа на C++.
Если вам нужно работать с идентификаторами БЕЗОПАСНОСТИ, не управляйте ими напрямую. Вместо этого используйте следующие функции.
Функция | Описание |
---|---|
AllocateAndInitializeSid | Выделяет и инициализирует идентификатор безопасности с указанным количеством дополнительных учетных данных. |
ConvertSidToStringSid | Преобразует идентификатор безопасности в формат строки, подходящий для отображения, хранения или транспорта. |
ConvertStringSidToSid | Преобразует идентификатор безопасности строкового формата в допустимый функциональный идентификатор безопасности. |
CopySid | Копирует идентификатор безопасности источника в буфер. |
EqualPrefixSid | Проверяет два значения префикса SID на равенство. Префикс SID — это весь идентификатор безопасности, за исключением последнего значения подчиненного. |
EqualSid | Проверяет два идентификатора безопасности на равенство. Они должны точно совпадать, чтобы считаться равными. |
FreeSid | Освобождает ранее выделенный идентификатор безопасности с помощью функции AllocateAndInitializeSid . |
GetLengthSid | Извлекает длину идентификатора безопасности. |
GetSidIdentifierAuthority | Извлекает указатель на центр идентификатора для идентификатора sid. |
GetSidLengthRequired | Извлекает размер буфера, необходимого для хранения идентификатора безопасности с указанным числом вложенных учетных данных. |
GetSidSubAuthority | Извлекает указатель на указанную вложенную проверку подлинности в идентификаторе безопасности. |
GetSidSubAuthorityCount | Извлекает количество вложенных учетных данных в идентификаторе безопасности. |
InitializeSid | Инициализирует структуру SID . |
IsValidSid | Проверяет допустимость идентификатора безопасности, проверяя, что номер редакции находится в пределах известного диапазона и что количество вложенных авторов меньше максимального. |
LookupAccountName | Извлекает идентификатор безопасности, соответствующий указанному имени учетной записи. |
LookupAccountSid | Извлекает имя учетной записи, соответствующее указанному идентификатору безопасности. |