Omówienie zniknięcia programu Microsoft Entra Connect 1.4.xx.x i urządzenia
W przypadku implementacji wersji 1.4.xx.x programu Microsoft Entra Connect klienci mogą zobaczyć, że niektóre lub wszystkie urządzenia z systemem Windows znikną z identyfikatora Microsoft Entra ID. Nie jest to przyczyna problemu, ponieważ te tożsamości urządzeń nie są używane przez identyfikator firmy Microsoft Entra podczas autoryzacji dostępu warunkowego. Ta zmiana nie spowoduje usunięcia żadnych urządzeń z systemem Windows, które zostały poprawnie zarejestrowane w usłudze Microsoft Entra ID dla przyłączania hybrydowego firmy Microsoft Entra.
Jeśli zobaczysz usunięcie obiektów urządzeń w identyfikatorze Entra firmy Microsoft przekraczającym próg usuwania eksportu, zezwól na przejście usunięcia. Instrukcje: zezwalanie na przepływ usuwania po przekroczeniu progu usunięcia
Tło
Urządzenia z systemem Windows zarejestrowane jako przyłączenie hybrydowe firmy Microsoft Entra są reprezentowane w identyfikatorze Entra firmy Microsoft jako obiektach urządzeń i mogą być używane do dostępu warunkowego. Urządzenia z systemem Windows 10 są synchronizowane z chmurą za pośrednictwem programu Microsoft Entra Connect, podczas gdy urządzenia z systemem Windows na poziomie w dół są rejestrowane bezpośrednio przy użyciu usług Active Directory Federation Services (AD FS) lub bezproblemowego logowania jednokrotnego.
Urządzenia z systemem Windows 10
Tylko urządzenia z systemem Windows 10 z określoną wartością atrybutu userCertificate skonfigurowaną przez przyłączenie hybrydowe firmy Microsoft Entra powinny być synchronizowane z chmurą przez firmę Microsoft Entra Connect. W poprzednich wersjach programu Microsoft Entra Connect to wymaganie nie było rygorystycznie wymuszane, a niepotrzebne obiekty urządzeń zostały dodane do identyfikatora Entra firmy Microsoft. Takie urządzenia w identyfikatorze Entra firmy Microsoft zawsze pozostają w stanie "oczekiwanie", ponieważ te urządzenia nie miały być zarejestrowane w identyfikatorze Microsoft Entra.
Ta wersja programu Microsoft Entra Connect będzie synchronizować tylko urządzenia z systemem Windows 10, które są poprawnie skonfigurowane do dołączenia hybrydowego firmy Microsoft Entra. Obiekty urządzeń z systemem Windows 10 bez dołączenia do firmy Microsoft określonego użytkownikaCertificate zostaną usunięte z identyfikatora Entra firmy Microsoft.
Urządzenia z systemem Windows na poziomie podrzędnym
Program Microsoft Entra Connect nigdy nie powinien synchronizować urządzeń z systemem Windows na poziomie podrzędnym. Wszystkie urządzenia w identyfikatorze Entra firmy Microsoft wcześniej zsynchronizowane nieprawidłowo zostaną usunięte z identyfikatora Entra firmy Microsoft. Jeśli firma Microsoft Entra Connect podejmie próbę usunięcia urządzeń z systemem Windows na poziomie podrzędnym, urządzenie nie jest tym, które zostało utworzone przez program Microsoft Workplace Join dla komputerów msi innych niż Windows 10 i nie może być używane przez inną funkcję firmy Microsoft Entra.
Niektórzy klienci mogą wymagać ponownego przejrzenia instrukcji: zaplanuj implementację dołączania hybrydowego firmy Microsoft Entra, aby poprawnie zarejestrować swoje urządzenia z systemem Windows i upewnić się, że te urządzenia mogą uczestniczyć w dostępie warunkowym opartym na urządzeniach.
Jak sprawdzić, które urządzenia zostały usunięte z tej aktualizacji?
Aby sprawdzić, które urządzenia zostały usunięte, użyj skryptu programu PowerShell w skryscie raportu certyfikatu programu PowerShell.
Ten skrypt generuje raport dotyczący certyfikatów przechowywanych w obiektach komputera usługi Active Directory, a w szczególności certyfikatów wystawionych przez funkcję dołączania hybrydowego firmy Microsoft Entra.
Skrypt sprawdza również certyfikaty znajdujące się we właściwości UserCertificate obiektu Computer w usłudze AD. Dla każdego certyfikatu, który nie wygasł, skrypt sprawdza, czy certyfikat został wystawiony dla funkcji dołączania hybrydowego firmy Microsoft Entra; na przykład Subject Name matches CN={ObjectGUID}
.
Przed tą aktualizacją program Microsoft Entra Connect będzie synchronizował się z firmą Microsoft Entra dowolnym komputerem, który zawierał co najmniej jeden prawidłowy certyfikat. Począwszy od programu Microsoft Entra Connect w wersji 1.4 aparat synchronizacji identyfikuje certyfikaty przyłączania hybrydowego firmy Microsoft Entra i użyje filtru cloudfilter , aby zapobiec synchronizowaniu obiektu komputera z identyfikatorem Microsoft Entra ID, chyba że istnieje prawidłowy certyfikat dołączania hybrydowego firmy Microsoft Entra.
Urządzenia firmy Microsoft Entra, które zostały wcześniej zsynchronizowane z usługą AD, ale nie mają prawidłowego certyfikatu przyłączania hybrydowego firmy Microsoft Entra, zostaną usunięte przez aparat synchronizacji przy użyciu filtru CloudFiltered=TRUE
.
Skrypt raportu certyfikatu programu 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)"
}
Następne kroki
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.