Azure AD Identity umziehen

Hat man in der heutigen Zeit mit einer Active-Directory-Migration zu tun, so ist meist die eigentliche Migration der Computer und User das kleinste Übel. Durch die Anbindung diverser Systeme muss aber jede Identität eines Users in jedem angebundenen System berücksichtigt werden. Ein sehr gutes Beispiel hierfür ist Office 365, respektive die Azure-Active-Directory-Identität eines Benutzers, an der in der durchschnittlichen Umgebung mindestens eine Mailbox, ein Sharepoint-Profil und ein Skype-for-Business-/Teams-Account hängt.

Bis November letzten Jahres war es problemlos möglich, die ImmutableID, sprich das „Ankerattribut“ im Azure Active Directory ohne weitere Maßnahmen anzupassen. Somit musste man nur sicherstellen, dass der vorherige Account nicht mehr synchronisiert wird, sobald der Quellanker auf den neuen Benutzer umgezogen wurde. Gemäß verschiedenen Beiträgen im Technet, war dies allerdings ein Bug, welcher nun behoben wurde.

Um seit November eine Azure-AD-Identität – bei der sich userPrincipalName und Quellanker ändert – umzuziehen, muss folgendes Prozedere durchgeführt werden:

1. Alten Account aus dem AAD Connect Scope entfernen

> $sourceADUser | Move-ADObject -Server $sourceDC -TargetPath $usersContainer -ErrorAction Stop

2. Azure AD Delta Sync abwarten

3. Den gelöschten Azure AD User wiederherstellen

> Get-MsolUser -ReturnDeletedUsers -UserPrincipalName $sourceUPN | Restore-MsolUser -ErrorAction Stop

4. Den userPrincipalName des AAD Users auf einen temporären UPN einer nicht federierten Domäne (wie z.B. xyz.onmicrosoft.com) ändern

> Set-MsolUserPrincipalName -UserPrincipalName $sourceUPN -NewUserPrincipalName $tempUPN

5. Die ImmutableID und somit den Quellanker auf die ImmutableID des neuen Users ändern

> Get-MsolUser -UserPrincipalName $tempUPN | Set-MsolUser -ImmutableId $value -ErrorAction Stop

6. Den userPrincipalName auf den UPN des neuen Benutzers ändern

> Set-MsolUserPrincipalName -UserPrincipalName $tempUPN -NewUserPrincipalName $destUPN -ErrorAction Stop

7. Den neuen Benutzer im AD in den Azure AD Connect Scope verschieben

Da dieser Vorgang per Hand zu aufwendig ist, habe ich ihn in einer Funktion zusammengeführt. Die Funktion ist in der Lage, sowohl die AAD Identität in der selben Domäne, als auch die Identität eines Benutzers aus einer anderen vertrauten Domäne umzuziehen.

Die Funktion steht hier zum Download bereit:

https://github.com/RobinBeismann/PowerShell-Scripts/blob/master/Scripts/MS-AD/Migrate-AADIdentity.ps1

Möchte man zum Beispiel die Identität des Benutzers ellen.bogen@faq-o-matic.de aus der Domäne faq-o-matic.de auf den Benutzer paul.ahner@contoso.com in der Domäne contoso.com umziehen, so führt man folgendes Kommando aus.

Connect-MsolService -Credential (Get-Credential)
Move-AADIdentity -sourceUPN "ellen.bogen@faq-o-matic.de" `
-sourceDomain "faq-o-matic.de" `
-destUPN "paul.ahner@contoso.com" `
-destDomain "contoso.com" `
-destADOU "OU=AADSync,DC=contose,DC=com" `
-AADConnectServer "AADConnect.contoso.com"

Das Script sucht in diesem Fall automatisch je einen Domain Controller der beiden Domänen, der die Active Directory Web Services bereitstellt und nutzt diesen für die Active Directory Cmdlets. Die Funktion geht davon aus, dass das Attribut mS-DS-ConsistencyGUID als Ankerattribut verwendet wird und setzt dieses sicherheitshalber auf dem Zielbenutzer analog zu dessen objectGUID. Es muss sichergestellt sein, dass der Zielbenutzer noch nicht im AAD Connect Scope ist. Der Quellbenutzer wird danach in den im AD Configuration Container definierten defaultUserContainer verschoben, dieser darf sich dem entsprechend ebenfalls nicht im Azure AD Connect Sync Scope befinden.