Hledá se ms-DS-ConsistencyGuid

Blog

 
 Jan Žák

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.

img

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ě:

img

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:

imgimg

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.

img

Obrázek 4 – Převod objectGUID na immutableID

Search-ImmutableIDUser se naopak pokusí vyhledat uživatele v AD podle zadaného immutableID.

img

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

Kontakt

Nenašli jste, co hledáte? Pošlete nám zprávu a zůstaneme s vámi ve spojení.

* Vyžadované pole

Osobní data použijeme pouze pro vypracování odpovědi na dotaz. Pravidla zpracování osobních údajů

map us
map eu