Основы программирования в Win32API. Марапулец Ю.В. - 97 стр.

UptoLike

Составители: 

необходимо контролировать. Windows может не знать о существовании этих
объектов, однако это не значит, что хранящаяся в них информация не нуж-
дается в защите.
Таблица 7.3
Тип объекта Примеры Функции
Файлы (Files)
Файлы NTFS, именованные ка-
налы
GetSecurity, SetSecurity
Пользователь (User) Окна, меню
GetUserObjectSecurity, SetUse-
rObjectSecurity
Ядро ОС (Kernel)
Дескрипторы процессов и пото-
ков, объекты отображения файлов
на память, дескрипторы синхро-
низации
GetKernelObjectSecurity,
SetKernelObjectSecurity
Реестр (Registry) Ключи
RegGetKeySecurity, Reg-
SetKeySecurity
Службы (Services) Любая служба
QueryServiceObjectSecurity,
SetServiceObjectSecurity
Частный (Private)
Определяемые пользователем
объекты
CreatePrivateObjectSecurity,
GetPrivateObjectSecurity, Set-
PrivateObjectSecurity, Destroy-
PrivateObjectSecurity
Представьте, например, что вы разрабатываете базу данных, содержащую
информацию о заработках сотрудников. Для защиты этой информации можно
использовать ваши собственные списки ACL, содержащие сведения о том, кто
имеет доступ к данным о зарплате. Если база данных получает запрос от неав-
торизированного источника, система может внести сообщение об этом в жур-
нал аудита, полностью запретить доступ к базе данных или передать обратив-
шемуся клиенту все запрашиваемые им данные, за исключением секретной
информации, вместо которой будет передан символ звездочки.
Рассмотрим принцип построения списков ACL [4]. Список ACL – это область
памяти, содержащая заголовок ACL и некоторое количество (или ни одной) запи-
сей АСЕ. В свою очередь, запись АСЕ включает в себя ACE_HEADER и одну из
структур: ACCESS_ALLOWED_ACE (соответствует разрешающей записи) или
ACCESS_DENIED_ACE (соответствует запрещающей записи). При заполнении
списков АСЕ в Windows NT 4.0 (и в более ранних версиях) следовало следить за
тем, чтобы записи типа ACCESS_DENIED_ACE располагались в списке раньше,
чем все остальные записи. Дело в том, что запрещающие записи имеют больший
вес, чем разрешающие записи. Если в списке ACL одна запись разрешает некото-
рому пользователю доступ к объекту, а другая запись запрещает этому же пользо-
вателю доступ к этому же объекту, то в силу вступает именно запрещающая за-
пись. В этом случае разрешающая запись игнорируется, и пользователь теряет
право на доступ к объекту. В Windows NT 4.0 это условие выполнялось только в
случае, если запрещающие записи располагались в начале списка ACL.
Одной из проблем, возникающих при работе с ACL, является то обстоя-
97
необходимо контролировать. Windows может не знать о существовании этих
объектов, однако это не значит, что хранящаяся в них информация не нуж-
дается в защите.
                                                                               Таблица 7.3

     Тип объекта                Примеры                             Функции
                        Файлы NTFS, именованные ка-
     Файлы (Files)                                           GetSecurity, SetSecurity
                                  налы
                                                          GetUserObjectSecurity, SetUse-
  Пользователь (User)            Окна, меню
                                                                 rObjectSecurity
                         Дескрипторы процессов и пото-
                        ков, объекты отображения файлов     GetKernelObjectSecurity,
   Ядро ОС (Kernel)
                         на память, дескрипторы синхро-     SetKernelObjectSecurity
                                     низации
                                                             RegGetKeySecurity, Reg-
   Реестр (Registry)                Ключи
                                                                  SetKeySecurity
                                                           QueryServiceObjectSecurity,
  Службы (Services)             Любая служба
                                                             SetServiceObjectSecurity
                                                           CreatePrivateObjectSecurity,
                         Определяемые пользователем       GetPrivateObjectSecurity, Set-
   Частный (Private)
                                  объекты                 PrivateObjectSecurity, Destroy-
                                                               PrivateObjectSecurity

     Представьте, например, что вы разрабатываете базу данных, содержащую
информацию о заработках сотрудников. Для защиты этой информации можно
использовать ваши собственные списки ACL, содержащие сведения о том, кто
имеет доступ к данным о зарплате. Если база данных получает запрос от неав-
торизированного источника, система может внести сообщение об этом в жур-
нал аудита, полностью запретить доступ к базе данных или передать обратив-
шемуся клиенту все запрашиваемые им данные, за исключением секретной
информации, вместо которой будет передан символ звездочки.
     Рассмотрим принцип построения списков ACL [4]. Список ACL – это область
памяти, содержащая заголовок ACL и некоторое количество (или ни одной) запи-
сей АСЕ. В свою очередь, запись АСЕ включает в себя ACE_HEADER и одну из
структур: ACCESS_ALLOWED_ACE (соответствует разрешающей записи) или
ACCESS_DENIED_ACE (соответствует запрещающей записи). При заполнении
списков АСЕ в Windows NT 4.0 (и в более ранних версиях) следовало следить за
тем, чтобы записи типа ACCESS_DENIED_ACE располагались в списке раньше,
чем все остальные записи. Дело в том, что запрещающие записи имеют больший
вес, чем разрешающие записи. Если в списке ACL одна запись разрешает некото-
рому пользователю доступ к объекту, а другая запись запрещает этому же пользо-
вателю доступ к этому же объекту, то в силу вступает именно запрещающая за-
пись. В этом случае разрешающая запись игнорируется, и пользователь теряет
право на доступ к объекту. В Windows NT 4.0 это условие выполнялось только в
случае, если запрещающие записи располагались в начале списка ACL.
     Одной из проблем, возникающих при работе с ACL, является то обстоя-

                                            97