Административные шаблоны групповой политики

OSzone.net » Microsoft » Windows 7 » Администрирование » Управление Windows 7 с помощью групповой политики » Административные шаблоны групповой политики
Автор: Дмитрий Буланов
Иcточник: dimanb.wordpress.com
Опубликована: 10.03.2011


Введение

Большинство доступных в операционных системах Windows параметров групповой политики, которые зависят от системного реестра, также называемых реестро-зависящими политиками можно найти в расширении административных шаблонов. Административными шаблонами называются параметры групповой политики, основанные на данных системного реестра, которые отображаются в узлах «Административные шаблоны» узлов конфигурации компьютера и конфигурации пользователя. К таким параметрам относятся настройки панели управления, панели задач, сетевых параметров, параметров рабочего стола и многое другое. Сами по себе административные шаблоны представляют собой текстовые файлы, указывающие на изменение определенных параметров реестра и генерирующие пользовательский интерфейс для настройки политики административного шаблона в оснастке «Редактор управления групповыми политиками», которая и позволяет изменять значение параметров реестра на целевых компьютерах. В большинстве случаев, административные шаблоны предназначены для простого способа настройки параметров пользователей и компьютеров и применения таких политик для изменения соответствующих настроек пользователей и компьютеров организации. Административные шаблоны предоставляют возможности динамического управления администраторам и разработчиками всевозможными настройками своих приложений. Политики административных шаблонов в узле конфигурации компьютера, модифицируют значения параметров в разделах HKLM\Software\Policies и HKLM\Software\Microsoft\Windows\CurrentVersion\Policies, а административные шаблоны конфигурации пользователя - HKCU\Software\Policies и HKCU\Software\Microsoft\Windows\CurrentVersion\Policies.

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

В операционных системах Windows, разработанных до Windows Vista и Windows Server 2008, для административных шаблонов использовались файлы, с расширением .adm. У таких административных шаблонов был ряд недостатков. Для создания ADM-файла, который будет использоваться при развертывании конфигурации в многоязыковой организации, вам придется создавать отдельные ADM-файлы для каждого языка. А чтобы отредактировать параметры реестра в таком шаблоне, вам нужно будет вносить изменения в каждый ADM-файл, что крайне неудобно. Ко второму недостатку можно отнести то, что файлы административных шаблонов .adm расположены как компонент объекта «Шаблон групповой политики» (Group Policy Template - GPT), которые представляют собой коллекцию файлов в каталоге SYSVOL каждого контроллера домена. И если такой шаблон используется сразу в нескольких объектах GPO, то в папке SYSVOL он будет сохранен несколько раз. Также, при редактировании объекта групповой политики, который содержит ADM-файл, редактор объектов групповой политики загружает этот шаблон из контейнера групповой политики (Group Policy Container - GPC), чтобы создать пользовательский интерфейс. Административные шаблоны ADM не поддерживали такие типы данных реестра, как мультистроковые значения и параметры QWORD.

С выходом операционных систем Windows Vista и Windows Server 2008, административные шаблоны существенно изменились. Теперь административные шаблоны представляют собой пару XML-файлов. А именно: не связанный с языком файл (ADMX), описывающий структуру категорий и параметров политики административных шаблонов, отображаемых в оснастке редактора управления групповыми политиками, а также набор зависящих от языка файлов (ADML), которые предоставляют локализованные фрагменты, отображаемые в оснастке редактора управления групповыми политиками. Каждый ADML-файл представляет один язык, для которого требуется поддержка. Изменения параметров реестра административных шаблонов вносятся в один ADMX-файл.

