Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДРСП_11L_demo.doc
Скачиваний:
2
Добавлен:
18.11.2019
Размер:
852.48 Кб
Скачать

2.8. Маркери доступу

Кожен суб'єкт, яким в Windows може бути потік або процес, має маркер доступу, який ідентифікує суб'єкта при спробі його доступу до об'єкту. Тому також говорять, що маркер доступу описує контекст безпеки суб'єкта, тобто обмежує доступ суб'єкта до об'єктів.

У маркері доступу зберігається інформація, що ідентифікує користувача, від імені якого виконується потік або процес, і привілеї, якими володіє суб'єкт. Взагалі привілеєм називається право користувача виконати деяку дію по відношенню до деяких об'єктів або суб'єктів системи. Головна відзнака привілеїв від прав доступу полягає в тому, що, по-перше, привілеї стосуються суб'єктів, а не об'єктів системи, що охороняються; а по-друге, привілеї призначаються суб'єктам адміністратором системи, а правами доступу до об'єкту управляє власник цього об'єкту.

У таблиці. 36.5 перераховані привілеї і вбудовані облікові записи, яким ці привілеї призначаються за умовчанням в операційних системах Windows.

Таблиця 36.5. Привілеї, що призначаються обліковим записам за

умовчанням

Тепер розгледимо структуру маркера доступу. У маркері доступу зберігається наступна інформація:

SID облікового запису користувача;

список SID облікових записів груп, яким належить користувач;

ідентифікатор безпеки поточної сесії (logon session);

список привілеїв, якими володіє користувач і групи, в які він входить, на локальному комп'ютері;

ідентифікатор безпеки користувача або групи, який використовується за умовчанням для завдання власника новостворюваного або існуючого об'єкту, що охороняється;

ідентифікатор безпеки первинної групи користувача;

список DACL, яку система використовує за умовчанням при створенні об'єкту, що охороняється;

ідентифікатор процесу, який викликав створення маркера доступу;

значення, що визначає типа маркера доступу: первинний маркер або маркер, що заміщає первинний маркер маркером іншого користувача (impersonation token);

список SID, які обмежують доступ потоку до об'єктів, що охороняються, так звані обмежуючі SID (restricting SID);

значення, яке відзначає рівні заміщення сервером маркера доступу клієнта (impersonation levels);

статистична інформація про маркер доступу.

Пояснимо два поняття, які зустрічаються в описі маркера доступу, а саме, робота одного потоку в контексті безпеки іншого потоку і обмеження контексту безпеки процесу. Про первинну групу користувача було сказано в параграфі, присвяченому дескрипторам безпеки.

Перш за все скажемо про персоніфікацію маркерів доступу. Кожен потік має свій маркер доступу, який, як вже було сказано, визначає контекст безпеки цього потоку або, іншими словами, об'єкти, що охороняються, до яких потік має доступ. Тепер уявимо собі, що потік-клієнт посилає по мережі потоку-серверу запит на виконання деякої операції. Для того, щоб сервер не вийшов за межі контексту безпеки потоку-клієнта, він повинен працювати від імені клієнта, а не від свого імені. Така заміна контексту безпеці потоку називається підміною контексту безпеки. Підміна контексту безпеки потоку може виконуватися тільки за допомогою підміни маркера доступу потоку-сервера на маркер доступу потоку-клієнта. Тому маркер доступу і містить інформацію про те, чи є він первинним або заміщається маркером іншого користувача. Підміні маркера доступу потоку-сервера на маркер доступу потоку-клієнта будемо також назвати заміщенням маркера доступу (impersonation) Виходячи з цих міркувань, можна також сказати, що заміщення маркера доступу це здатність одного процесу використовувати атрибути захисту іншого процесу.

Потік-сервер може обробляти запити потоку-клієнта на чотирьох рівнях безпеки, кожен їх яких указує серверу, до якого ступеня він може виконувати роль клієнта. Далі перераховані ці рівні:

Security Anonymous level - анонімний рівень, тобто сервер не може ідентифікувати клієнта, який залишається анонімним;

Security Identification level - ідентифікуючий рівень, на цьому рівні клієнт може ідентифікувати клієнта, тобто може отримати будь-яку інформацію з ідентифікатора безпеки (SID) клієнта, але не може виконувати від імені клієнта ніяких дій;

Security Impersonation level - рівень підміни контексту безпеки, в цьому випадку потік-сервер може працювати від імені потоку-клієнта. Якщо потік-сервер працює на видаленому комп'ютері, то він має доступ тільки до локальних ресурсів на цьому комп'ютері. Інакше потік-сервер має доступ як до локальних, так і до мережевих ресурсів, що входять в контекст безпеки потоку-клієнта;

Security Delegation level - рівень делегування, на цьому рівні потік-клієнт повністю делегує свої повноваження потоку-серверу, який може розпоряджатися ними як на локальному, так і на видаленому комп'ютері. Цей рівень передачі повноважень реалізований тільки в операційних системах Windows 2000/XP.

Тепер розгледимо обмежуючі SID (restricting SID), само назва яких говорить про те, що вони використовуються для обмеження доступу суб'єкта до об'єктів. Це обмеження виконується таким чином.

Система управління безпекою при контролі доступу суб'єкта до об'єкту, що охороняється, перевіряє не лише ідентифікатор безпеки цього суб'єкта, але і його обмежуючі ідентифікатори безпеки.

На закінчення цього розділу скажемо, що маркери доступу самі є об'єктами, що охороняються, і тому для них також потрібно задавати атрибути безпеки. Доступ до дескриптора безпеки маркера доступу здійснюється так само, як і доступ до об'єкту ядра за допомогою функцій SetKernelObjectSecurity і GetKernelObjectSecurity.