Топ питань
Часова шкала
Чат
Перспективи
Ідентифікатор безпеки
З Вікіпедії, вільної енциклопедії
Remove ads
Ідентифікатор безпеки (англ. Security Identifier, SID) в операційних системах Windows) — це унікальний незмінний ідентифікатор користувача, групи користувачів або інших захищених елементів. Захищений елемент має один SID протягом всього циклу існування, і всі властивості цього елемента, включаючи його назву (ім'я), пов'язані з SID. Такий підхід дозволяє, зокрема, перейменовувати елементи без впливу на атрибути безпеки об'єктів, які відносяться до нього.
Windows використовує SID для ідентифікації машин та всіх інших об'єктів системи безпеки: облікових записів домену, користувачів і груп. Імена таких об'єктів є лише зрозумілішими для користувачів формами подання SID.
Remove ads
Структура ідентифікатора безпеки
Узагальнити
Перспектива
SID складається з 48-розрядного значення, за яким іде кілька 32-розрядних компонентів. Як правило, SID подають у форматі S-R-I-s-s... (див. таблицю).
Від початку використання захисту на основі ідентифікаторів безпеки номер версії структур SID дорівнює 1. Ідентифікатор уповноваженого органу показує, ким саме було створено SID, тобто хто володіє та керує обліковим записом, який пов’язаний з SID. Уповноважений орган представляють 48-бітовим числом, яке у Delphi (див. модуль Windows.pas) оголошено так[1]:
_SID_IDENTIFIER_AUTHORITY = record Value: array[0..5] of Byte; end; TSIDIdentifierAuthority = _SID_IDENTIFIER_AUTHORITY;
Уповноважені органи, які видають SID
Частково перелік уповноважених органів наведено у таблиці:
Згадані у таблиці ідентифікатори безпеки однакові для всіх систем Windows на платформі NT. Єдиним органом, який видає SID користувачам та групам, є SECURITY_NT_AUTHORITY. Такі ідентифікатори не є універсальними і розглядаються лише в межах окремої копії Windows.
Відносні ідентифікатори
Орган SECURITY_NT_AUTHORITY має перелік відносних ідентифікаторів, які вказують на можливі стандартні органи нижнього рівня. Так, SECURITY_LOCAL_SYSTEM_RID (18) визначає системний обліковий запис LocalSystem\Система, а SECURITY_NT_NON_UNIQUE (21) свідчить, що SID не є унікальним. Детальніше ознайомитися зі списком стандартних RID можна в MSDN.
Комбінуючи стандартні RID із відповідними їм уповноваженими органами, можна створювати стандартні SID. Вони представляють системних користувачів, відомих кожній копії Windows у будь-якій мережі.
Дослідження взаємозв'язку між SID та назвою користувача

Щоб уявити, що являє собою SID, проведемо такий експеримент. Системними засобами створимо локальний обліковий запис користувача (рівень привілеїв не важливий, він у подальшому буде видалений). Для цього потрібно:
- викликати вікно "Керувння комп’ютером" (наприклад, вибравши команду "Керування" у контекстному меню, викликаному на піктограмі "Мій комп’ютер" робочого столу);
- перейти до пункту "Локальні користувачі та групи" (Local Users and Groups), далі вибрати елемент "Користувачі" (Users);
- викликати контекстне меню і вибрати із нього команду "Створити користувача" (New User);
- у вікні, яке з’явиться, ввести назву користувача та пароль, і натиснути кнопку OK.
Далі щойно створеному користувачеві слід дати будь-які права на доступ до якогось файлу. Для цього потрібно викликати вікно властивостей файлу (наприклад, з Провідника Windows), перейти на сторінку "Безпека" та додати попередньо створеного користувача (див. рис.). На рисунку у списку присутній користувач з назвою TempUser.
Після цього видалимо раніше створеного користувача (скориставшись, наприклад, вже описаною утилітою "Керування комп’ютером") і ще раз подивимось на список користувачів, які мають доступ до нашого файлу (див. рис.). Тепер замість облікового запису TempUser буде присутній невідомий обліковий запис, для якого буде вказано його ідентифікатор безпеки (S-1-5-21-3840520539…). Зауважимо: щоб побачити вказаний ефект, може бути необхідне перезавантаження системи (після видалення користувача).
Із зображеного на малюнку SID бачимо, що його видано системою Windows (5, уповноважний орган SECURITY_NT_AUTHORITY). Першим уповноваженим органом нижнього рівня також є система безпеки, яка вказує, що ідентифікатор безпеки не є унікальним і діє лише в межах даної копії Windows (21, відносний ідентифікатор SECURITY_NT_NON_UNIQUE).
Remove ads
"Добре відомі" SID
Windows містить ряд жорстко визначених ідентифікаторів безпеки, які представляють типові (стандартні) захищені суб'єкти безпеки (користувачі, групи користувачів, облікові записи тощо). Їхні типові значення наведено у таблиці:
Повний список "добре відомих" SID можна прогрлянути у статті [2]
Імена відомих ідентифікаторів може змінюватися, тому для роботи з ними слід використовувати функції створення SID з зумовлених констант, а не використовувати ім'я відомого SID. Наприклад, в американській версії Windows є відомий SID назвою «BUILTIN\Administrator», який у поточні українській версії Windows має назву «BUILTIN\Адміністратор».
Remove ads
Робота з SID
Щоб отримати ідентифікатор безпеки для користувача з певним іменем, використовують функцію LookupAccountName (опис подано мовою Delphi[1]):
function LookupAccountName(
lpSystemName, lpAccountName: PWideChar;
Sid: PSID;
var cbSid: DWORD;
ReferencedDomainName: PWideChar;
var cbReferencedDomainName: DWORD;
var peUse: SID_NAME_USE
): BOOL;
Або наступну функцію PowerShell:
function get_sid($username) {
$objUser = New-Object System.Security.Principal.NTAccount($username)
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
}
Якщо потрібно отримати назву користувача за відомим ідентифікатором безпеки, використовують функцію LookupAccountSid (опис подано мовою Delphi[1]):
function LookupAccountSid(
lpSystemName: PWideChar;
Sid: PSID;
Name: PWideChar;
var cbName: DWORD;
ReferencedDomainName: PWideChar;
var cbReferencedDomainName: DWORD;
var peUse: SID_NAME_USE
): BOOL;
Див. також
Примітки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads