Directorio activo hybrido en Azure

Ambos nombres son equivalentes, describen un atributo que no cambia durante la vida de un objecto. Se trata de identificar de forma única en un entorno local y en Azure AD.

Por defecto se calcula codificando en Base 64 la propiedad objectGUID del servidor local, por ejemplo:

$Usuario = Get-ADuser nombreDeUsuario -Properties * -server localhost
$ImmutableID = [system.convert]::ToBase64String(([GUID]($Usuario.ObjectGUID)).tobytearray())

Realmente no debería cambiarse, pero en ocasiones nos encontramos en la necesidad de hacerlo, bien por una migración de directorio, eliminación de usuarios, replicación con errores… Si en lugar de utilizar el objectGUID utilizariamos un atributo personalizado no tendríamos este problema pero conllevaría la gestión y administración del mismo, si dentro de la empresa cada uno tiene un identificador único personal podría utilizarse para calcular el sourceAnchor.

Esta propiedad se establece durante la instalación inicial, solo si se desinstala correctamente se puede volver a establecer con un valor personalizado, desde la versión 1.1.524.0 se facilita el atributo ms-DS-ConsistencyGuidcomo atributo de los usuarios a utilizar como sourceAnchor.

Podemos visualizar la propiedad actual desde PowerShell:

Import-Module AzureAD
$O365Cred = Get-Credential
$O365Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection
Import-PSSession $O365Session
Connect-AzureAD -Credential $O365Cred
Get-AzureADUser -ObjectId nombreUsuario@midominio.com | Select objectID, UserPrincipalName, ImmutableID

Si bien, en la documentación aparece, la posibilidad de establecer el valor en nulo para desvincular las cuentas creadas localmente de la nube mediante powershell:

Set-AzureADUser -ObjectId nombreUsuario@midominio.com -ImmutableID $null

No genera ningún resultado ni modificación del objeto, por lo menos a fecha de hoy.

Como alternativa, podemos crear un usuario temporal en nuestro directorio, sincronizar e intercambiar sourceAnchor, asignando otro incorrecto al usuario a eliminar posteriormente.