Comprendre Microsoft Entra Connect 1.4.xx.x et la disparition de l’appareil
Avec l’implémentation de la version 1.4.xx.x de Microsoft Entra Connect, les clients peuvent voir certains ou tous leurs appareils Windows disparaître de l’ID Microsoft Entra. Cela n’est pas une cause de préoccupation, car ces identités d’appareil ne sont pas utilisées par l’ID Microsoft Entra pendant l’autorisation d’accès conditionnel. Cette modification ne supprime aucun appareil Windows correctement inscrit auprès de l’ID Microsoft Entra pour la jonction hybride Microsoft Entra.
Si vous voyez la suppression d’objets d’appareil dans Microsoft Entra ID dépassant le seuil de suppression d’exportation, autorisez les suppressions à parcourir. Guide pratique pour autoriser le déroulement des suppressions quand elles dépassent le seuil de suppression
Background
Les appareils Windows inscrits en tant que joints hybrides Microsoft Entra sont représentés dans l’ID Microsoft Entra en tant qu’objets d’appareil et peuvent être utilisés pour l’accès conditionnel. Les appareils Windows 10 sont synchronisés avec le cloud via Microsoft Entra Connect, tandis que les appareils Windows de bas niveau sont inscrits directement à l’aide de services de fédération Active Directory (AD FS) (AD FS) ou de l’authentification unique transparente.
Appareils Windows 10
Seuls les appareils Windows 10 avec une valeur d’attribut userCertificate spécifique configurée par la jointure hybride Microsoft Entra doivent être synchronisés avec le cloud par Microsoft Entra Connect. Dans les versions précédentes de Microsoft Entra Connect, cette exigence n’a pas été rigoureusement appliquée et les objets d’appareil inutiles ont été ajoutés à l’ID Microsoft Entra. Ces appareils dans l’ID Microsoft Entra restent toujours dans l’état « en attente », car ces appareils n’étaient pas destinés à être inscrits auprès de l’ID Microsoft Entra.
Cette version de Microsoft Entra Connect synchronise uniquement les appareils Windows 10 correctement configurés pour être joints hybrides à Microsoft Entra. Les objets d’appareil Windows 10 sans microsoft Entra join spécifiques userCertificate seront supprimés de l’ID Microsoft Entra.
Appareils Windows de bas niveau
Microsoft Entra Connect ne doit jamais synchroniser les appareils Windows de bas niveau. Tous les appareils de l’ID Microsoft Entra précédemment synchronisés de manière incorrecte seront supprimés de l’ID Microsoft Entra. Si Microsoft Entra Connect tente de supprimer des appareils Windows de bas niveau, l’appareil n’est pas celui qui a été créé par Microsoft Workplace Join pour les ordinateurs non Windows 10 MSI, et il ne peut pas être consommé par une autre fonctionnalité Microsoft Entra.
Certains clients peuvent avoir besoin de revoir comment : planifier votre implémentation de jointure hybride Microsoft Entra pour inscrire correctement leurs appareils Windows et s’assurer que ces appareils peuvent participer à l’accès conditionnel basé sur les appareils.
Comment vérifier quels appareils sont supprimés avec cette mise à jour ?
Pour vérifier quels appareils sont supprimés, utilisez le script PowerShell dans le script de rapport de certificat PowerShell.
Ce script génère un rapport sur les certificats stockés dans des objets d’ordinateur Active Directory, et spécifiquement des certificats émis par la fonctionnalité de jointure hybride Microsoft Entra.
Le script vérifie également les certificats présents dans la propriété UserCertificate d’un objet Computer dans AD. Pour chaque certificat non expiré présent, le script valide si le certificat a été émis pour la fonctionnalité de jointure hybride Microsoft Entra ; par exemple, Subject Name matches CN={ObjectGUID}
.
Avant cette mise à jour, Microsoft Entra Connect se synchronise avec Microsoft Entra any Computer qui contenait au moins un certificat valide. À compter de Microsoft Entra Connect version 1.4, le moteur de synchronisation identifie les certificats de jointure hybride Microsoft Entra et utilise le filtre cloudfilter pour empêcher la synchronisation de l’objet ordinateur avec l’ID Microsoft Entra, sauf s’il existe un certificat de jointure hybride Microsoft Entra valide.
Les appareils Microsoft Entra précédemment synchronisés avec AD, mais qui n’ont pas de certificat de jointure hybride Microsoft Entra valide, seront supprimés par le moteur de synchronisation à l’aide du filtre CloudFiltered=TRUE
.
Script de rapport de certificat PowerShell
<#
Filename: Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1.
DISCLAIMER:
Copyright (c) Microsoft Corporation. All rights reserved. This script is made available to you without any express, implied or statutory warranty, not even the implied warranty of merchantability or fitness for a particular purpose, or the warranty of title or non-infringement. The entire risk of the use or the results from the use of this script remains with you.
.Synopsis
This script generates a report about certificates stored in Active Directory Computer objects, specifically,
certificates issued by the Microsoft Entra hybrid join feature.
.DESCRIPTION
It checks the certificates present in the UserCertificate property of a Computer object in AD and, for each
non-expired certificate present, validates if the certificate was issued for the Microsoft Entra hybrid join feature
(i.e. Subject Name matches CN={ObjectGUID}).
Before, Microsoft Entra Connect would synchronize to Microsoft Entra ID any Computer that contained at least one valid
certificate but starting on Microsoft Entra Connect version 1.4, the sync engine can identify Hybrid
Microsoft Entra join certificates and will 'cloudfilter' the computer object from synchronizing to Microsoft Entra ID unless
there's a valid Microsoft Entra hybrid join certificate.
Microsoft Entra Device objects that were already synchronized to AD but do not have a valid Microsoft Entra hybrid join
certificate will be deleted (CloudFiltered=TRUE) by the sync engine.
.EXAMPLE
.\Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1 -DN 'CN=Computer1,OU=SYNC,DC=Fabrikam,DC=com'
.EXAMPLE
.\Export-ADSyncToolsHybridAzureADjoinCertificateReport.ps1 -OU 'OU=SYNC,DC=Fabrikam,DC=com' -Filename "MyHybridAzureADjoinReport.csv" -Verbose
#>
[CmdletBinding()]
Param
(
# Computer DistinguishedName
[Parameter(ParameterSetName='SingleObject',
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[String]
$DN,
# AD OrganizationalUnit
[Parameter(ParameterSetName='MultipleObjects',
Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[String]
$OU,
# Output CSV filename (optional)
[Parameter(Mandatory=$false,
ValueFromPipelineByPropertyName=$false,
Position=1)]
[String]
$Filename
)
# Generate Output filename if not provided
If ($Filename -eq "")
{
$Filename = [string] "$([string] $(Get-Date -Format yyyyMMddHHmmss))_ADSyncAADHybridJoinCertificateReport.csv"
}
Write-Verbose "Output filename: '$Filename'"
# Read AD object(s)
If ($PSCmdlet.ParameterSetName -eq 'SingleObject')
{
$directoryObjs = @(Get-ADObject $DN -Properties UserCertificate)
Write-Verbose "Starting report for a single object '$DN'"
}
Else
{
$directoryObjs = Get-ADObject -Filter { ObjectClass -like 'computer' } -SearchBase $OU -Properties UserCertificate
Write-Verbose "Starting report for $($directoryObjs.Count) computer objects in OU '$OU'"
}
Write-Host "Processing $($directoryObjs.Count) directory object(s). Please wait..."
# Check Certificates on each AD Object
$results = @()
ForEach ($obj in $directoryObjs)
{
# Read UserCertificate multi-value property
$objDN = [string] $obj.DistinguishedName
$objectGuid = [string] ($obj.ObjectGUID).Guid
$userCertificateList = @($obj.UserCertificate)
$validEntries = @()
$totalEntriesCount = $userCertificateList.Count
Write-verbose "'$objDN' ObjectGUID: $objectGuid"
Write-verbose "'$objDN' has $totalEntriesCount entries in UserCertificate property."
If ($totalEntriesCount -eq 0)
{
Write-verbose "'$objDN' has no Certificates - Skipped."
Continue
}
# Check each UserCertificate entry and build array of valid certs
ForEach($entry in $userCertificateList)
{
Try
{
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2] $entry
}
Catch
{
Write-verbose "'$objDN' has an invalid Certificate!"
Continue
}
Write-verbose "'$objDN' has a Certificate with Subject: $($cert.Subject); Thumbprint:$($cert.Thumbprint)."
$validEntries += $cert
}
$validEntriesCount = $validEntries.Count
Write-verbose "'$objDN' has a total of $validEntriesCount certificates (shown above)."
# Get non-expired Certs (Valid Certificates)
$validCerts = @($validEntries | Where-Object {$_.NotAfter -ge (Get-Date)})
$validCertsCount = $validCerts.Count
Write-verbose "'$objDN' has $validCertsCount valid certificates (not-expired)."
# Check for Microsoft Entra hybrid join Certificates
$hybridJoinCerts = @()
$hybridJoinCertsThumbprints = [string] "|"
ForEach ($cert in $validCerts)
{
$certSubjectName = $cert.Subject
If ($certSubjectName.StartsWith($("CN=$objectGuid")) -or $certSubjectName.StartsWith($("CN={$objectGuid}")))
{
$hybridJoinCerts += $cert
$hybridJoinCertsThumbprints += [string] $($cert.Thumbprint) + '|'
}
}
$hybridJoinCertsCount = $hybridJoinCerts.Count
if ($hybridJoinCertsCount -gt 0)
{
$cloudFiltered = 'FALSE'
Write-verbose "'$objDN' has $hybridJoinCertsCount Microsoft Entra hybrid join Certificates with Thumbprints: $hybridJoinCertsThumbprints (cloudFiltered=FALSE)"
}
Else
{
$cloudFiltered = 'TRUE'
Write-verbose "'$objDN' has no Microsoft Entra hybrid join Certificates (cloudFiltered=TRUE)."
}
# Save results
$r = "" | Select ObjectDN, ObjectGUID, TotalEntriesCount, CertsCount, ValidCertsCount, HybridJoinCertsCount, CloudFiltered
$r.ObjectDN = $objDN
$r.ObjectGUID = $objectGuid
$r.TotalEntriesCount = $totalEntriesCount
$r.CertsCount = $validEntriesCount
$r.ValidCertsCount = $validCertsCount
$r.HybridJoinCertsCount = $hybridJoinCertsCount
$r.CloudFiltered = $cloudFiltered
$results += $r
}
# Export results to CSV
Try
{
$results | Export-Csv $Filename -NoTypeInformation -Delimiter ';'
Write-Host "Exported Hybrid Microsoft Entra Domain Join Certificate Report to '$Filename'.`n"
}
Catch
{
Throw "There was an error saving the file '$Filename': $($_.Exception.Message)"
}
Étapes suivantes
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.