В Windows Server 2003 Service Pack 1 (SP1) появилась новая возможность – роуминг учетных данных. С ее помощью пользователи с доменными учетными записями Windows могут получить доступ к своим секретным ключам (private key) инфраструктуры Public Key Infrastructure (PKI) и сертификатам с любой рабочей станции, с которой они выполняют регистрацию в домене Windows. Это стало возможным благодаря службе Digital Identity Management Service (DIMS), которая хранит зашифрованную копию учетных данных PKI в пользовательском объекте Active Directory (AD) и поддерживает синхронизацию между учетными данными PKI в AD, секретным ключом на рабочей станции и локальной копией учетных данных PKI, хранящихся в пользовательском сертификате.

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

Роуминг учетных данных, роуминг профилей и смарт-карты

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

В перемещаемые профили пользователей включаются не только секретные ключи и сертификаты, но также данные рабочего стола, настройки приложений, данные из папки My Documents, кэш Microsoft Internet Explorer (IE) и т.п. Понятно, что такой объем данных негативно сказывается на времени регистрации пользователей, а также использовании полосы пропускания и дисковых ресурсов сервера.

Решение с привлечением смарт-карт обеспечивает более безопасную работу с секретными ключами и роумингом сертификатов, чем решение на основе роуминга учетных данных. Однако оно приводит к существенному росту затрат на развертывание и поддержку, и, кроме того, пользователи должны быть дисциплинированными и разбираться в вопросах безопасности. То же самое можно сказать об использовании Trusted Platform Modules (TPM), специальных микросхем обеспечения безопасности, устанавливаемых на материнскую плату компьютера, - функциональность там примерно та же, что и в случае со смарт-картами. В Таблице 1 сравниваются возможности роуминга учетных данных, роуминга профилей и смарт-карт применительно к учетным данным PKI в среде Windows.

С другой стороны, настроить в среде Windows роуминг учетных данных несколько сложнее, чем роуминг профилей или смарт-карты, как будет показано ниже. Еще более серьезная проблема состоит в том, что клиентские версии Windows в настоящее время не поддерживают DIMS, хотя как утверждают в Microsoft, в Windows Vista поддержка DIMS будет обеспечена.

Пример очевидного преимущества роуминга учетных данных: пользователи, у которых нет перемещаемых профилей, работают с Encrypting File System (EFS) в доменной среде. При использовании роуминга учетных данных у пользователей будет один сертификат EFS и секретный ключ, доступный на всех рабочих станциях домена, откуда они выполняют регистрацию. EFS будет генерировать новый пользовательский сертификат и секретный ключ при самом первом обращении пользователя к EFS с очередной системы - без участия роуминга учетных данных или перемещаемых профилей.

Описание процесса роуминга учетных данных

Роуминг учетных данных на сегодня поддерживается только в Windows 2003 SP1 и более новых версиях. Как уже отмечалось, Microsoft планирует добавить поддержку DIMS в следующую клиентскую платформу, Windows Vista. На стороне клиента роуминг учетных данных работает с AD, в которую включены все необходимые расширения схемы и которая должна быть развернута на контроллерах домена с Windows 2000 SP3, Windows 2003 или более новых версиях Windows.

Роуминг учетных данных поддерживает роуминг только сертификатов X.509 и пары ключей Digital Signature Algorithm (DSA) или RSA, для которых используется встроенная криптографическая защита Windows Cryptographic Service Providers (CSP).

Поскольку при использовании роуминга учетных данных в AD сохраняется полная копия учетных данных PKI, пользователи будут автоматически получать полный набор этих данных при первой регистрации в домене после аппаратного или программного сбоя, который произошел на рабочей станции. Даже если в роуминге учетных данных предусмотреть механизм восстановления для защиты пользователей от утери всех секретных ключей и сертификатов, он (роуминг учетных данных) не защитит от случайного удаления индивидуальных секретных ключей. В Windows 2003 PKI включена специальная служба, интегрированная с центром сертификации Certification Authority (CA) для обеспечения службы резервирования и восстановления для индивидуальных секретных ключей. Когда пользователь удаляет секретный ключ из локального хранилища при помощи оснастки Microsoft Management Console (MMC) Certificates, роуминг учетных данных реплицирует это действие (удаление) для соответствующего объекта пользователя в AD.

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