К дополнительным преимуществам ADMX/ADML файлов административных шаблонов можно отнести то, что если используются именно эти административные шаблоны, то объект групповой политики содержит только данные, необходимые клиентам обработки групповой политики, а при редактировании объектов GPO редактор управления групповой политикой извлекает файлы ADMX и ADML на локальной машине. В том случае, если компьютеры организации входят в состав домена Active Directory, административные шаблоны располагаются в таком центральном хранилище, как папка SYSVOL, откуда они и загружаются. На компьютерах, которые входят в состав рабочей группы, ADMX файлы располагаются в папке %SystemRoot%\PolicyDefinitions, а языковые файлы ADML хранятся в папке %SystemRoot%\PolicyDefinitions\[MUIculture], где последняя папка должна соответствовать краткой форме языка определенной страны, указанной в ISO-формате. Например, файлы для русского языка локализованы в папке \RU-RU. Список сокращений языков вы можете найти в следующей таблице:

ЯзыкКод в формате ISO-639-1
АфрикаансAF
АрабскийAR
БаскскийEU
БелорусскийBE
БолгарскийBG
КаталанскийCA
Китайский (Китай)ZH, ZH-CN
Китайский (Тайвань)ZH-TW
ХорватскийHR
ЧешскийCS
ДатскийDA
НидерландскийNL
Английский (Великобритания)EN-GB
Английский (США)EN-US
ЭстонскийET
ФарерскийFO
ФинскийFI
ФранцузскийFR, FR-FR
Французский (Канада)FR-CA
НемецкийDE
ГреческийEL
ИвритHE, IW
ВенгерскийHU
ИсландскийIS
ИндонезийскийID, IN
ИтальянскийIT
ЯпонскийJA
КорейскийKO
ЛатышскийLV
ЛитовскийLT
НорвежскийNO
ПольскийPL
ПортугальскийPT
Португальский (Бразилия)PT-BR
РумынскийRO
РусскийRU
СербскийSP
СловацкийSK
СловенскийSL
ИспанскийES, ES-ES
ШведскийSV
ТайскийTH
ТурецкийTR
УкраинскийUK
ВьетнамскийVI

На контроллерах домена, административные шаблоны располагаются в центральном хранилище, которое также называется контейнером групповых политик и содержит атрибуты, используемые для распространения GPO в домене, подразделениях и сайтах, а именно в папке %SystemRoot%\sysvol\%domainname%\policies\PolicyDefinitions. В свою очередь, языковые файлы ADML хранятся в папке %SystemRoot%\sysvol\%domainname%\policies\PolicyDefinitions\[MUIculture], соответственно. Для того чтобы создать центральное хранилище, вам нужно на контроллере домена создать корневую папку внутри %SystemRoot%\sysvol\%domainname%\policies\PolicyDefinitions, после этого создать папки для каждого языка, который необходим для распространения групповых политик. На следующем шаге следует скопировать все ADMX и ADML файлы с административной рабочей машины в папку PolicyDefinitions. Это можно сделать или вручную, или используя следующую команду:

Copy %systemroot%\PolicyDefinitions\* %logonserver%\sysvol\%userdomain%\policies\PolicyDefinitions

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

На следующей иллюстрации вы можете увидеть папку PolicyDefinitions клиентского компьютера с операционной системой Windows 7:

*
Увеличить рисунок

Рис. 1. Папка PolicyDefinitions на клиентском компьютере

Также, в связи с тем, что теперь административные шаблоны поддерживают мультистроковые типы данных реестра, администраторы могут выполнять такие задачи, как:

Поддержка типа значений реестра QWORD позволяет использовать параметры политики административных шаблонов для 64-разрядных приложений. Помимо этого, стоит обратить ваше внимание и на тот факт, что в операционных системах Windows Server 2008 R2 и Windows 7 насчитывается около 3200 административных шаблонов, что почти в два раза больше, чем было в операционной системе Windows XP с административными шаблонами ADM (их тогда было около 1400).

