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