Sdílet prostřednictvím


Делегирование прав на 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'ов, буду очень признателен.

VMsScopes.zip

Comments

  • Anonymous
    January 01, 2003
    Чтобы GetScope не давал ошибки, область должна быть вручную создана (на картинках в статье видно как) И SetScope может помещать машины только в существующую область

  • Anonymous
    January 01, 2003
    В рамках подготовки к Virtualization Launch пришлось таки придумывать примеры. Радуйтесь :) Пример помещения ВМ в Область. Исхожу из того, что на сервере:

  1. Есть несколько ВМ, название части из которых начинается на "01_"
  2. Существует отдельная область с именем "01_Scope" Пример ниже перенесет все ВМ с именем, начинающимся с "01_" в область "01_Scope" $VM_Service = get-wmiobject -namespace rootvirtualization Msvm_VirtualSystemManagementService $ListofVMs =get-wmiobject -namespace rootvirtualization Msvm_ComputerSystem -filter  "ElementName <> Name "  | &nbsp; &nbsp;where { $_.ElementName -like &quot;01_*&quot;} foreach ($VM in $ListofVMs) { &nbsp; &nbsp; &nbsp; &nbsp;if ( $VM -ne $Null) &nbsp; &nbsp; &nbsp; &nbsp;{ &nbsp; &nbsp; &nbsp; &nbsp;$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... Спасибо.