Как я уже упомянул в начале этой статьи, управлять административными шаблонами вы можете при помощи оснастки «Редактор управления групповой политикой». Во время редактирования объекта групповой политики, оснастка операционной системы Windows Server 2008/2008 R2 считывает все ADMX файлы, о расположении которых я говорил немного ранее, а затем отображает, согласно ADMX-файлам категории и параметры в узле Политики\Административные шаблоны в разделах «Конфигурация компьютера» и «Конфигурация пользователя». В параметрах политик административных шаблонов всегда можно найти три следующие опции: «Включить», «Отключить» и «Не задано», которые изменяют параметр реестра для внесения изменений, отвечающих контексту параметра политики, изменение, выполняющее обратное действие, а также опция, позволяющая оставить параметры реестра без изменений. Значение по умолчанию для каждого параметра политики «Не задано». Опять же, я уже упоминал, что начиная с операционных систем Windows Vista и Windows Server 2008, для редактора объектов групповой политики больше не используются ADM-файлы. Но, несмотря на это, если вам необходимо управлять настройками предыдущих операционных систем, вы можете добавить ADM-файлы.

Далее в этой статье вы узнаете об архитектуре и синтаксисе административных шаблонов.

Архитектура административных шаблонов

Если разобраться, то архитектура административных шаблонов групповых политик не такая уж и сложная. Основными компонентами в распространении административных шаблонов являются системный администратор, контроллер домена и целевой клиентский компьютер. Небольшая схема, которая позволит вам иметь четкое представление архитектуры расширения административных шаблонов, отображена ниже:

*
Увеличить рисунок

Рис. 2. Архитектура расширения административных шаблонов

Первое, что стоит рассматривать в архитектуре расширения административных шаблонов групповых политик, это работу, выполняемую системным администратором, которая в данной схеме отображена в самом правом блоке. Здесь под компонентом «Администратор» подразумевается компьютер, на котором системный администратор вносит изменения в административные шаблоны, используя оснастку «Редактор управления групповыми политиками». В этой оснастке, в расширении серверной стороны администратор настраивает параметры политик, основанные на административных шаблонах. Оснастка располагается в библиотеке userenv.dll, которую можно найти в папке Windows\System32\. Настройки расширения административных шаблонов передаются в Active Directory на контроллер домена по протоколам LDAP и SMB. Протокол SMB (Server Message Block) считается основным методом, предназначенным для доступа к файлам и принтерам. Именно этот протокол используют административные шаблоны для доступа к папке SYSVOL, а также для резервного копирования и извлечения файлов удаленной файловой системы.

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

Как и компьютер системного администратора, с контроллером домена по протоколам LDAP и SMB связывается целевой компьютер, на который и распространяются параметры политики измененного системным администратором объекта GPO. Прежде всего, на каждом целевом компьютере есть модуль групповых политик, вызывающий клиентское расширение административных шаблонов с полным перечнем всех объектов групповых политик, которые будут применяться на данную машину. Модель групповых политик вызывает расширение клиентской стороны административных шаблонов, реализованное в библиотеке userenv.dll, зарегистрированной в разделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GPExtensions, которое отвечает за внесение изменений в системный реестр операционной системы, согласно параметрам политики административных шаблонов, которые настраиваются при помощи соответствующей оснастки. Для выполнения настроек, указанных в параметрах групповой политики, расширение административных шаблонов изменяет конкретные параметры системного реестра. Изменяемые параметры указываются непосредственно в ADMX файле. Изменения, внесенные в системный реестр при помощи модуля групповых политик, записываются в журналы событий, которые можно просмотреть при помощи оснастки «Просмотр событий». Во время обработки групповой политики, расширение клиентской стороны административных шаблонов записывает информацию об обработке данных в пространстве имен RSoP инструментария управления Windows.

Помимо выполнения объектов групповых политик, на каждом компьютере можно индивидуально настроить административные шаблоны в локальных объектах групповой политики. Эти объекты будут локально располагаться в скрытой папке %systemroot%\System32\GroupPolicy и, как всем вам известно, в среде Active Directory считаться наименее приоритетными, так как все объекты GPO, распространяемые на подразделение Active Directory, в котором расположен сам пользователь или его компьютер имеют более высокий приоритет.

