tisdag 26 juni 2012

Så migrerar du Office 365 till ditt AD - TechWorld

Så migrerar du Office 365 till ditt AD - TechWorld

När du växt ur din Office 365-lösning och molnet inte täcker alla dina behov, då är dags att börja kika på hur du bär dig åt för att migrera användare och grupper från Office 365 till ditt lokala Active Directory.  

Ibland växer man ur kostymen. Livet knallar på och en dag behöver man bästa kostymen för att ta sig iväg till någon tillställning och så är det pinsamt trångt när man drar på sig sin finaste kostym.

Situationen uppstår inte bara med kläder utan även i it-sammanhang. Det lilla företaget växer och får nya krav på sin it-miljö. Just en sådan situation skall vi titta på idag.

Vad händer när du växer ur din Office 365-lösning och inser att molnet inte räcker till för dina behov, du inser att du behöver en lokal domänkontrollant och en lokal filserver för att dela och styra åtkomst till lagring, skrivare och andra lokala resurser?

Office 365 ger dig möjligheten till att via ADFS-federation knyta inloggning till ett lokalt Active Directory till Office 365. Har man dock börjat utan en lokal Active Directory-domänkontrollant så skapas användare och grupper direkt i Office 365. Då har vi en situation där vi vill exportera användare och grupper ur Office 365 för att importera dessa i ditt lokala Active Directory. Detta är vårt scenario och som medicin mot symptomet ovan har vi PowerShell och Office 365-cmdlets.

Till och börja med så kan de som inte kör Office 365 redan idag registrera sig hos Microsoft och få 30 dagars gratis åtkomst till Office 365. Så vill ni bara leka lite med de PowerShell-cmdlets som visas här så kan ni utan problem följa med.

Vi börjar med att ladda ner Office 365 cmdlets som finns här. När dessa är nedladdade och installerade så kan vi öppna en PowerShell konsol och börja titta på vad vi har att leka med.
Så vi börjar med att kolla med Get-Module –ListAvailable om Office 365 modulen blivit korrekt installerad.




I listan kan vi se modulerna MSOnline, MSOnlineExtended och även ActiveDirectory modulen som vi behöver. Så vi laddar MSOnline och ActiveDirectory med Import-Module. MSOnlineExtended moduen behöver vi inte här. Den modulen är bra till för att hantera service konton och service principal names internt i Office 365 (SPN ringer nog en klocka för er som kommer ihåg er kerberos). Detta inget vi behöver titta på nu så det räcker att vi laddar msonline modulen och ActiveDirectory modulen.



När dessa är laddade så kan vi undersöka vad för cmdlets vi har i MSOnline modulen med Get-Command –Module MSOnline



Vi får en lång lista med med kommandon. I denna lista så skall vi titta närmare på Get-MSOLUser, Get-MSOLGroup och Connect-MSOLService.

Connect-MSOLService ansluter oss I våran PowerShell session till Office 365. Connect-MSOLService behöver ett PSCredentials objekt, vilket innehåller användarnamn och lösenord, som parameter. Om man inte anger ett PSCredentials object så frågar Connect-MSOLService efter namn och lösenord med en typisk Windows dialogruta för inloggningsuppgifte



 
Nu är vi anslutna till Office 365 och vi kan börja titta på hur vi kan få ut information om de användarna och de grupperna som finns i Office 365. Till vår hjälp har vi Get-MSOLUser-kommandot för att hämta användar information.



Tittar vi lite nogrannare ser vi alla de attribut som sparas på en användare. Jag har en testanvändare i Office 365 som jag fyllt i alla attributvärden i. För att se alla attributvärden i testanvändaren (dxter)kör vi följande kommando:



Nu ser vi alla Office 365-attribut i användaren dxter. Så i vårt migreringsskript behöver vi nu bara ta dessa attribut ifrån varje användare och skapa ett användarkonto i Active Directory. En viktig sak att notera ovan är ObjectID-värdet. I de olika cmdlet’s som finns i MSOnline-modulen så jobbar dessa mycket med ObjectID-värdet, till exempel vid att lägga till användare i grupper i Office 365. Det är med andra ord inte som i Active Directory där vi använder oss av Distinguished name. Det gör att det kan bli lite knepigt att jobba med Office 365 i vissa lägen.

