Поделиться через


Идентификаторы безопасности

Идентификаторбезопасности(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 Извлекает имя учетной записи, соответствующее указанному идентификатору безопасности.