Структура ADMX-файла (Файла, не зависящего от языка)

В ADMX-файле указано количество параметров политики и их тип данных, а также расположения в категориях, находящихся в оснастке «Редактор управления групповыми политиками». ADMX-файл состоит из семи разделов, которые вы можете увидеть на следующей иллюстрации:

*

Рис. 2. Структура ADMX-файла

Структура ADML-файла (файла языковых ресурсов)

Как я уже говорил во введении этой статьи, в файлах ADML указываются языковые ресурсы, привязывающиеся к определенному языку, без которых ADMX-файл не будет корректно работать. Основная задача этого файла – обеспечение корректного отображения описания параметра политики, который можно будет найти в оснастке редактора управления групповыми политиками. Структура этого файла намного проще структуры ADMX-файла и ее вы можете увидеть на следующей иллюстрации:

*

Рис. 3. Структура ADML-файла

Создание своего административного шаблона

На первый взгляд все эти XML файлы со множеством родительских и дочерних элементов могут показаться очень сложными при создании своего собственного административного шаблона. Чтобы соответствующий материал вам было проще усвоить, в этом разделе я покажу, как можно создать свои ADMX и ADML файлы, предназначенные для управления двумя параметрами антивирусного программного обеспечения Microsoft Security Essentials. Сразу хотелось бы обратить ваше внимание на то, что данный антивирусный продукт можно использовать в SOHO компаниях, то есть там, где развертывается не более 10 компьютеров. Мы рассмотрим только три параметра, которые позволяют вам указывать тип проверки, а также ее периодичность. Для начала, перед созданием ADMX-файла, вам нужно узнать какие именно параметры в каких разделах системного реестра должны изменяться. При помощи программы ProcessMonitor от Марка Руссиновича или программы RegMon можно быстро отследить изменения в реестре и узнать, что при изменении опций в самом Microsoft Security Essentials, меняются следующие параметра реестра:

  1. Для того чтобы выполнять запланированную проверку, только когда компьютер включен, но не используется, в системный реестр вносятся следующие изменения:

  2. [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Antimalware\Scan]
    “ScanOnlyIfIdle”=dword:00000001
    ;Опция включена
    “ScanOnlyIfIdle”=dword:00000000
    ;Опция отключена
  3. Для того чтобы ограничить использование ЦПУ при проверке, в реестре изменяется значение следующего параметра:

  4. [HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Antimalware\Scan]
    “AvgCPULoadFactor”=dword:00000000
    ;Опция отключена
    “AvgCPULoadFactor”=dword:0000000a
    ;10%
    “AvgCPULoadFactor”=dword:00000014
    ;20%
    “AvgCPULoadFactor”=dword:0000001e
    ;30%
    “AvgCPULoadFactor”=dword:00000028
    ;40%
    “AvgCPULoadFactor”=dword:00000032
    ;50%
    “AvgCPULoadFactor”=dword:0000003c
    ;60%
    “AvgCPULoadFactor”=dword:00000046
    ;70%
    “AvgCPULoadFactor”=dword:00000050
    ;80%
    “AvgCPULoadFactor”=dword:0000005a
    ;90%
    “AvgCPULoadFactor”=dword:00000064
    ;100%

После того как вы узнали нужные параметры и значения реестра, можно приступать к созданию ADMX-файла.

Первым делом в ADMX-файле вам нужно указать XML-объявление и элемент policyDefinitions. Практически во всех случаях эти строки создаваемого вами XML-файла одинаковые. У вас они должны получиться примерно следующими:

<?xml version="1.0" encoding="utf-8"?>
<!--  Dmitry Bulanov, 2011 (c)  -->
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">

