Hledá se ms-DS-ConsistencyGuid
Jak jistě víte, AAD Connect již od verze 1.1.524 (květen 2017) preferuje používání atributu ms-DS-ConsistencyGuid jako tzv. „sourceAnchor“. SourceAnchor je definován jako atribut, který je neměnný po dobu životnosti objektu, a možná jej také znáte pod názvem „immutableId“.
Původně Microsoft používal jako immutableId GUID objektu, což ale v určitých situacích může způsobovat problémy (např. při migraci uživatele mezi AD foresty, nebo při potřebě manuálního párování identit mezi Active Directory a Azure Active Directory). Výchozí hodnota ms-DS-ConstistencyGuid je hodnota objectGUID a ve většině případů tedy budou hodnoty totožné.
Poznámka: ms-DS-ConsistencyGuid se používá jako sourceAnchor prozatím pouze pro uživatele.
Obrázek 1 – prázdný atribut u synchronizované skupiny zabezpečení
Při detailnějším pohledu si nelze nevšimnout, že sice stále pracujeme se stejnou hodnotou, ta je ale na různých místech zapsána různě:
Obrázek 2 – Atribut sourceAnchor pro uživatele
A aby toho nebylo málo, AAD Connect občas ještě přidá nějakou tu nulu navíc:
Obrázek 3 – rozdílné zobrazení stejné hodnoty
Při práci s immutableID je vždy vhodné provést křížovou kontrolu, nebo ověřit očekávanou hodnotu. Typickým příkladem jsou např. účty (admin role), na které nemá servisní účet AAD Connectu práva pro zápis, nebo vynucený „hard match“ – ruční spárování identit.
Pro jednorázové použití obvykle bohatě stačí zkopírovat hodnotu z atributu objectGUID do atributu mS-DS-ConsistencyGuid v konzoli „Active Directory Users and Computers“ – ty jsou naštěstí obě dostupné v HEX formátu.
Pro častější použití se vám mohou hodit následující skripty.
Get-ImmutableIDfromGUID_User převede objectGUID na Base64 a HEX hodnoty, které následně můžete použít pro další pátrání, případně je porovnat nebo rovnou zapsat do atributu ms-DS-ConsistencyGuid.
Obrázek 4 – Převod objectGUID na immutableID
Search-ImmutableIDUser se naopak pokusí vyhledat uživatele v AD podle zadaného immutableID.
Obrázek 5 – Vyhledání uživatele podle immutableID
Function Get-ImmutableIDfromGUID_User($ADUserName){
Import-Module activedirectory
$GUID = [GUID](Get-ADUser $ADUserName | select -ExpandProperty objectguid | select -ExpandProperty guid)
if($Guid){
$ByteArray = $GUID.tobytearray()
$IMM_Base64 = [system.convert]::ToBase64String($ByteArray)
$IMM_Base64string=[system.convert]::FromBase64String($IMM_Base64)
$IMM_Hex = -join ($IMM_Base64string | %{$_.tostring("X").padleft(2,"0")})
Write-Host "ImmutableID for user $ADUserName ": -ForegroundColor Yellow
Write-Host ""
Write-Host "Base64:" -ForegroundColor Yellow
Write-host "$IMM_Base64"
Write-Host "Hex:" -ForegroundColor Yellow
Write-Host "$IMM_Hex"
#return $IMM_Base64
}
}
Function Search-ImmutableIDUser($Vstup){
Import-Module activedirectory
$String=[system.convert]::FromBase64String($Vstup)
$Hex = -join ($String | %{$_.tostring("X").padleft(2,"0")})
$LdapSearch = $Hex -replace '(..)','\$1'
$AdUser = Get-AdUser -LDAPFilter "(ms-ds-consistencyguid=$LdapSearch)"
Write-Host "Hodnoty pro immutableID $Vstup : " -ForegroundColor Yellow
Write-Host ""
Write-Host "Hex:" -ForegroundColor Yellow
Write-Host $Hex
Write-Host "Hex pro LDAP:" -ForegroundColor Yellow
Write-Host $LdapSearch
Write-Host "UPN:" -ForegroundColor Yellow
Write-Host $AdUser.UserPrincipalName
Write-Host "DN:" -ForegroundColor Yellow
return $AdUser.DistinguishedName
}
Sdílej v médiích