Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1233

.pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
625.43 Кб
Скачать

} ACL;

За заголовком следуют (если AceCount отличен от нуля) входы управления доступом (AccessControl Entries) - ACE. Каждый ACE

идентифицирует пользователя, группу и предоставленный им доступ. Входы нумеруются от нуля. При редактировании ACL приложение ссылается к ACE по индексу.

Существует два типа ACL: Специфический и системный. Специфический управляется владельцем объекта или тем, кому предоставлен доступ WRITE_DAC к объекту. Например, владелец файла может использовать специфический ACL для управления перечнем пользователей и групп, которым разрешен или запрещен доступ к файлу.

Объект также может иметь системный уровень безопасности, представленный в форме системного ACL. Системные ACL управляются системным администратором и позволяют отслеживать попытки доступа к объекту.

Чтобы изменить ACL дескриптора безопасности, приложение в общем случае инициализирует новый ACL, добавляет в него элементы

ACE, а затем с помощью функций SetSecurityDescriptorDacl или SetSecurityDescriptorSacl добавляет новый ACL к дескриптору. GetSecurityDescriptorDacl и GetSecurityDescriptorSacl возвращают ука-

затель к ранее существовавшему ACL в дескрипторе так, чтобы приложение смогло скопировать из него информацию в новый ACL.

SID - идентификатор безопасности

typedef PVOID PSID;

SID представляет собой структуру переменной длины, используемую для идентификации пользователей или групп. Доступ к SID возможен только с использованием специализированных функций Win32.

SECURITY_ATTRIBUTES - Атрибуты безопасности

Структура содержит прежде всего указатель на дескриптор безопасности объекта.

typedef struct _SECURITY_ATTRIBUTES {

DWORD

nLength;

// Длина структуры в байтах

LPVOID

lpSecurityDescriptor;

// Указатель на дескриптор

BOOL

bInheritHandle;

// Флаг наследования

} SECURITY_ATTRIBUTES;

Указатель на дескриптор безопасности объекта lpSecurityDescriptor может быть задан значением NULL, что обеспечивает стандартный уровень защиты. Флаг наследования идентификатора bInheritHandle разрешает наследование при создании нового процесса.

МАСКИ ДОСТУПА

Каждый ACE включает маску доступа, которая определяет возможные действия для отдельного типа объекта. Разрешения предоставляются или отклоняются на основании этой маски. Маска строится из специфических и стандартных типов доступа к объекту. К специфическим относятся, например, ReadData (чтение данных), WriteData

(запись данных), AppendData (присоединить данные), Execute (выполнить) и др. Стандартные типы относятся ко всем объектам и включают следующие разрешения доступа:

SYNCHRONIZE - синхронизация доступа;

WRITE_OWNER - назначение владельца;

WRITE_DAC - предоставление или отклонение доступа на запись для несистемного ACL;

READ_CONTROL - предоставление или отклонение доступа на чтение для дескриптора безопасности;

DELETE - предоставление или отклонение доступа на удаление. Так, например, общий тип доступа к файлу FILE_GENERIC_READ

сформирован из специфических

STANDARD_RIGHTS_READ FILE_READ_DATA FILE_READ_ATTRIBUTES FILE_READ_EA

и стандартного

SYNCHRONIZE

типов.

Специфические и стандартные типы подробно представлены в журнале безопасности.

ПРОВЕРКА ПРАВИЛЬНОСТИ ДОСТУПА

Когда пользователь пытается обратиться к объекту, Windows NT сравнивает информацию безопасности в маркере доступа пользователя с информацией безопасности в днскрипторе защиты объекта. Запрашиваемая маска доступа создается для субъекта на основании типа доступа, который пользователь пытается получить. Эта маска сравнивается с ACL объекта. Каждый ACL и ACE оценивается следующим образом:

1.Идентификатор безопасности в ACE сравнивается с набором идентификаторов безопасности в маркере доступа пользователя. Если соответствие не найдено, то ACE пропускается.

2.В случае отклонения доступа система проверяет запрашиваемую маску доступа на предмет содержания только READ_CONTROL или/и WRITE_DAC. Доступ предоставляется, если запрашивающий пользователь является владельцем объекта.

3.Для ACE AccessDenied (элемент для отказа в доступе) доступ в маске доступа ACE сравнивается с запрашиваемой маской доступа. При совпадении дальнейшая обработка не производится и доступ отклоняется.

4.Для ACE AccessAllowed (элемент для разрешения доступа) доступ в ACE сравнивается с перечисленными в запрашиваемой маске доступа. Если все доступы совпадают с ACE, обработка прекращается

ипредоставляется доступ.

5.В конце ACL, если содержимое запрашиваемой маски доступа не является полностью согласованным, доступ отклоняется.

81

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]