После этого необходимо заполнить элемент policyNamespaces, где нужно будет указать уникальное имя пространства имен, а также ссылку на существующую категорию из другого элемента policyNamespaces. Так как создается ADMX-файл для Microsoft Security Essentials, укажем префикс mse и назовем пространство имен Microsoft.Policies.MicrosoftSecurityEssentials, а также элемент resources, где зададим минимальный уровень версии ADML-файла 1.0, как показано ниже:

<policyNamespaces>
    <target prefix="mse" namespace="Microsoft.Policies.MicrosoftSecurityEssentials " />
    <using prefix="windows" namespace="Microsoft.Policies.Windows" />
  </policyNamespaces>
  <supersededAdm fileName="mse" />
  <resources minRequiredRevision="1.0" />

Так как элемент supportedOn является опциональным элементом, в нашем случае мы опустим использование этого элемента. Поскольку для нашей группы административных шаблонов нужно указать группу, в которой будут расположены административные шаблоны антивирусного программного обеспечения, нужно добавить элемент categories, как показано в следующем листинге:

<categories>
    <category name="MicrosoftSecurityEssentials" displayName="$(string.MicrosoftSecurityEssentials)" explainText="$(string.MicrosoftSecurityEssentials_Help)">
    </category>
  </categories>

Вот мы и дошли до самого интересного момента, когда нужно добавлять разделы и параметры системного реестра, которые будут использоваться как основа параметров групповых политик. На этом шаге стоит обратить внимание на то что, так как параметры реестра для Microsoft Security Essentials расположены только в разделе HKLM, в классе политики необходимо указать Machine. Эти параметры можно увидеть в следующем листинге, причем, что самое интересное, в данном листинге вы можете найти как переключатели, так и раскрывающиеся меню:

<policies>
    <policy name="SchedScanCheck" class="Machine" displayName="$(string.SchedScanCheck)" explainText="$(string.SchedScanCheck_Help)" key="Software\Microsoft\Microsoft Antimalware\Scan" valueName="ScanOnlyIfIdle">
      <parentCategory ref="MicrosoftSecurityEssentials" />
      <supportedOn ref="windows:SUPPORTED_WindowsXPSP2" />
	  <enabledValue>
        <decimal value="1" />
      </enabledValue>
      <disabledValue>
        <decimal value="0" />
      </disabledValue>
    </policy>
    <policy name="ScanSch" class="Machine" displayName="$(string.LimitCPUUsage)" explainText="$(string.LimitCPUUsage_Help)" presentation="$(presentation.LimitCPUUsage)" key="Software\Microsoft\Microsoft Antimalware\Scan">
      <parentCategory ref="MicrosoftSecurityEssentials" />
	  <supportedOn ref="windows:SUPPORTED_WindowsXPSP2" />
	  <elements>
        <enum id="LimitCPUUsageMode" valueName="AvgCPULoadFactor" required="true">
          <item displayName="$(string.10perc)">
            <value>
              <decimal value="10" />
            </value>
          </item>
          <item displayName="$(string.20perc)">
            <value>
              <decimal value="20" />
            </value>
          </item>
          <item displayName="$(string.30perc)">
            <value>
              <decimal value="30" />
            </value>
          </item>
          <item displayName="$(string.40perc)">
            <value>
              <decimal value="40" />
            </value>
          </item>
          <item displayName="$(string.50perc)">
            <value>
              <decimal value="50" />
            </value>
          </item>
          <item displayName="$(string.60perc)">
            <value>
              <decimal value="60" />
            </value>
          </item>
          <item displayName="$(string.70perc)">
            <value>
              <decimal value="70" />
            </value>
          </item>
          <item displayName="$(string.80perc)">
            <value>
              <decimal value="7" />
            </value>
          </item>
		  <item displayName="$(string.90perc)">
            <value>
              <decimal value="90" />
            </value>
          </item>
		  <item displayName="$(string.100perc)">
            <value>
              <decimal value="100" />
            </value>
          </item>
        </enum>
      </elements>
    </policy>
  </policies>
