Управление учетными записями пользователей Windows Vista: взгляд изнутри

Published on Март 6, 2009 by   ·   Комментариев нет

Управление учетными записями пользователей (UAC) — функция Windows Vista, которую часто недооценивают. В моей серии из трех статей в журнале TechNet Magazine, посвященной нововведениям в ядре Windows Vista, которую можно прочесть на веб-узле technetmagazine.com, я не касался UAC, поскольку чувствовал, что эта тема достойна отдельной статьи.

В этой статье мы затронем проблемы, которые решает UAC, а также архитектуру и реализацию ее ключевых технологий. Эти технологии включают пересмотр операций, которые ранее требовали административных прав; облегченную виртуализацию, которая помогает программам правильно работать без административных привилегий; возможность явного запроса программами административных прав и изоляцию административных процессов от неадминистративных, работающих в той же пользовательской системе.

Назначение UAC

Функция UAC призвана обеспечить пользователям возможность работать с правами обычного пользователя, не прибегая к административным. Обладая административными правами, пользователь может просматривать и изменять любую часть операционной системы, включая код и данные других пользователей и даже самой Windows®. Без административных прав пользователи не могут случайно (или преднамеренно) изменить системные параметры, вредоносная программа не может изменить параметры системной безопасности или отключить антивирусное программное обеспечение, а пользователи не могут нарушить безопасность важных данных других пользователей на общедоступных компьютерах. Работа с правами обычного пользователя, таким образом, помогает уменьшить количество срочных вызовов службы поддержки в корпоративных средах, смягчить ущерб от вредоносной программы, способствует более четкой работе домашних компьютеров и защищает уязвимые данные на общедоступных.

С помощью UAC предполагалось решить несколько проблем с тем, чтобы работа под учетной записью обычного пользователя стала общепринятой практикой. Во-первых, до Windows Vista™ общепринятой моделью использования Windows была работа с привилегиями администратора. Разработчики программного обеспечения почему-то считали, что их программы должны иметь получать доступ и изменять любой файл, параметр реестра или настройку операционной системы. Даже когда в Windows NT® были введены функции безопасности и разные уровни доступа для административных учетных записей и обычных пользователей, в процессах настройки продолжала широко использоваться встроенная учетная запись “Администратор” или учетная запись, входящая в группу “Администраторы”.

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

Решение этих проблем с помощью UAC состоит в том, чтобы большинство приложений запускать с правами обычного пользователя, исключить потребность в частом использовании прав администратора и поощрять разработчиков программного обеспечения создавать приложения, работающие с правами обычного пользователя. UAC достигает этого, реже требуя административных прав, обеспечивая работу более ранних версий приложений с правами обычного пользователя, позволяя обычным пользователями легко получать административные права (когда они в них действительно нуждаются), а администраторам — работать так, как если бы они были обычными пользователями.

Работа с правами обычного пользователя

В ходе полной проверки всех административных операций во время разработки Windows Vista было установлено, что многие из них могли бы выполняться обычными пользователями без ущерба для безопасности системы. К примеру, даже корпорации, в которых на настольных системах Windows XP принято использовать учетные записи обычных пользователей, не могли удалить своих мобильных пользователей из группы “Администраторы” по той простой причине, что Windows XP не делает отличий между изменением часового пояса и изменением системного времени. Пользователь переносного компьютера, который хочет настроить локальный часовой пояс так, чтобы в поездках его встречи правильно отображались в календаре, должен иметь привилегию “Изменение системного времени” (внутреннее имя SeSystemTimePrivilege), которая по умолчанию предоставляется только администраторам.

Время обычно используется в протоколах безопасности, таких как Kerberos, но часовой пояс влияет только на способ отображения времени. Поэтому в Windows Vista добавлена новая привилегия, “Изменение часового пояса” (SeTimeZonePrivilege), которая назначена группе “Пользователи” (см. рис. 1). Это позволяет корпоративным пользователям переносных компьютеров работать с учетными записями обычных пользователей.

Пользователи vista

Рис. 1 Привилегия “Изменение часового пояса”

