Делегирование прав на Hyper-V. Часть 1 — Хранение Authorization Management в Active Directory

В своей вводной статье о модели делегирования прав в Hyper-V я рассказал об основных элементах модели Authorization Management Framework, их взаимосвязях — и о том, как делегировать права пользователю на определенные действия. По умолчанию Authorization Manager хранит настройки в локальном файле %programdata%\Microsoft\Windows\Hyper-V\InitialStore.xml. Однако есть возможность хранить эти настройки не на каждом узле, а централизованно: в Active Directory или базе данных Microsoft SQL Server. Сегодня мы поговорим о том, как создать хранилище Authorization Management в Active Directory, как управлять им и как настроить серверы Hyper-V на его использование.

Сразу замечу — для того, чтобы создать в Active Directory хранилище AzMan, ваш домен должен работать на функциональном уровне не ниже Windows Server 2003. Authorization Management Store находится в конфигурации домена, поместить его в отдельный application partition невозможно. Итак, рассмотрим основные шаги, необходимые для централизации настроек делегирования Hyper-V.

Создание хранилища AzMan

Хранилище AzMan создается в контейнере Program Data вашего домена. Например, для домена test.com полный путь (DN) хранилища AzMan Store может быть таким: CN=VmAzStore,CN=Virtualization,CN=Microsoft,CN=Program Data,DC=test,DC=com (имя самого контейнера вы можете задать любое. Подробнее про хранилища AzMan следует почитать на TechNet).

Я не буду описывать процедуры создания хранилища AzMan Store вручную, так как его нужно не только создать, но и заполнить объектами, описывающими элементы модели. Проще сделать это сценарием, импортировав настройки из локального файла в формате XML. Сам сценарий я прилагаю к статье, а ниже опишу, как им пользоваться.

Делегирование прав на хранилище AzMan

Серверы Hyper-V должны обращаться к хранилищу AzMan для проверки прав доступа пользователей. Служба VMMS работает в контексте Local System. Следовательно, к контейнеру AzMan Store в домене серверы будут обращаться в контексте доменных учетных записей компьютеров. Для этого с помощью консоли AzMan.msc необходимо учетным записям узлов, которые будут использовать данное хранилище, делегировать роль Reader на контейнер.

Настройка самих серверов на использование внешнего хранилища AzMan

После того, как мы создали и наполнили объектами AzMan Store в Active Directory и делегировали серверам права чтения этой информации, следует настроить серверы на использование этого хранилища. Настройки того, к какому хранилищу AzMan будет обращаться сервер, хранятся в параметре реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization\StoreLocation (тип REG_SZ). В значении этого параметра следует указать полный путь к хранилищу AzMan. Путь к хранилищу в домене выглядит примерно так: msldap://CN=VmAzStore,CN=Virtualization,CN=Microsoft,CN=Program Data,DC=test,DC=com.

Для того, чтобы настройка вступила в силу, потребуется перезапустить службы VMMS и NVSPWMI или перезагрузить сервер.

Пример выполнения описанных настроек

Шаги ниже приводятся лишь для демонстрации работы описанного выше метода.

  • Ваш сервеh Hyper-V должен быть членом домена.

  • Ваш домен должен иметь функиональный уровень Windows 2003 или выше.

  • В контексте учетной записи с правами администратора домена (требуются права на создание объектов в контейнере Program Data) запустите командную строку с повышенными правами и выполните прилагаемый сценарий CreateAzManStore, указав пути к создаваемому в вашем домене контейнеру и к файлу InitialStore.xml. (Возможно, разумнее окажется сначала скопировать файл InitialStore.xml во временный каталог и указывать в сценарии путь к этой копии):

    cscript CreateVmAzStore.js "msxml://C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml" "msldap://CN=VmAzStore,CN=Microsoft,CN=Program Data,DC=test,DC=com"

  • В консоли AzMan.msc откройте контекстное меню самого хранилища VmAzStore (имя хранилища будет таким, как вы указали в команде на его создание), перейдите в его свойства и откройте вкладку «Безопасность». Выберите роль Reader и добавьте в нее группы «Domain Computers», чтобы серверы Hyper-V могли читать настройки из хранилища, и «Domain Users» (или другую группу пользователей), чтобы у вас была возможность просмотреть существующие настройки. В файле по умолчанию заданы права чтения для всей группы «Authenricated Users», так что здесь думайте сами.

  • На каждом сервере Hyper-V, который должен использовать это хранилище (а хранилищ в домене может быть несколько), запустите редактор реестра с повышенными правами, затем в ключе HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization укажите для параметра StoreLocation значение, указывающее на путь к вашему хранилищу. В моем примере — это msldap://CN=VmAzStore,CN=Microsoft,CN=Program Data,DC=test,DC=com.

  • Перезапустите службы VMMS и NVSPWMI или перезагрузите сервер.

Для автоматизации настройки нескольких серверов Hyper-V я написал административный шаблон, который можно использовать в групповой политике для настройки путей к хранилищам AzMan. Этот шаблон прилагаю к статье. Так как ветвь реестра HKLM\Software\Microsoft\Windows NT является «неуправляемой» (Unmanaged), то в случае редактирования политик на Windows XP/2003 в редакторе политик следует в меню View/Filtering отключить фильтрацию только управляемых (Managed) политик. Ниже следует код шаблона — сохраните его в текстовом файле с расширением «.adm».

;;;;;;;AzMan.adm;;;;;;;
;;;;Alex A. Kibkalo;;;;;
CLASS MACHINE ;;;;
CATEGORY !!VmAzStore
POLICY !!SetVmAzStore
KEYNAME "Software\Microsoft\Windows NT\CurrentVersion\Virtualization"
EXPLAIN !!VmAzStoreExpl
PART !!VmAzStorePath EDITTEXT
DEFAULT !!DefaultVmAzStoreXML
VALUENAME "StoreLocation"
END PART
END POLICY
END CATEGORY

[strings]

VmAzStore="Autorization Manager"
SetVmAzStore="Set AzMan Store"
VmAzStorePath="Path to AzMan Store"
DefaultVmAzStoreXML=msxml://C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml
VmAzStoreExpl="Here you set the location of AzMan store for Hyper-V host. Default value is: msxml://C:\ProgramData\Microsoft\Windows\Hyper-V\InitialStore.xml If you install SCVMM agent, the path to XML file changes to msxml://C:\ProgramData\Microsoft\Virtual Machine Manager\HyperVAuthStore.xml If you set up AzMan Store in Active Directory and delegated hosts the Reader role, you may specify the Active Directory path like this: msldap://CN=VmAzStore,CN=Microsoft,CN=Program Data,DC=test,DC=com." 

;;;;End of template;;;;;

К выходу окончательной версии Hyper-V на TechNet должна появиться подробная статья на эту же тему. Я дам на нее ссылку и обновлю свою версию.

CreateVMAzStore.js