A VMware Server 2.0 jogosultsági rendszere (roles and permissions)
Bizonyára sok virtualizációt / szerver konszolidációt használó helyen felmerült az igény, hogy egy gazdagép virtuális (vendég) gépeit eltérő felhasználók eltérő jogosultsági szinteken kezeljék. Ahogy a fizikai világban is egy szerverszoba gépeiből nem feltétlenül van joga a betévedő rendszergazdának mindegyiket nyomkodni: van amelyik konzoljához hozzáférhet, van amelyiket újraindíthatja (az áram kábel kihúzástól most eltekintünk, mint jog) lehet, hogy egy másik szerről csak mentéseket készíthet (DLT szalagot cserél), stb. Ehhez hasonló jogokkal találkozunk a VMware szerver 2.0 jogosultsági rendszerét vizsgálgatva. Cikkemben bemutatom a VMware Server 2.0 jogosultsági rendszerét, a cikk végén az érdeklődők számára megnézzük az authorization.xml-t is (Linux-alapú gazdagépeken jellemző).
Vajon van élet az 1.x-es „Make this virtual machine private”-on túl? Igen, van!
Az 1.x sorozatú VMware szerver esetén az élete nem volt könnyű annak a rendszergazdának, aki ezen üzemeltett eltérő jogosultságú virtuális gépeket.
A forgatókönyv nagyjából így nézett ki:
· vedd fel a felhasználókat (most ebbe beleértem a Linux passwd-től a Windows 2003 Domain felhasználókat is)
· a virtuális gépet reprezentáló könyvtárra (OS fájlokra) adj jogot annak, aki majd hozzáfér (és csak neki)
· állítsd be az összes virtuális gépet privátra, és amikor egy újat veszel fel figyelj, nehogy elfelejtsd a „Make this virtual machine private”-t benyomni, mert akkor az összes felhasználó látni fogja.
· Lépj be a MUI-ra weben vagy használd a VMware Server Console-t (az új felhasználóval)
Ez szép és jó, azonban csak annyit lehetett a jogosultsági rendszerrel szabályozni, hogy ki melyik géphez férhet hozzá. Azt nem, hogy mit csinálhat.
Kis trükközéssel azért itt (VMware Server 1.x) is csodákat lehetett művelni. Tavaly ez ügyben zseniális tanácsokat adtam ez ügyben a rászorulóknak (pl. vmx fájlra csak olvasási jog esetén nem tudja átkonfigurálni a gépét csak használni, stb.), de ez inkább hack-elés, mint hivatalos „feature”. A nosztalgia kedvéért íme még egy kép:
Jogok (role) és jogosult objektumok (permissions)
Az új VMware Server 2.0 esetén a jogosultsági rendszer számos újdonsággal lepi meg felhasználóit. Végre azt is meg lehet mondani hogy mit tehet az a valaki!
Itt egy nagyon jó áttekintő leírás (angolul) ez kötelező olvasmány annak, aki komolyan gondolja:
VMware Server 2.0 Security – Access, Roles and Permissions
http://www.virtuatopia.com/index.php/VMware_Server_2.0_Security_-_Access,_Roles_and_Permissions
Röviden a lényeg:
· a jogosultsági rendszer a felhasználó/csoport kezelés tekintetében teljesen a gazda operációs rendszerre hagyatkozik, legyen az Windows vagy Linux alapú.
· vannak jogok (mit lehet csinálni?)
· és jogosultságok (kinek-felhasználó/kiknek-csoport és melyik objektumon lehet az csinálniuk?).
Gyárilag be van szerelve 3 csoport (nincs joga, csak olvasni tud, admin mindent tud):
· No Access – The default role for users other than the administrator. Denies access to the VI Web Access interface. Attempts to log in will be met with a You do not have permissions to login to the server message.
· Read Only – Allows the user to login and view, but not change, configuration settings and virtual machine states. Access to virtual machine consoles is also denied.
· Administrator – Provides full privileges to all aspects of VMware Server 2.0, including the ability to configure roles, permissions and privileges for all users and groups.
A jogokat a felületen (vagy Linux esetén a háttérben található XML-ben kézzel szerkesztve) lehet módosítani.
Linux: /etc/vmware/hostd/authorization.xml
Windows: VMware Authorization Service ("VMAuthdService") és VMware Registration Service ("vmserverdWin32") gondoskodik a jogosultsági rendszerről (is).
Apró de zavaró szépséghiba Linux-on – RuntimeFault: Database temporarily unavailable or has network problems.
A jogosultsági rendszerrel való ismerkedés közben kaptam egy bingó-ablakot*:
* vicces hibaüzenet, melyen csak OK gomb van
A google 159 találatot ad a teljes hibaüzenetre, tehát nem vagyok egyedül a hibával:
RuntimeFault: Database temporarily unavailable or has network problems.
http://communities.vmware.com/message/1070373;jsessionid=14E91687B0FD4E23D0C03B51D3E66323
I dont know what the offical patch will be but here is a workaround I found translating a German document I found.
/etc/init.d/vmware-mgmt stop
vi /etc/vmware/hostd/authorization.xml
edit the line that talks about
<NextAceId>11</NextAceId>
incrament it past the current "root" or administrator account you have. so it now reads
<NextAceId>12</NextAceId>
I also deleted
<NextRoleId>11</NextRoleId>
doesnt seem to be used anywhere I then
/etc/init.d/vmware-mgmt start
and relogged in.
Re: How to VMWare Server 2.0 on Ubuntu 8.10
http://ubuntuforums.org/showthread.php?p=6184638
Megjegyzéseim:
· Windows alatt a Build 122589-et nyomkodva sehogy sem jött elő a hibaüzenet, hiszen ott másképpen működik az egész (nem találtam authorization.xml-t)
· A Linux (itt egy Ubuntu szerver van) alatt jellemző a hiba, a Build 116503-ben még benne van a hiba
A Linux alapú jogosultági rendszer lelke: az authorization.xml és működése
Azért én hozzátennék pár szót a fenti VMware közösségből érkező javaslathoz. A <NextRoleId> jelenti a következő szerep azonosítóját. Ezt butaság lenne kitörölni, mert akkor a következő szerep létrehozásakor máris újra a fenti hibaüzent szórakoztatna. Az authorization.xml-t kinyitva és „hosszan nézve” minden kitalálható, viszonylag deklaratív!
<ConfigRoot> a gökérelem,
<ACEData id="itt egy szám"> ez egyes permission-öket jelenti,
<RoleData id="itt a role azonosító figyel"> az egyes szabály (<NextRoleId> teccikemlékezni, ugye?).
<PrivSet id="role azonosító megint"> ez foglalja keretbe a Role-hoz tartozó jogosultságokat
<Priv id="VirtualMachine.Interact.PowerOn">VirtualMachine.Interact.PowerOn</Priv> ez pedig maga a jogosultság, amit a felületen bepipáltam a joghoz.
<NextAceId>15</NextAceId> – a következő permission (jog) felvételéhez kell <NextRoleId>12</NextRoleId> - a következő szerep felvételéhez kell, ha hibát kapsz, írd át 20-ra, mondjuk, az elég nagy szám. Vedd fel a szerepet, és utána visszaáll.
Nézzük egy példát: gépeket indít, pillanatfelvételt készít, de mást nem tud
Ha megbarátkoztunk az authorization.xml-lel, akkor nézzünk egy példát:
A konfiguráció mögötte:
Ez itt a szerep, van neki egy sorszáma és egy neve.
<RoleData id="11">
<RoleId>11</RoleId>
<RoleName>Client-snapshot</RoleName>
</RoleData>
Illetve tartoznak bele jogok:
<PrivSet id="11">
<Priv id="VirtualMachine.Interact.ConsoleInteract">VirtualMachine.Interact.ConsoleInteract</Priv>
<Priv id="VirtualMachine.Interact.PowerOff">VirtualMachine.Interact.PowerOff</Priv>
<Priv id="VirtualMachine.Interact.PowerOn">VirtualMachine.Interact.PowerOn</Priv>
<Priv id="VirtualMachine.Interact.Reset">VirtualMachine.Interact.Reset</Priv>
<Priv id="VirtualMachine.Interact.Suspend">VirtualMachine.Interact.Suspend</Priv>
<Priv id="VirtualMachine.Interact.ToolsInstall">VirtualMachine.Interact.ToolsInstall</Priv>
<Priv id="VirtualMachine.State.CreateSnapshot">VirtualMachine.State.CreateSnapshot</Priv>
<Priv id="VirtualMachine.State.RemoveSnapshot">VirtualMachine.State.RemoveSnapshot</Priv>
<Priv id="VirtualMachine.State.RenameSnapshot">VirtualMachine.State.RenameSnapshot</Priv>
<Priv id="VirtualMachine.State.RevertToSnapshot">VirtualMachine.State.RevertToSnapshot</Priv>
<PrivRoleId>11</PrivRoleId>
</PrivSet>
Hát ennyi az egész. Ugye nem is olyan bonyolult?
(Az ESX szerver esetén a jogosultsági rendszer ha szükséges, durván elkomplikálódhat, viszont sokkal jobban szofisztikázható is ezáltal.)
Kapcsolódó cikkek:
VMware Server 2.0 Security – Access, Roles and Permissions
http://www.virtuatopia.com/index.php/VMware_Server_2.0_Security_-_Access,_Roles_and_Permissions
Understanding VMware ESX Server Security Profiles