Windows Vista также позволяет обычным пользователям настраивать параметры WEP-шифрования при подключении к беспроводным сетям, создавать подключения к виртуальной частной сети, изменять параметры управления электропитанием и устанавливать критические обновления Windows. Кроме того, в Windows Vista введены параметры групповой политики, с помощью которых обычные пользователи могут устанавливать драйверы принтера и других устройств, одобренные ИТ-администраторами, и устанавливать элементы управления ActiveX® с одобренных администраторами веб-узлов.

А что же потребительские и бизнес-приложения, которые неправильно работали с учетными записями обычного пользователя? Хотя для работы некоторых программ действительно требуются административные права, многие из них совершенно необоснованно хранят пользовательские данные в областях, общих для всей системы. Корпорация Майкрософт рекомендует, чтобы установщики глобальных приложений, которые должны работать с административными правами, для хранения исполняемых файлов и вспомогательных данных приложений создавали подкаталоги в каталоге %ProgramFiles%, а для параметров приложений — подраздел в разделе реестра HKEY_LOCAL_MACHINE\Software. Приложение может работать с разными учетными записями пользователей и поэтому должно хранить данные пользователей в соответствующих им каталогах %AppData%, а параметры, относящиеся к данному пользователю — в профиле пользователя в разделе реестра HKEY_CURRENT_USER\Software. Учетные записи обычного пользователя не имеют доступа для записи к каталогу %ProgramFiles% и разделу HKEY_LOCAL_MACHINE\Software. Однако, поскольку большинство систем Windows является однопользовательскими, а большинство пользователей вплоть до Windows Vista были администраторами, то приложения, даже если неправильно сохраняли пользовательские данные и параметры в этих местах, в любом случае работали.

В Windows Vista эти старые приложения могут работать с учетными записями обычного пользователя за счет применения виртуализации файловой системы и пространства имен реестра. Когда приложение изменяет данные в частях файловой системы или реестра, общих для всей системы, и эта операция проходит неудачно из-за отказа в доступе, Windows перенаправляет операцию в область соответствующего пользователя. Когда приложение считывает данные из системно-глобального размещения, Windows сначала проверяет данные в области пользователя и, если их там не находит, разрешает чтение из глобального размещения.

Для целей этой виртуализации Windows Vista обрабатывает процесс как устаревший, если он 32-разрядный (а не 64-разрядный), выполняется не с административными правами и не имеет файла манифеста, указывающего, что он написан для Windows Vista. Любые операции, происходящие из процесса, не подпадающего под это определение, включая доступ к сетевому общему файловому ресурсу, не виртуализуются. Состояние виртуализации процесса хранится в виде флага в его маркере, представляющем собой структуру данных ядра, которая отслеживает контекст безопасности процесса, включая его учетную запись пользователя, членство в группах и привилегии.

Чтобы увидеть состояние виртуализации процесса, можно добавить столбец “Виртуализация” к странице “Процессы” диспетчера задач. Для большинства компонентов Windows Vista, включая диспетчер окон рабочего стола (Dwm.exe), подсистему клиент-серверной среды выполнения (Csrss.exe) и проводник, виртуализация отключена, поскольку они либо обладают манифестом Windows Vista, либо выполняются с административными правами и, следовательно, не допускают виртуализацию. Для обозревателя Internet Explorer® (iexplore.exe) виртуализация включена, так как он может поддерживать элементы управления ActiveX и сценарии и не должен полагаться на то, что они будут правильно работать с правами обычного пользователя.

Области файловой системы, виртуализуемые для устаревших процессов, — это %ProgramFiles%, %ProgramData% и %SystemRoot%, за исключением некоторых определенных подкаталогов. Однако из виртуализации исключаются все файлы с расширением исполняемого файла, в том числе EXE, BAT, SCR, VBS и другие. В результате программы, которые обновляют себя под учетной записью обычного пользователя, терпят сбой вместо создания частных версий своих исполняемых файлов, которые не видны администратору, запускающему глобальный модуль обновления. Чтобы добавить к списку исключений дополнительные расширения, введите их в следующем разделе реестра и перезагрузите компьютер:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Luafv\Parameters\ExcludedExtensionsAdd

