Informacje o Microsoft Entra Connect 1.4.xx.x i zniknięciu urządzenia

Dzięki 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 Tożsamość Microsoft Entra. Nie jest to powód do niepokoju, ponieważ te tożsamości urządzeń nie są używane przez Tożsamość 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 Tożsamość Microsoft Entra w celu Microsoft Entra sprzężenia hybrydowego.

Jeśli widzisz usunięcie obiektów urządzenia w Tożsamość Microsoft Entra przekroczenie progu usuwania eksportu, zezwól na usunięcie. Instrukcje: zezwalanie na przepływ usuwania po przekroczeniu progu usuwania

Tło

Urządzenia z systemem Windows zarejestrowane jako przyłączone hybrydowo Microsoft Entra są reprezentowane w Tożsamość Microsoft Entra jako obiekty urządzeń i mogą być używane na potrzeby dostępu warunkowego. Windows 10 urządzenia są synchronizowane z chmurą za pośrednictwem programu Microsoft Entra Connect, natomiast urządzenia z systemem Windows niższego poziomu są rejestrowane bezpośrednio przy użyciu Active Directory Federation Services (AD FS) lub bezproblemowego logowania jednokrotnego.

urządzenia Windows 10

Tylko urządzenia Windows 10 z określoną wartością atrybutu userCertificate skonfigurowaną przez Microsoft Entra sprzężenie hybrydowe powinny być synchronizowane z chmurą przez program Microsoft Entra Connect. W poprzednich wersjach programu Microsoft Entra Connect to wymaganie nie było rygorystycznie wymuszane i do Tożsamość Microsoft Entra dodano niepotrzebne obiekty urządzenia. Takie urządzenia w Tożsamość Microsoft Entra zawsze pozostawały w stanie "oczekującym", ponieważ te urządzenia nie miały być zarejestrowane w Tożsamość Microsoft Entra.

Ta wersja programu Microsoft Entra Connect zsynchronizuje tylko urządzenia Windows 10, które zostały prawidłowo skonfigurowane do Microsoft Entra dołączenia hybrydowego. Windows 10 obiekty urządzeń bez Microsoft Entra dołączania określonego użytkownikaCertyfikat zostanie usunięty z Tożsamość Microsoft Entra.

Down-Level urządzenia z systemem Windows

Microsoft Entra Connect nigdy nie należy synchronizować urządzeń z systemem Windows niższego poziomu. Wszystkie urządzenia w Tożsamość Microsoft Entra wcześniej niepoprawnie zsynchronizowane zostaną usunięte z Tożsamość Microsoft Entra. Jeśli Microsoft Entra Connect podejmie próbę usunięcia urządzeń z systemem Windows niższego poziomu, urządzenie nie jest tym, które zostało utworzone przez program Microsoft Workplace Join dla komputerów innych niż Windows 10 msi i nie może być używane przez żadną inną funkcję Microsoft Entra.

Niektórzy klienci mogą potrzebować ponownego zapoznania się z instrukcjami: zaplanuj implementację przyłączania hybrydowego 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 są usuwane za pomocą tej aktualizacji?

Aby sprawdzić, które urządzenia zostaną usunięte, użyj skryptu programu PowerShell w skryptze 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ę przyłączania hybrydowego Microsoft Entra.

Skrypt sprawdza również certyfikaty obecne we właściwości UserCertificate obiektu Komputer w usłudze AD. Dla każdego nieistniejącego certyfikatu skrypt sprawdza, czy certyfikat został wystawiony dla funkcji przyłączania hybrydowego Microsoft Entra, na przykład Subject Name matches CN={ObjectGUID}.

Przed tą aktualizacją program Microsoft Entra Connect będzie synchronizowany z Microsoft Entra dowolnym komputerem zawierającym co najmniej jeden prawidłowy certyfikat. Począwszy od programu Microsoft Entra Connect w wersji 1.4 aparat synchronizacji identyfikuje Microsoft Entra certyfikatów sprzężenia hybrydowego i użyje filtru cloudfilter, aby uniemożliwić synchronizowanie obiektu komputera z Tożsamość Microsoft Entra chyba że istnieje prawidłowa Microsoft Entra certyfikat sprzężenia hybrydowego.

Microsoft Entra urządzenia, które zostały wcześniej zsynchronizowane z usługą AD, ale nie mają prawidłowego certyfikatu sprzężenia hybrydowego 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 platformy Azure.