Как часть процесса регистрации, применяются установки Group Policy Object (GPO) – в том числе и установки роуминга учетных данных, включенные в настройки GPO для данного пользователя.

На стороне клиента процесс dimsntfy.dll сравнивает сертификаты и секретные ключи в локальном хранилище пользователя, с тем, что находится (в объекте данного пользователя) в AD. Если обнаруживаются расхождения, другой процесс, dimsroam.dll, обновляет либо локальное хранилище, либо хранилище в AD согласно следующим правилам:

Если локальное хранилище содержит сертификаты и секретные ключи, а в объекте пользователя в AD их нет, сертификаты и секретные ключи копируются в AD. Это происходит в случае самого первого использования роуминга учетных данных.

Если объект пользователя в AD содержит сертификаты и секретные ключи, а локальное хранилище - нет, сертификаты и секретные ключи копируются в локальное хранилище. Это бывает в том случае, когда роуминг учетных данных включен, а пользователь выполняет регистрацию с новой рабочей станции.

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

Обновление учетных данных PKI для объекта пользователя в AD применяются также и к удалению сертификатов и секретных ключей. Если пользователь удалил секретный ключ в локальном хранилище, благодаря роумингу учетных данных секретный ключ будет также удален и в объекте пользователя в AD.

Процесс автоматической регистрации сертификатов (certificate autoenrollment process - pautoenroll.dll) автоматически вносит данные о пользователе в настройки сертификатов, хранящиеся в GPO, и в настройки шаблонов сертификатов. После того как пользователь будет прописан во все сертификаты, служба DIMS снова инициирует синхронизацию нового сертификата в локальном хранилище и AD.

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

  • пользователь вручную зарегистрировал сертификат при помощи оснастки MMC Certificates, интерфейса CA Web или воспользовался утилитой командной строки certreq.exe;
  • регистрация сертификата пользователя произошла автоматически в связи с событием Windows certificate autoenrollment;
  • пользователь импортирует новый сертификат в локальное хранилище сертификатов;
  • пользователь экспортирует или удаляет сертификат из локального хранилища сертификатов;
  • пользователь снимает блокировку хранителя экрана Windows, защищенную паролем;
  • произошло обновление настроек GPO на системе пользователя.

Microsoft использует протокол Kerberos и LDAP over SSL (LDAPs) – две ключевые технологии обеспечения безопасности Windows AD – как для подписи, так и для шифрования учетных данных DIMS, которыми обмениваются Windows-клиент и контроллеры домена (DC).

По умолчанию роуминг учетных данных в Windows 2003, Windows 2000 SP3 или более поздних версиях AD не запущен. Требуется выполнить несколько действий по настройке роуминга учетных данных, о которых подробно будет рассказано ниже.

Шаг 1: Расширение схемы AD для добавления атрибутов DIMS в объект пользователя.

Шаг 2: Изменение разрешений объектов AD User Object для защиты учетных данных AD от несанкционированного доступа.

Шаг 3: В тех случаях, когда используется перемещаемый профиль, исключить каталоги, относящиеся к DIMS, из настроек перемещаемого профиля.

Шаг 4: Настроить на стороне клиента параметры DIMS и установить эти настройки в GPO.

Шаг 1: Расширение схемы AD

Для DIMS требуется три новых атрибута в AD User Object для обеспечения безопасного хранения учетных данных PKI и поддержки роуминга.

msPKIDPAPIMasterKeys – это многозначный атрибут объекта пользователя AD; служит для хранения файлов главного ключа (master key), в которых содержатся зашифрованные копии главных ключей Windows (криптографический ключ, используемый для шифрования некоторых данных Windows и секретов, включая секретные ключи). Главные ключи – важный элемент Windows Data Protection API (DPAPI – это внутренняя архитектура Windows для обеспечения безопасного доступа к данным и секретам). Для работы DIMS требуются копии главных ключей, поскольку они используются для шифрования секретных ключей, хранящихся в AD User Object (а конкретно, в атрибуте msPKIAccountCredentials, который описан ниже). Более подробную информацию о DPAPI и роли главных ключей можно получить в статье Microsoft "How to troubleshoot the Data Protection API (DPAPI)" http://support.microsoft.com/?kbid=309408.