Для ввода нескольких расширений следует использовать мультистроковый тип, вводя каждое расширение в отдельной строке без начальной точки.

Изменения, производимые в виртуализованных каталогах устаревшими процессами, перенаправляются в виртуальный корневой каталог пользователя, %LocalAppData%\VirtualStore. Например, если виртуализованный процесс, работающий в моей системе, создает файл C:\Windows\Application.ini, фактически создается файл C:\Users\Markruss\AppData\Local\VirtualStore\Windows\Application.ini. Элемент пути Local указывает на тот факт, что если учетная запись имеет перемещаемый профиль, виртуализованные файлы не перемещаются с остальной частью профиля.

Если в проводнике перейти к каталогу, содержащему виртуализованные файлы, на панели инструментов появляется кнопка “Файлы совместимости” (рис. 2). Нажатие этой кнопки открывает соответствующий подкаталог VirtualStore, в котором собраны виртуализованные файлы.

Изменение системного времени пользователем

Рис. 2 Кнопка “Файлы совместимости” говорит о наличии где-то рядом виртуализованных файлов

Драйвер фильтра UAC для виртуализации файлов (%SystemRoot%\System32\Drivers\Luafv.sys) реализует виртуализацию файловой системы. Поскольку это драйвер фильтра файловой системы, он видит все операции в файловой системе, но реализует функциональные возможности только для операций из устаревших процессов. Как видно на рисунке, он изменяет путь целевого файла для устаревшего процесса, который создает файл в размещении, общем для всей системы, но не делает этого для процесса приложения Windows Vista, работающего с правами обычного пользователя. Устаревший процесс полагает, что операция прошла успешно, если она фактически создала файл в размещении, полностью доступном пользователю. Но применяемые по умолчанию разрешения для каталога \Windows не дают доступа к нему приложению, написанному для Windows Vista.

Виртуализация реестра реализована несколько иначе, чем виртуализация файловой системы. Виртуализованные разделы реестра включают большую часть ветви HKEY_LOCAL_MACHINE\Software, но есть и многочисленные исключения, например следующие:

HKLM\Software\Microsoft\Windows
HKLM\Software\Microsoft\Windows NT
HKLM\Software\Classes

Виртуализуются только разделы, которые часто изменяются устаревшими приложениями, но не вызывают проблем совместимости или взаимодействия. Windows перенаправляет операции изменения виртуализуемых разделов устаревшим приложением в виртуальный корневой раздел реестра пользователя в разделе HKEY_ CURRENT_USER\Software\Classes\VirtualStore. Этот раздел расположен в файле %LocalAppData%\Microsoft\Windows\UsrClass.dat, в кусте Classes пользователя, который, как и все прочие данные виртуализованных файлов, с перемещаемым профилем пользователя не перемещается.

iphone spy

Вместо хранения фиксированного списка виртуализованных размещений, как это делается для файловой системы, состояние виртуализации раздела хранится в виде флага REG_ KEY_DONT_VIRTUALIZE в самом разделе. С помощью служебной программы Reg.exe можно просмотреть этот флаг, а также два других флага, связанные с виртуализацией, — REG_KEY_ DONT_SILENT_FAIL и REG_KEY_ RECURSE_FLAG. Если флаг REG_KEY_DONT_SILENT_FAIL установлен и раздел не виртуализован (установлен флаг REG_KEY_DONT_VIRTUALIZE), устаревшему приложению, которому иначе было бы запрещено выполнять операции с разделом, предоставляется любой уровень доступа к разделу, который имеет пользователь, вместо доступа, затребованного приложением. Флаг REG_KEY_RECURSE_FLAG указывает, наследуют ли новые разделы флаги виртуализации родительского раздела, а не только флаги, применяемые по умолчанию.


Виртуализация реестра реализуется диспетчером конфигураций, который управляет реестром в ядре операционной системы, Ntoskrnl.exe. Как и в случае с виртуализацией файловой системы, устаревший процесс, создающий подраздел виртуализованного раздела, перенаправляется в виртуальный корневой раздел реестра пользователя, но процессу Windows Vista будет отказано в доступе применяемыми по умолчанию разрешениями.

