Автор: Опубликовано: Сентябрь 2006 года
В цикле «Статьи для разработчиков под Windows Vista» (EN) публикуются материалы для программистов, других технических специалистов и менеджеров, заинтересованных в глубоком изучении новых и улучшенных функций Windows Vista. Новые статьи публикуются на сайте Центр разработки для Windows Vista примерно раз в две недели. Эти статьи являются кратким изложением справочных материалов Windows, которые можно загрузить отсюда.
.gif) | Примечание: это предварительный документ, который может быть изменен в будущих выпусках. |
Содержание
Данная статья поможет разработчикам приложений обеспечить совместимость своих приложений с механизмом управления учетными записями пользователей (User Account Control - UAC). Она состоит из следующих разделов:
.gif) | Примечание. Полностью описание этих вопросов можно найти в файле справки Windows, который можно загрузить отсюда. В файле выберите раздел Fundamentals, затем Secure Applications, Developing Secure Applications, а затем User Account Control (UAC). |
Для чего нужно управление учетными записями пользователей?
Разработчики часто создают приложения для Microsoft Windows, которые требуют излишних пользовательских прав и привилегий. В результате обычный пользователь должен обладать полномочиями администратора, и очень немногие пользователи работают с минимально необходимым в операционной системе набором прав и привилегий. Предприятия пытаются найти баланс между безопасностью и удобством развертывания и использования, но из-за возникающих проблем с совместимостью обычных пользовательских приложений вынуждены устанавливать их с административными правами.
Есть и другие причины, почему на компьютерах с операционными системами-предшественницами Microsoft Windows Vista трудно работать с привилегиями стандартного пользователя:
- Многие Windows-приложения требуют, чтобы зарегистрировавшийся пользователь был администратором, но на самом деле им не нужен доступ на уровне администратора. Эти приложения перед своим запуском выполняют различные проверки административного доступа, включая следующее:
- проверка маркера доступа администратора;
- запросы на доступ к защищенным папкам системы с уровнем «Полный доступ»;
- запись данных в защищенные папки %ProgramFiles%, %WinDir%, и в реестр HKLM\Software.
- При проектировании многих Windows-приложений не учитывалась концепция минимальных привилегий, и функциональность для пользователя и для администратора не разделены на два разных процесса.
- В Windows 2000 и XP каждая новая учетная запись для нового пользователя по умолчанию создается с административными полномочиями. Поэтому такие ключевые компоненты Windows – панель управления датой и временем или управление питанием – не работают должным образом для стандартного пользователя.
- В Windows 2000 и Windows XP администраторы должны создавать две отдельные пользовательские учетные записи — одну для выполнения административных задач, а другую для повседневных. Поэтому пользователи вынуждены для выполнения любой административной задачи выходить из системы, если они работали как обычный пользователь, и регистрироваться заново как администратор, либо использовать возможность запуска команд с правами другого пользователя.
Механизм управления учетными записями пользователей (User Account Control, UAC) упрощает развертывание стандартных пользовательских настольных систем с обычными полномочиями, как в масштабах предприятия, так и дома.
Переделывая архитектуру системы безопасности Windows, которая изначально проектировалась для операционной системы Microsoft Windows NT 3.1, команда разработчиков UAC хотела реализовать более гибкую и безопасную стандартную модель пользователей. В предыдущих версиях Windows во время процесса регистрации для администратора создавался один маркер доступа. В него входит большинство привилегий Windows и административных идентификаторов безопасности (SID - security identifier). Этот маркер доступа обеспечивает администратору возможность установки приложений, настройки операционной системы и доступа ко всем ресурсам.
Команда разработчиков UAC подошла к процессу создания маркеров доступа в Windows Vista совершенно по-другому. Когда на компьютере с Windows Vista регистрируется пользователь с административными полномочиями, создаются два маркера доступа: фильтрованный маркер доступа обычного пользователя и полный маркер доступа администратора. При запуске рабочего стола (Explorer.exe) вместо маркера доступа администратора используется маркер доступа стандартного пользователя. Все процессы-потомки наследуют полномочия от этого запущенного сервиса рабочего стола (процесс explorer.exe), что помогает уменьшить зону уязвимости Windows Vista. По умолчанию все пользователи, включая администраторов, регистрируются на компьютере с Windows Vista как обычные пользователи.
.gif) | Примечание. У предшествующего утверждения есть одно исключение: Гости (Guest) регистрируются в системе с меньшими правами и привилегиями, чем обычные пользователи. |
Когда администратор пытается выполнить административную задачу, например, установить приложение, система UAC предлагает ему санкционировать это действие. Только после этого задача запускается с полным маркером доступа администратора. Такое предупреждение администратору устанавливается по умолчанию, и это можно настроить с помощью инструментов Security Policy Manager (secpol.msc) и Group Policy (gpedit.msc).
.gif) | Примечание. Работа администратора в Windows Vista с включенным механизмом UAC также называется учетной записью администратора в режиме одобрения (administrator account in Admin Approval Mode). Этот режим является для администраторов режимом по умолчанию. |
Каждое расширение административных прав выполняется только для отдельного процесса, что предотвращает использование другими процессами маркера доступа без выдачи предупреждения пользователю. В результате наделенные административными полномочиями пользователи получают более детальный контроль над тем, что устанавливают приложения. Это сильно влияет на вредоносные программы, которые ожидают, что пользователь регистрируется в системе с полным маркером доступа администратора.
У обычных пользователей тоже есть возможность повысить свои полномочия с помощью инфраструктуры UAC и выполнять административные задачи. Когда такой пользователь пытается выполнить административную задачу, система UAC просит его ввести действительные учетные данные администратора. Такое предупреждение для стандартного пользователя устанавливается по умолчанию, и это тоже можно настроить с помощью оснасток Security Policy Manager (secpol.msc) и Group Policy (gpedit.msc).
Обновления Windows Vista
Вот перечень обновлений, который отражает общие системные изменения функциональности, внесенные в Windows Vista:
- система UAC по умолчанию включена;
- все последующие учетные записи пользователей создаются как обычные пользователи (Standard Users);
- предупреждения о повышении уровня прав по умолчанию отображаются системой безопасности;
- предупреждения о повышении уровня прав для фоновых приложений минимизируются на панели задач;
- при регистрации пользователя повышение полномочий блокируется;
- при новой установке системы встроенная учетная запись администратора по умолчанию выключена;
- управление учетными записями пользователей и удаленные сценарии;
- новые настройки по умолчанию для списков управления доступом (ACL - Access Control List).
Подробную информацию о перечисленных выше нововведениях в Windows Vista можно найти в файле справки.
Как работает UAC
В этом разделе дается описание архитектурных и функциональных компонентов UAC для разработчиков приложений. Раздел состоит из двух глав: «Новые технологии в Windows Vista» и «Архитектура UAC».
Новые технологии в Windows Vista
Далее рассматриваются следующие технологии:
- обнаружение установщика;
- исправление стандартных пользователей с помощью Windows Installer 4.0;
- изоляция привилегий пользовательского интерфейса;
- виртуализация.
Подробную информацию о новых технологиях для Windows Vista и изменениях маркеров доступа можно найти в разделе New Technology файла справки.
Архитектура UAC
На рисунке 1 представлена последовательность запуска исполняемых файлов в Windows Vista:
Рис. 1. Архитектура UAC
Рассмотрим эти операции и действия UAC подробнее.
Последовательность запуска для обычного пользователя
Операции при запуске приложений с правами обычного пользователя в Windows Vista схож с тем, что происходит в Windows XP, но в них внесены некоторые изменения:
- ShellExecute() вызывает CreateProcess().
- CreateProcess() вызывает AppCompat, Fusion и Installer Detection, чтобы оценить, нуждается ли приложение в повышении полномочий. Затем исполняемый файл проверяется и определяется его requestedExecutionLevel, который хранится в манифесте приложения. В данных AppCompat сохраняется информация о решении проблем с совместимостью приложений. Система обнаружения установщика Installer Detection определяет исполняемые файлы для установки (setup и т.п.).
- CreateProcess() возвращает код ошибки Win32 со значением ERROR_ELEVATION_REQUIRED («требуется расширение полномочий»).
- ShellExecute() ожидает именно эту новую ошибку, и в случае ее появления обращается к службе Application Information service (AIS) с целью попытки запуска с повышенными полномочиями.
Операции при запуске с повышенными полномочиями
последовательность запуска с повышенными полномочиями в Windows Vista является новой для семейства Windows.
- AIS получает вызов от ShellExecute() и еще раз оценивает запрошенный уровень выполнения и требования групповых политик. Устанавливается, разрешено ли повышение прав и определяется их конфигурация.
- Если для запрошенного уровня выполнения требуется повышение полномочий, то служба выводит на экран пользователя (определяется из групповой политики) предупреждение. Для этого используется дескриптор HWND, полученный от ShellExecute().
- После того, как пользователь дал согласие на это действие или ввёл учётные данные, AIS затребует, если необходимо, соответствующий маркер доступа, связанный с соответствующим пользователем. Например, приложение, затребовавшее requestedExecutionLevel со значением highestAvailable, получит различные маркеры доступа в случае пользователя, который является лишь членом группы Backup Operators, и в случае члена локальной группы Administrators.
AIS повторно выполняет вызов CreateProcessAsUser(), предоставляя маркер доступа администратора и указывая рабочий экран пользователя.
Повлияет ли UAC на приложение?
Повлияет ли UAC на ваше приложение, зависит от его текущего состояния. В ряде случаев для соответствия требованиям Microsoft Windows® Security никаких изменений вносить не нужно. Однако некоторые приложения, включая бизнес-приложения, для правильной работы в среде Windows Vista UAC могут потребовать изменений в процессах установки, функционирования или обновления.
.gif) | Примечание. Если приложение корректно работает с привилегиями обычного пользователя в Windows XP, то оно будет правильно работать с привилегиями ОБЫЧНОГО пользователя и в Windows Vista. |
Дополнительную информацию по этой теме можно получить в следующих подразделах файла справки:
- почему нужно удалить административные зависимости в своем приложении?
- снижение совокупной стоимости владения для приложения;
- как определить, есть ли в приложении административные зависимости?
- У меня есть приложение, специально работающее с правами администратора. Какие требования предъявляются к такому приложению?
Проектирование приложений для Windows Vista
Далее перечислены последовательность действий по проектированию приложений для Windows Vista:
- Первый шаг: протестируйте свое приложение на совместимость с Vista.
- Второй шаг: классифицируйте свое приложение: будет ли это приложение для обычного пользователя, для администратора или для смешанной роли.
- Третий шаг: Измените функционал приложения, чтобы он был совместим с UAC.
- Четвертый шаг: Измените пользовательский интерфейс приложения, чтобы он был совместим с UAC.
- Пятый шаг: переделайте установочный пакет приложения.
- Шестой шаг: создайте манифест и добавьте к приложению.
- Седьмой шаг: протестируйте приложение.
- Восьмой шаг: подпишите свое приложение с помощью сертификата Authenticode.
- Девятый шаг: примите участие в программе Windows Vista Logo.
Подробные инструкции и советы, а также ссылки на инструменты для тестирования можно найти в файле справки.
Развертывание и распространение исправлений приложений для пользователей с обычными правами
Как правило, предприятиям надо решить, как они будут автоматизировать установку приложений на рабочие станции пользователей, чтобы снизить затраты на администрирование. По существу, эта проблема делится на две части: во-первых, как эти приложения надо упаковывать для развертывания, и, во-вторых, какую технологию надо для их развертывания использовать. В случае корпоративной среды меньшего масштаба надежный механизм автоматизированного развертывания может и не понадобиться. Подробную информацию по развертыванию и обновлению приложений для стандартных пользователей можно найти в файле справки Windows.
Решение часто возникающих проблем
В следующих разделах перечислены проблемы, часто встречающиеся при работе приложений с Windows Vista. А именно:
- проблемы с установкой объектов ActiveX;
- документы ActiveX Documents не устанавливаются;
- требуется приложение, среда Framework или дополнительный модуль;
- для установки или обновления требуются административные полномочия;
- местоположение пользовательских настроек приложения;
- значения приложения UAC/DR по умолчанию для сохранения в защищенный каталог.
Подробности см. в разделе «Troubleshooting Common Issues» в файле справки.
Ссылки
Ссылки см. в разделе «References» в файле справки.
.gif) | Примечание. Полностью описание этих вопросов можно найти в файле справки Windows, который можно загрузить отсюда. В файле выберите раздел Fundamentals, затем Secure Applications, Developing Secure Applications, а затем User Account Control (UAC). |