msPKIAccountCredentials – это многозначный атрибут объекта пользователя AD; используется для хранения двоичных объектов (типа blob), представляющих зашифрованные учетные данные PKI, включая секретные ключи и сертификаты. Учетные данные PKI шифруются с помощью главных ключей, хранящихся в атрибуте msPKIDPAPIMasterKeys.

msPKIRoamingTimeStamp – это многозначный атрибут объекта пользователя AD; используется DIMS для записи времени последнего изменения учетных данных PKI, хранящихся в объекте пользователя AD.

Эти три атрибута не реплицируются в Global Catalog (GC), они реплицируются только между DC одного и того же домена.

Чтобы расширить схему AD и добавить в нее названные выше атрибуты пользовательского объекта, можно задействовать команду Ldifde и сценарий dimsroam.ldf, доступный по адресу http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/ServerHelp/2e157a02-d786-48f4-9bf2-21359223727d.mspx. Ldifde также создает новый набор свойств AD с названием private information, в котором содержатся три атрибута DIMS для объекта пользователя. Сценарий присваивает им признак конфиденциальных: он устанавливает специальный бит конфиденциальности (AD confidentiality bit) в свойстве searchFlags каждого из трех атрибутов. Бит конфиденциальности – новый параметр, введенный Microsoft в Windows 2003 SP1, чтобы скрыть некоторые важные атрибуты AD и их содержимое от пользователей. При установке бита конфиденциальности даже те пользователи, у которых есть право чтения данного атрибута, не смогут увидеть его содержимое. Это очень удобно, с учетом важности данных DIMS, хранящихся в AD (вспомните о файлах главного ключа).

Для расширения схемы и включения DIMS-атрибутов выполните следующие действия:

  • убедитесь, что у вас есть право изменять схему AD. По умолчанию только члены группы Schema Administrators имеют это право;
  • убедитесь, что вы указали правильный Windows DC для расширения схемы AD. Схема AD может быть расширена только на DC, для которого назначена роль мастера схемы. Чтобы не ошибиться, воспользуйтесь оснасткой MMC AD Schema или утилитой ntdsutil.exe.

В случае с Windows 2000 проверьте, разрешено ли вам вносить изменения в схему на DC – мастере схемы. Изменения в схеме возможны, если на мастере схемы параметр HKLMMACHINESystemCurrentControlSetServicesNTDSParametersSchema Update Allowed имеет значение 1. Для Windows 2003 эта проверка не требуется.

Скопируйте сценарий dimsroam.ldf в Notepad, сохраните файл с расширением .ldf и замените все строки DC=x на DC=name с указанием реального имени контекста именования конфигурации AD. Точное название можно посмотреть, подключившись к контексту именования при помощи MMC ADSIEdit.

Запустите команду Ldifde из командной строки для расширения схемы AD:

Ldifde -i -f dimsroam.ldf

Когда расширение схемы будет успешно завершено, Ldifde сгенерирует отчет, похожий на тот, что приведен на Рисунке 1. Кроме того, для каждого объекта пользователя AD должны появиться новые DIMS-атрибуты. Воспользуйтесь ADSIEdit и убедитесь в этом (см. Рисунок 2).

Рисунок 1: Расширение схемы AD для DIMS при помощи утилиты Ldifde

Рисунок 2: Атрибуты DIMS в объекте пользователя AD (ADSIEdit)

Шаг 2: Изменение разрешений по умолчанию для объектов пользователей AD.

По умолчанию пользователи имеют право чтения всех атрибутов в отношении своего пользовательского объекта в AD, поскольку встроенный принципал безопасности под названием self имеет разрешение Read All Properties для пользовательского объекта. В то же время у пользователей отсутствует право чтения атрибутов, для которых установлен признак конфиденциальный, что имеет место для трех новых DIMS-атрибутов (об этом рассказывалось выше). Конфиденциальные атрибуты всегда могут быть прочитаны администраторами, но для обычных пользователей доступ к атрибутам закрыт, даже в том случае, когда пользователям намеренно или случайно предоставляется общее право чтения объекта или контейнера AD. Пользователи могут читать конфиденциальные атрибуты только в случае явного предоставления такого разрешения, а именно: control_access. Итак, чтобы заработал роуминг учетных данных, необходимо предоставить пользователям право чтения и записи трех атрибутов DIMS для соответствующего объекта пользователя AD.