Кроме виртуализации файловой системы и реестра, для правильной работы с правами обычного пользователя некоторых приложений требуется дополнительная поддержка. Например, приложение, которое проверяет членство учетной записи, под которой оно работает, в группе “Администраторы”, откажется работать, если учетная запись не входит в эту группу. Поэтому Windows Vista определяет ряд режимов совместимости приложений с тем, чтобы такие приложения всё равно смогли работать. Эти режимы совместимости, обычно применяемые к устаревшим приложениям для операций с обычными правами, показаны на рис. 3.

Рис 3 Общие режимы совместимости для пользователей
Режим совместимости Назначение

ElevateCreateProcess Изменение функции CreateProcess для обработки ошибок ERROR_ELEVATION_REQUIRED путем вызова службы сведений о приложении для вывода запроса на повышение.
ForceAdminAccess Имитация запросов членства в административных группах.
VirtualizeDeleteFile Имитация успешного удаления глобальных файлов и каталогов.
LocalMappedObject Добавление объектов глобальных областей в пространство имен пользователя.
VirtualizeHKCRLite, VirtualizeRegisterTypeLib Перенаправление глобальной регистрации COM-объектов в разделы пользователей.

ИТ-специалисты в корпорациях могут использовать такие инструменты, как набор средств для обеспечения совместимости приложений (ACT), который можно получить на веб-узле technet.microsoft .com/windowsvista/aa905066.aspx, и служебную программу – анализатор обычного пользователя (SUA) из этого набора или воспользоваться блогом Аарона Маргозиса (Aaron Margosis) LUA Buglight, где можно определить требования для режимов совместимости бизнес-приложений. Режимы совместимости назначаются для приложения с помощью администратора совместимости, также входящего в состав ACT, затем результирующая база данных совместимости (файл SDB) развертывается на настольных системах согласно групповой политике. Следует отметить, что в случае необходимости виртуализация может быть полностью отключена для системы с помощью параметра локальной политики безопасности.

Эффекты виртуализации

Состояние виртуализации процесса можно изменить, выбрав “Виртуализация” в контекстном меню, которое появляется, если щелкнуть процесс правой кнопкой мыши в окне диспетчера задач. На рис. А показано поведение командной строки при изменении ее состояния виртуализации. Командная строка запускается с отключенной виртуализацией, поскольку обладает манифестом Windows Vista. Поскольку она работает с правами обычного пользователя, создать файл в каталоге \Windows ей не удается, но после виртуализации с помощью диспетчера задач файл, вроде бы, успешно создается. После возвращения отключенного состояния виртуализации командной строки она не сможет найти файл, который на самом деле находится в виртуальном хранилище пользователя.

Окно управления учетными записями

Рис. А Изменение состояния виртуализации

Режим одобрения администратором

Даже если пользователи запускают только программы, совместимые с правами обычного пользователя, некоторые операции все равно требуют административных прав. Подавляющее большинство установок программного обеспечения требует административных прав для создания каталогов и параметров реестра в размещениях, общих для всей системы, или для установки драйверов устройств либо служб. Изменение глобальных системных параметров Windows и приложений также требует административных прав, как, например, функция родительского контроля в Windows Vista. Большую часть этих операций можно было бы выполнить путем переключения на отдельную учетную запись администратора, но неудобство такой процедуры вероятнее всего приведет к тому, что большинство пользователей будет выполнять свои ежедневные задачи, так и оставшись в административной учетной записи.

В связи с этим Windows Vista содержит расширенные функциональные возможности “запуска от имени”, чтобы обычные пользователи могли комфортно запускать процессы с административными правами. Эти возможности нужны для того, чтобы у приложений был способ определения операций, для которых система может по мере необходимости получать административные права от имени приложения. На этом моменте я кратко остановлюсь ниже.

