Hyper-V遠端管理與指派使用者權限
Hyper-V的遠端管理與指派權限從Windows Server 2008的版本就已經有提供了
就算到Windows Server 2012 Beta的版本還是沒有改變
到了Windows Server 2012 Beta還是沒辦法指定到某些User或Group只能看到被指派的VM
要是多了一個指派VM的功能,我想應該對部分使用者在權限控管上會有不小的幫助
Hyper-V的使用者權限管理其實是在%system drive%\Program Data\Microsoft\Windows\Hyper-V\InitialStore.xml這個XML裡
要指派使用者權限,需要用到【授權管理員】這個MMC工具(azman.msc),可以從執行那裏輸入【azman.msc】
然後透過【授權管理員】去開啟%system drive%\Program Data\Microsoft\Windows\Hyper-V\InitialStore.xml
接著就可以看到如下圖的畫面(下圖是Windows Server 2012 Beta預設權限的狀況,比之前版本多了一個Hyper-V Admin)
至於指派使用者權限能做到甚麼樣的程度,首先先來看一下預設的工作清單,總共34種
工作項目 |
Allow Input to Virtual Machine |
Modify Switch Port Settings |
Allow Output from Virtual Machine |
Modify Switch Settings |
Allow Virtual Machine Snapshot |
Pause and Restart Virtual Machine |
Bind External Ethernet Port |
Read Service Configuration |
Change Virtual Machine Authorization Scope |
Reconfigure Service |
Change VLAN Configuration on Port |
Reconfigure Virtual Machine |
Connect Virtual Switch Port |
Start Virtual Machine |
Create Internal Ethernet Port |
Stop Virtual Machine |
Create Virtual Machine |
Unbind External Ethernet Port |
Create Virtual Switch |
View External Ethernet Ports |
Create Virtual Switch Port |
View Internal Ethernet Ports |
Delete Internal Ethernet Port |
View LAN Endpoints |
Delete Virtual Machine |
View Switch Ports |
Delete Virtual Switch |
View Switches |
Delete Virtual Switch Port |
View Virtual Machine Configuration |
Disconnect Virtual Switch Port |
View Virtual Switch Management Service |
Modify Internal Ethernet Port |
View VLAN Settings |
紅字的部分,是在指派權限時,一定要指派進去的兩個權限
Read Service Configuration指派後才能讀取VMMS服務裡面的設定
Allow Output from Virtual Machine指派後才能將VM讀出來
所以這兩項是基本要指派的,缺一不可
接著我假設一個需求,假設我的環境並不允許遠端桌面,也不允許User對我的VM做任何事情
只允許他透過VMconnect(Hyper-V的連線管理員)去操作
我們可以指派這個角色只有Read Service Configuration、Allow Output from Virtual Machine、Allow Input to Virtual Machine(對VM輸入)
這樣就可以取代掉遠端桌面的事情(但是沒辦法透過遠端掛載USB裝置到VM中)
接著建立一個新角色,並指定可使用的工作項目
輸入一個名稱,然後按下新增
選Operations,去勾選要指派給這個角色的工作項目(下面兩張圖是以假設環境去勾選)
接著是建立角色指派
勾選剛剛建立的角色
接著就是指派這個角色裡面,它的使用者或者是群組
這是我在AD裡面建立的User,只有Domain Users的權限,在這部機器上,它只存在Users群組中
這樣在權限指派上就已經算完成了
在這部主機上,使用User1這個帳號是沒辦法對VM做其他事情(如Power off、Start VM),會出現沒有權限
但是你還是能透過VMconnect去對VM做些維護上的工作(當然你要從VM裡關機或重開還是可以)
※如果是Server Core版本,請透過其他台的授權管理員,去進行指派權限的動作
連線時的XML路徑是\\<remote_computer>\c$\ProgramData\Microsoft\Windows\Hyper-V\initalstore.xml
※以上這些步驟都不需要重新啟動Server,但是以下的會需要
做到這邊算是完成了權限指派,但是還沒辦法透過遠端來控制(還無法透過其他台的Hyper-V管理員控制)
接下來要啟用遠端管理,會需要對Windows防火牆針對WMI進行開Port(如果防火牆有開的話)
可以輸入【netsh advfirewall firewall set rule group=“Windows Management Instrumentation (WMI)” new enable=yes】,就可以開啟WMI的Port
然後要將可以遠端控制的User加入到本機Distributed COM Users群組裡面
如果是GUI介面,則是透過【電腦管理】→【本機群組與使用者】→【群組】,在裡面可以看到
(找不到的話,可以用compmgmt.msc把電腦管理叫出來)
Server Core版本則是使用Command,【net localgroup “Distributed COM Users” /add <domain_name>\<user_name>】
接著一樣在電腦管理的畫面中,去設定【WMI控制】,選擇【內容】
(接下來的步驟,Server Core需要以其他台的電腦管理GUI介面連過去設定,設定方式皆相同)
接著切換到【安全性】的頁籤,需要修改【CIMV2】跟【Virtualzation】,兩個設定方式都一樣,我以【CIMV2】示範
接著新增我們要遠端控制的群組或使用者
我這邊一樣以User1舉例
建完之後,Enable Account(啟用帳號)會是允許的,可以不勾選
我們要手動勾選Remote Enable(啟用遠端),然後按下Advanced
接著點我們剛剛新增的使用者,按下編輯
選擇This namespace and subnamespaces(套用到這個命名空間和子命名空間)
並且勾選Only apply these permissions to object and /or containers within this container(僅套用這些權限到此容器中的物件及容器)
接著再對【Virtualzation】做一樣的設定,接著重新啟動伺服器,就完成了遠端設定
如果Client或者Server任何一端有非網域的情況下,在Client會需要用到CmdKey這個指令
透過Cmdkey去指定要連到Hyper-V Host時所用的帳號密碼。