Я рекомендую, чтобы разрешение control_access на набор свойств Private Information (где содержатся DIMS-атрибуты) предоставлялось принципалу безопасности self для Organizational Unit (OU), в котором расположены пользователи с предполагаемым роумингом учетных данных. В настоящее время с помощью стандартного редактора Windows-ACL предоставить control_access нельзя. Потребуется написать специальный сценарий или воспользоваться новой утилитой ldp.exe, которая поставляется вместе с версией AD Application Mode (ADAM), включенной в Windows 2003 R2.

Рисунок 3: Предоставление разрешения Control Access на Private Information для Self при помощи ldp.exe (используется версия Windows 2003 R2 ADAM) 

В приведенном примере для предоставления разрешения control_access на Private Information для self используется ldp.exe. Нужно указать следующие данные и параметры в окне LDP ACE - Access Control Entry (см. Рисунок 3):

Trustee: nt authorityself 
ACE type: Allow
Access mask: Read property, Write property, Control access
ACE flags: Inherit
Object type: Private Information --propset
Inherited object type: user

Шаг 3: Исключение относящихся к DIMS каталогов из настроек перемещаемого профиля.

Microsoft рекомендует использовать перемещаемый профиль или роуминг учетных данных (но не то и другое одновременно), так как эти технологии могут переписать учетные данные PKI друг друга и оставить пользователя с устаревшей версией учетных данных PKI. В тех организациях, где используются обе технологии, нужно указать каталоги, относящиеся к DIMS, в списке исключений перемещаемого профиля. Для этого в оснастке MMC Group Policy Object перейдите к настройкам Default Domain PolicyUser ConfigurationAdministrative TemplatesSystem/User ProfilesExclude directories from roaming profile(см. Рисунок 4) и добавьте каталоги, относящиеся к работе DIMS, в список исключений (см. Рисунок 5).

Рисунок 4: Внесение каталогов DIMS в список исключений для перемещаемого профиля

Рисунок 5: Каталоги для внесения в список исключений в перемещаемый профиль

Шаг 4: Настройка DIMS на стороне клиента и в GPO

Можно использовать GPO для настройки параметров DIMS на стороне клиента, в том числе для включения или отключения роуминга учетных данных для конкретной учетной записи пользователя. Административный шаблон настроек DIMS доступен по адресу http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/serverhelp/9b3dfb50-f815-472b-9825-008f42b702f1.mspx. С указанной Web-страницы нужно скопировать содержимое шаблона в Notepad и сохранить, например, в файле dims.adm. Затем требуется загрузить административный шаблон DIMS в соответствующий GPO: запустите оснастку Group Policy Object, откройте контекстное меню контейнера Default Domain PolicyUser ConfigurationAdministrative Templates и выберите Add/Remove Templates.

После успешной загрузки административного шаблона вы увидите контейнер Digital ID Management Service в контейнере Default Domain PolicyUser ConfigurationAdministrative Templates (см. Рисунок 6. Администрирование клиентских настроек DIMS при помощи GPO). На вкладке Explain в окне Properties для X.509 certificate and key roaming рассказано о значении параметров DIMS в GPO и о том, на что они оказывают влияние.

К роумингу готов!

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


Таблица 1: Сравнение роуминга учетных данных, роуминга профилей и смарт-карт
Параметр сравненияРоуминг учетных данных Профильный роумингСмарт-карты
Влияние на полосу пропусканиянезначительноесреднее - высокоеотсутствует
Затраты на развертывание и поддержкунизкиеНизкиевысокие
Влияние на временную задержку при регистрации в домене незначительноесреднее - высокоенезначительное
Учетные данные PKI DPAPI - и для локального, и для серверного храненияDPAPI - и для локального, и для серверного храненияDPAPI плюс дополнительные функции безопасности смарт-карты - учетные данные не хранятся на сервере
Механизм восстановления для всего набора учетных данных PKI обеспечивается хранением в ADобеспечивается за счет хранения профилей в Windows Serverотсутствует
Механизм восстановления для индивидуального секретного ключа использование службы CA Key Archival And Recovery Serviceиспользование службы CA Key Archival And Recovery Serviceиспользование службы CA Key Archival And Recovery Service