Далее, чтобы пользователи, действующие как системные администраторы, могли работать с правами обычного пользователя, не вводя имена пользователей и пароли каждый раз, когда им нужно обратиться к административным правам, в Windows Vista введен режим одобрения администратором (Admin Approval Mode, AAM). Эта функция создает для пользователя два набора учетных данных для входа в систему: один с правами обычного пользователя, а другой с административными. Так как каждый пользователь в системе Windows Vista или является обычным пользователем, или работает в основном как обычный пользователь в AAM, разработчики должны рассчитывать на то, что все пользователи Windows — это обычные пользователи, в результате чего будет больше программ, работающих с правами обычного пользователя без виртуализации или режима совместимости.

Предоставление процессу административных прав называется повышением прав. Если эта процедура выполняется под учетной записью обычного пользователя, она называется повышением “через плечо” (Over the Shoulder, OTS), поскольку требует ввода учетных данных для учетной записи, которая является членом группы администраторов. Это похоже на ситуацию, когда “из-за спины” обычного пользователя что-то печатает другой пользователь. Повышение, выполняемое пользователем AAM, называется повышением по согласию, поскольку пользователь просто должен одобрить присвоение его административных прав.

Windows Vista считает пользователя администратором, если он является членом любой из групп административного типа, перечисленных на рис. 8.

Рис 8 Административные группы
Встроенная группа “Администраторы”

Администраторы сертификатов
Администраторы домена
Корпоративные администраторы
Администраторы политик
Администраторы схем
Контроллеры домена
Корпоративные контроллеры домена с доступом только для чтения
Контроллеры домена с доступом только для чтения
Операторы учета
Операторы архива
Операторы шифрования
Операторы настройки сети
Операторы печати
Системные операторы
Серверы RAS
Опытные пользователи
Пред-Windows 2000 доступ

Многие из перечисленных групп используются только в системах – участниках доменов и непосредственно не дают пользователям локальных административных прав, но позволяют им изменять параметры всего домена. Если пользователь является членом любой из этих групп, но не фактической группы администраторов, то, вместо повышений согласия, он обращается к своим административным правам через OTS-повышения.

Когда пользователь, принадлежащий одной из перечисленных групп, входит в систему, Windows Vista создает маркер, представляющий версию административного идентификатора этого пользователя, но с правами обычного пользователя. Новый маркер лишается всех привилегий, назначенных пользователю, кроме привилегий, перечисленных на рис. 9, которые являются применяемыми по умолчанию привилегиями обычного пользователя.

Рис 9 Привилегии обычного пользователя
Понятное название Внутреннее имя

Обход перекрестной проверки SeChangeNotifyPrivilege
Завершение работы системы SeShutdownPrivilege
Отключение компьютера от стыковочного узла SeUndockPrivilege
Увеличение рабочего набора процесса SeIncreaseWorkingSetPrivilege
Изменение часового пояса SeTimeZonePrivilege

Кроме того, все группы административного типа отмечаются в новом маркере флагом USE_FOR_DENY_ONLY. В окне программы Sysinternals Process Explorer (средство управления процессами, которое можно загрузить на веб-узле microsoft .com/technet/sysinternals) слева показано членство в группах и привилегии процесса, работающего с административными правами, а справа — без административных прав. (Для предотвращения неосторожного использования модель безопасности Windows требует, чтобы перед использованием привилегия со снятым флагом была включена.)

Управление учетными записями Windows vista

Рис. Маркеры администратора AAM и обычного пользователя

Группа с флагом “только для запрещения” может использоваться только для запрещения пользовательского доступа к ресурсу, но никогда не разрешает доступ. Тем самым закрывается брешь в системе безопасности, которая может возникнуть в случае полного удаления группы. Например, у файла есть список управления доступом (ACL), который запрещает любой доступ для группы “Администраторы”, но предоставляет некоторый доступ другой группе, к которой относится пользователь. Если группа администраторов отсутствует в маркере, этот пользователь получит доступ к файлу, поскольку версия его идентификатора со стандартными правами имеет больше прав доступа, чем административная.

Автономные системы, которыми обычно являются домашние компьютеры, и системы, входящие в состав доменов, обрабатывают AAM-доступ со стороны уд

zp8497586rq





Смотрите также:

Tags: , ,

Readers Comments (Комментариев нет)

Comments are closed.



Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]