Делегирование прав на Hyper-V. Часть 2 — присвоение области виртуальным машинам
Мы уже обсуждали общие вопросы модели делегирования Authorization Management Framework и Authorization Manager, используемый в Hyper-V. Сейчас пришло время более детально рассмотреть некоторые наиболее насущные вопросы. Большинство заказчиков, которым я рассказываю про модель делегирования в Hyper-V первым делом спрашивают меня, возможно ли делегировать пользователю или группе некоторые права на конкретную виртуальную машину. В Virtual Server 2005 единственным способом предоставления доступа к ограниченному набору ВМ являлось использование NTFS ограничений на конфигурационные файлы, так чтобы пользователи могли работать лишь с теми виртуальными машинами, на которые у них достаточно NTFS прав. Модель, используемая в Hyper-V позволяет настраивать это более гибко.
Одним из фундаментальных терминов Authorization Management Framework является Область (Scope). Что это такое я уже рассказывал, - очевидно, что для задачи делегирования прав на конкретные виртуальные машины следует создать область, содержащую данные машины. Создается область в консоли Authorization Manager.
Далее вам нужно поместить в данную область необходимые виртуальные машины. В некоторых случаях удобно для каждой ВМ создавать отдельную область, - когда вы хотите разным группам пользователей дать доступ к разным пересекающимся наборам ВМ. Иногда удобно виртуальные машины группировать в области по ролям - контроллеры, Exchange серверы, тестовые серверы отделов.
Следующим шагом станет помещение самих виртуальных машин в созданную область. Увы, этот шаг совсем не тривиален, по крайней мере пока у вас не установлен и настроен System Center Virtual Machine Manager 2008. Средств помещения виртуальной машины в заданную область в MMC консоли AzMan нет (в ней вообще не фигурируют сами ВМ), возможностей сделать это из командной строки в версии Hyper-V RC1 я не знаю. Однако, я знаю как это можно сделать через WMI запросы, а значит, это можно сделать и средствами PowerShell. Во вложении к статье вы найдете два скрипта, которые автоматизируют эту задачу. Первый скрипт - Getscope.vbs в качестве параметра требует имя виртуальной машины, а возвращает название области, которой она принадлежит. Если возвращенное значение пустое, значит виртуальная машина принадлежит к области по умолчанию (default scope). Второй скрипт Setscope.vbs в качестве параметров требует имя виртуальной машины и название созданной области, в которую вы хотите поместить виртуальную машину. В результате работы скрипта виртуальная машина переместится в указанную область.
Наиболее сложная часть на этом закончена. Далее потребуется лишь описать Задачи (Tasks) и Роли (Roles) в данной области, и связать роли с доменными пользователями или группами. Об этом я расскажу в следующий раз. Если знатоки PowerShell помогут переписать мои скрипты в виде cmdlet'ов, буду очень признателен.
Comments
Anonymous
January 01, 2003
Чтобы GetScope не давал ошибки, область должна быть вручную создана (на картинках в статье видно как) И SetScope может помещать машины только в существующую областьAnonymous
January 01, 2003
В рамках подготовки к Virtualization Launch пришлось таки придумывать примеры. Радуйтесь :) Пример помещения ВМ в Область. Исхожу из того, что на сервере:
- Есть несколько ВМ, название части из которых начинается на "01_"
- Существует отдельная область с именем "01_Scope"
Пример ниже перенесет все ВМ с именем, начинающимся с "01_" в область "01_Scope"
$VM_Service = get-wmiobject -namespace rootvirtualization Msvm_VirtualSystemManagementService
$ListofVMs =get-wmiobject -namespace rootvirtualization Msvm_ComputerSystem -filter "ElementName <> Name " |
where { $_.ElementName -like "01_*"} foreach ($VM in $ListofVMs) { if ( $VM -ne $Null) { $VMGlobalSetting = get-wmiobject -namespace rootvirtualization Msvm_VirtualSystemGlobalSettingData | where
{ $_.ElementName -like "$($VM.ElementName)" } $VMGlobalSetting.ScopeOfResidence = “01_Scope” $VM_Service.ModifyVirtualSystem($VM.__PATH, $VMGlobalSetting.psbase.Gettext(1)) } }
Anonymous
July 25, 2008
Alex, пример выполнения команд добавьте плиз!! для таких как я в статью =) Для получения принадлежности к области: C:HVTools>Getscope.vbs "Project Server 2007" где - "Project Server 2007" название виртуально машины. Для установки принадлежности к области: C:HVTools>Setscope.vbs "Project Server 2007" "SharePoint Servers" где - "Project Server 2007" название виртуально машины. где - "SharePoint Servers" название области в которую помещается VM.Anonymous
September 22, 2010
воспользовался скриптами но оба выдают ошибку C:Getscope.vbs "service.contoso.com" -Line: 15 Chart:1 Error: Invalid parameter Code:80041008 Source:SWbemObjectSet что не так?Anonymous
May 30, 2012
Очень познавательно. А где можно прочитать следующую часть? я не нашёл Часть 3... Спасибо.