</policyDefinitions>

После того как ADMX-файл будет окончательно завершен, вам еще предстоит написать сам ADML-файл. Как вы уже знаете, структура этого файла намного проще. В этом файле следует оставить XML-объявление и элемент policyDefinitions такими же, как вы указывали в самом ADMX-файле. Обязательно обратить внимание на то, что весь текст в этом файле должен быть в кодировке UTF-8. В элементах displayName и description укажем, что данный административный шаблон создается для антивирусного программного обеспечения Microsoft Security Essentials. В элементе stringTable следует указать идентификаторы и описания для каждого уникального объекта, который был создан в ADMX-файле.

Наверное, самой сложной частью ADML-файла считается определение структуры элементов управления отдельных параметров групповой политики в элементе presentationTable. Так как в нашем случае только в одном параметре политики есть раскрывающиеся списки, необходимо указать дочерние элементы dropdownList с идентификаторами и описанием данных элементов управления. В итоге должен получиться следующий XML-файл:

<?xml version="1.0" encoding="utf-8"?>
<!--  Dmitry Bulanov, 2011 (c)  -->
<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" revision="1.0" schemaVersion="1.0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
  <displayName>Microsoft Security Essentials</displayName>
  <description>Microsoft Security Essentials</description>
   <resources>
    <stringTable>
      <string id="MicrosoftSecurityEssentials">Политики Microsoft Security Essentials</string>
	  <string id="MicrosoftSecurityEssentials_Help">Настройка различных параметров антивирусного программного обееспечения Microsoft Security Essentials</string>
	  <string id="SchedScanCheck">Выполнять запланированную проверку, только когда компьютер включен, но не используется</string>
	  <string id="SchedScanCheck_Help">Этот параметр позволяет выполнять запланированную проверку только в том случае, когда вы не пользуетесь компьютером.
	  При выборе параметра "Включить" будет включена данная опция.
	  Если вы выберите опцию "Отключить", то проверка будет выполняться в строго отведенное вами время</string>
	  <string id="ScanSchDayMode">Настройка периодичности сканирования Microsoft Security Essentials</string>
	  <string id="LimitCPUUsage">Ограничить использование ЦПУ при проверке</string>
	  <string id="LimitCPUUsage_Help">При помощи текущего параметра групповой политики вы можете ограничить использование ЦПУ при проверке. Значение по умолчнаию - 50%</string>
	  <string id="10perc">10%</string>
	  <string id="20perc">20%</string>
	  <string id="30perc">30%</string>
	  <string id="40perc">40%</string>
	  <string id="50perc">50%</string>
	  <string id="60perc">60%</string>
	  <string id="70perc">70%</string>
	  <string id="80perc">80%</string>
	  <string id="90perc">90%</string>
	  <string id="100perc">100%</string>
    </stringTable>
    <presentationTable>
      <presentation id="LimitCPUUsage">
	    <text>Укажите лимит использования ЦПУ в процентах</text>
	    <dropdownList refId="LimitCPUUsageMode" defaultItem="0">Ограничить использование ЦПУ до: </dropdownList>
      </presentation>
    </presentationTable>
  </resources>
</policyDefinitionResources>

После того как вы поместите созданные файлы в папку Policy Definitions на локальном компьютере или в папку SYSVOL на контроллере домена, данные политики будут отображаться в оснастке редактора управления групповыми политиками.

Заключение

Из этой статье вы узнали о параметрах групповой политики, основанных на данных системного реестра, которые называются административными шаблонами. Вкратце была рассмотрена история развития административных шаблонов, структура ADMX-файла – файла, не зависящего от языка, структура ADML-файла – файла языковых ресурсов. Также, в данной статье был написан административный шаблон для управления антивирусным программным обеспечением – Microsoft Security Essentials.


Ссылка: http://www.oszone.net/14741/admin_templates