Hämta alla grupper och användare
Till exempel kan kommandot för att lägga till en användare till en grupp se ut enligt följande: Add-MsolGroupMember -GroupObjectId 31196497-a8f0-49b6-9409-5f8c5bb5dd0e -GroupMemberType user -GroupMemberObjectId d73e701b-b885-4365-844a-ca0125217cbd. Inte den trevligaste raden att knappa in om man nu skulle få för sig det. Vi får helt enkelt hämta alla grupper och användare och lägga dessa i variabler och jobba med att matcha ihop saker ”offline” i powershell-miljön i sig.

Tillbaka till själva målet. Vi vill ju importera användarna i vårt lokala Active Directory. Det är ganska enkelt men vi behöver sätta nya lösenord till användarna i Active Direcotry. Av säkerhetsskäl, har vi ingen möjlighet att exportera lösenorden för användarna i Office 365, och tur är väl det kanske vi bör tillägga. Steg ett i skriptet blir alltså att skapa användarna. Som en följd av detta är första steget att generera ett nytt lösenord vilket vi mailar till användaren.

Steg två blir att skapa alla grupper. I Office 365, liksom i Active Directory, så kan grupper vara medlemmar i grupper. Därför vill vi ha alla grupper och användare skapade innan vi ger oss på gruppmedlemmar.

Sista och tredje steget blir helt enkelt att lägga till medlemmarna i grupperna. Så nu hoppar vi in i själva skriptet. I exemplet nedan har jag tagit bort en del kod som är till för att strukturera upp och hantera fel med mera.




Som ni ser så är det inte så mycket som krävs. Vi skapar lite variabler och ett nytt lösenord, båda i klartext NewPassword och som en SecureString. Därefter sätter vi upp New-ADUser och skickar i väg ett mail med lösenordet. E-postadressen är som ni ser lite knepig att få ut då vi kan ha flera e-postadresser och på vanligt Microsoft-manér så är huvudadressen den med ”SMTP:” i stora bokstäver som prefix.

Vi filtrerar ut huvudadressen med –cmatch, ”c” i cmatch står för case sensitve från epostadresslistan i proxyaddresses attributet. När vi sedan kommer till att lägga till proxyaddresses till Active Directory användaren så ser ni att proxyaddresses inte finns som en parameter i sig till New-AdUser kommandot. Vi använder iställer –OtherAttributes som tar en hashtable med attributnamn och värden. På så sätt kan man lägga till alla de attribut som finns definierade för användarklassen i Active Directory.

Då var användarna skapade och migrerade och lösenord utskickade. Tittar ni på det medskickade riktiga skriptet så ser ni att email skickas iväg med smtp över TLS så med andra ord har vi inte tummat allt för mycket på säkerheten genom att eposta lösenordet.
Nu till att skapa grupperna.



Vi läser ut alla grupperna, vi sparar dessa i en variabel då vi vill jobba med grupperna i steg tre också. För varje Office 365 grupp så går vi igenom våran Foreach-Object loop och lägger till en ny Active Directory-grupp. Vi kopierar de attribut vi vill ha rakt från $_(current object) variablen.




I steg tre återanvänder vi variabeln som innehåller alla Office 365-grupperna ($onlineGroups). För varje Office 365 grupp hämtar Active Directory motsvarande grupp vi skapade i steg två. Med Get-MsolGroupMember så hämtar vi Office 365 gruppernas medlemmar och med hjälp av dessa så hämtar vi rätt medlems object ifrån Active Directory och nu har vi både korresponderande Active Directory-grupp och medlem och kan då lägga till rätt medlem i rätt grupp.

För att i framtiden undvika dubbel administration så bör man titta på det synkroniseringsverktyg som Microsoft tillhandahåller för Office 365. Administratörer bör även titta på Active Directory Federation Services (ADFS), för att handskas med autentisering på ett lämpligt sätt .

Det lilla företaget har nu en större kostym att jobba i, med möjligheter att kontrollera en lokal it-miljö med Active Directory. Med förhållandevis enkel skripthantering så har vi lyckats migrera Office 365 användarinformation, grupper och även på ett säkert och snabbt sätt gett användarna ett nytt lösenord för den nya miljön.

Framför allt mötte vi företagets växande krav på ett väldigt snabbt och ekonomiskt sätt.


Innehållsförteckning

Inga kommentarer:

Skicka en kommentar