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

2.6. Дескриптори безпеки

Як вже мовилося на початку розділу, кожен об'єкт, що охороняється, має дескриптор безпеки (security descriptor) або скорочено SD, який створюється разом з об'єктом, що охороняється, і містить інформацію, необхідну для захисту об'єкту від несанкціонованого доступу. Дескриптор безпеки включає заголовок (header), який містить прапори, що управляють, і покажчики на наступні компоненти:

SID власника об'єкту;

SID первинної групи власника об'єкту;

покажчик на список управління дискреційним доступом - DACL;

покажчик на список управління системним доступом - SACL.

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

Кожен користувач, тобто його обліковий запис, може належати декільком групам, але одна з них має бути вибрана як первинна група користувача (primary group). Це зроблено для того, щоб ресурси, що створюються користувачем, були доступні іншим членам групи, до якої належить цей користувач. Така політика доступу до ресурсів визначається в додатках, сумісних із стандартом POSIX, або комп'ютерів Macintosh, що працюють на базі, які підключені до локальної мережі, що працює під управлінням сервера Windows. Тому дескриптор безпеки суб'єкта і містить ідентифікатор безпеки первинної групи. У операційних системах Windows як первинна група може бути вибрана будь-яка глобальна група домена або просто користувач цього домена. За умовчанням для кожного користувача система як первинна група визначає глобальну групу Domain Users. Тому щоб видалити користувача з цієї групи, потрібно спочатку включити його в іншу глобальну групу, а потім зробити цю групу його первинною групою.

Відзначимо, що в операційних системах Windows для роботи з дескрипторами безпеки об'єктів, що охороняються, ВИКОРИСТОВУЮТЬСЯ функції SetNamedSecuritylnfо, SetSecuritylnfo, GetNamedSecuritylnfo І GetSecuritylnfo. Невелике обмеження існує тільки для об'єктів ядра, а саме, функції GetNamedSecuritylnfo І SetNamedSecuritylnf про працюють ТІЛЬКИ З наступними об'єктами ядра: семафорами, подіями, мьютексами, чекаючими таймерами і відображеннями файлів в пам'ять.

2.7. Списки управління доступом acl

Список управління доступом (ACL) містить елементи, які називаються входами управління доступом (Access-Control Entries, АСОВІ). Кожен елемент АСОВІ містить наступну інформацію:

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

маску доступу, яка специфікує права доступу суб'єкта до об'єкту, що охороняється;

прапор, який визначає типа елементу АСОВІ;

прапори, які визначають властивості спадкоємства даного елементу АСОВІ;

прапори, які управляють аудитом доступу до об'єкту, що охороняється.

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

Маска доступу є 32-бітове поле, в якому кожен біт специфікує певне право доступу суб'єкта до об'єкту, що охороняється, за винятком 24-27 бітів, які зарезервовані для подальшого використання. Кожним правом доступу є набір операцій, які суб'єктові дозволяється або забороняється виконувати над об'єктом, що охороняється. У Windows права доступу також називаються дозволами (permissions). У операційних системах Windows NT визначено наступні чотири категорії прав доступу:

Specific Access Rigths - специфічні права доступу;

Standard Access Rights - стандартні права доступу;

Generic Access Rights - родові права доступу;

SACL Access Right - право доступу до списку управління системним доступом (SACL);

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

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

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

read_control - право читати інформацію з дескриптора безпеки об'єкту, за винятком інформації із списку SACL;

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

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

delete - право видаляти об'єкт, що охороняється;

synchronize - право використовувати об'єкт для синхронізації.

Стандартні права доступу встановлюються в 16-22 бітах маски доступу.

Родові права включають наступні чотири права:

generic_read - право читати вміст об'єкту;

generic_read - право запису в об'єкт;

generic_execute - право виконання об'єкту;

generic_all - об'єднує три попередніх права.

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

Для списку управління системним доступом (SACL) визначено єдине право:

access_system_security - право доступу до списку SACL дескриптора безпеки.

Воно дає суб'єктові можливість переглядати і змінювати вміст списку SACL. Цей прапор встановлюється в 23-ем біті маски доступу.

У операційній системі Windows 2000 також визначені права для доступу до об'єктів активного каталога (Active Directory), які тут розглядуватися не будуть.

Тепер перейдемо до прапора, який визначає типа елементу списку управління доступом. Елементи списку DACL можуть бути двох типів:

access_allowed_ace - елемент, що вирішує доступ суб'єкта до об'єкту, що охороняється;

access_denied_ace - елемент, що забороняє доступ суб'єкта до об'єкту, що охороняється.

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

Список SACL може містити тільки елементи типа:

system_audit_ace - елемент списку SACL.

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

Остання компоненту елементу списку управління доступом містить прапори, які задають властивості спадкоємства даного елементу АСОВІ.

Тобто ці прапори визначають, чи успадковується елемент АСОВІ списку управління доступом для новостворюваного об'єкту, що охороняється, який є дочерним по відношенню до поточного об'єкту, що охороняється. Наприклад, хай як об'єкт, що охороняється, виступає каталог, і елемент АСОВІ списку управління доступів в дескрипторі безпеки цього об'єкту є успадкованим. Тоді копія цього елементу буде поміщена у відповідний список управління доступом новостворюваного підкаталогу в даному каталозі. Якщо ж елемент АСОВІ неуспадкований, то цього не станеться. Для управління спадкоємством елементів списку управління доступом використовуються наступні прапори:

object_inherit_ace - елемент успадковується неконтейнерним дочерним об'єктом. Якщо не встановлений прапор no_propagate_inherit_ace, то елемент також успадковується і контейнерним дочерним об'єктом, але при цьому в дочірньому об'єкті встановлюється прапор inherit_only_ace;

container_inherit_ace - елемент успадковується тільки контейнерним дочерним об'єктом;

no_propagate_inherit_ace - елемент був успадкований від батьківського об'єкту, але прапори object_inherit_ace і container_inherit_ace в елементі скидаються, що відміняє подальше спадкоємство цього елементу;

inherit_only_ace - відзначає, що елемент був успадкований від батьківського об'єкту; цей елемент не бере участь в контролі доступу до об'єкту;

inherited_ace - відзначає, що елемент був успадкований від батьківського об'єкту.

При цьому зробимо наступне зауваження - операційна система Windows 2000 автоматично виконує поширення успадкованих елементів списку управління доступом в списки управління доступом дочірніх об'єктів, якщо ці елементи включаються в список управління доступом за допомогою функцій SetNamedSecuritylnfo І SetSecuritylnfo. To є якщо елемент зі встановленим прапором спадкоємства container_inherit_ace включається в список управління доступом до каталога, то цей елемент буде включений також в списки управління доступом всіх підкаталогів цього каталога.

Тепер приведемо правила, слідуючи яким виконується автоматичне спадкоємство елементів списку управління DACL:

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

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

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

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

Особливо варто звернути увагу на останнє правило, оскільки при доступі суб'єкта до об'єкту система розрізняє випадки відсутності списку DACL і наявність порожнього списку DACL, тобто списку DACL, який не містить елементів. У першому випадку доступ до об'єкту відкритий для всіх суб'єктів, а в другому - доступ до об'єкту закритий для всіх суб'єктів. Детальніше про контроль доступу суб'єктів до об'єкту, що охороняється, буде сказано в разд. 36.9.

На закінчення цього розділу розгледимо прапори, які управляють аудитом доступу до об'єкту, що охороняється. Визначено два прапори, керівники аудитом, а саме:

successful_access_ace_flag - відзначає, що потрібно генерувати аудиторське повідомлення при успішному відкритті доступу до об'єкту;

failed_access_ace_flag - відзначає, що потрібно генерувати аудиторське повідомлення при невдалій спробі відкриття доступу до об'єкту.

Відзначимо, що ці прапори використовуються тільки в елементах, що належать спискам управління доступом SACL, і можуть бути встановлені як окремо, так і спільно.