Informazioni su Microsoft Entra Connect 1.4.xx.x e sulla scomparsa del dispositivo

Con l'implementazione della versione 1.4.xx.x di Microsoft Entra Connect, i clienti potrebbero vedere alcuni o tutti i dispositivi Windows sparire da Microsoft Entra ID. Questo non è un motivo di preoccupazione, perché queste identità del dispositivo non vengono usate da Microsoft Entra ID durante l'autorizzazione di accesso condizionale. Questa modifica non eliminerà i dispositivi Windows registrati correttamente con Microsoft Entra ID per Microsoft Entra join ibrido.

Se viene visualizzata l'eliminazione di oggetti dispositivo in Microsoft Entra ID che supera la soglia di eliminazione dell'esportazione, consentire l'eliminazione. Procedura: consentire il flusso delle eliminazioni quando superano la soglia di eliminazione

Background

I dispositivi Windows registrati come Microsoft Entra aggiunti ibridi vengono rappresentati in Microsoft Entra ID come oggetti dispositivo e possono essere usati per l'accesso condizionale. Windows 10 dispositivi vengono sincronizzati nel cloud tramite Microsoft Entra Connect, mentre i dispositivi Windows di livello inferiore vengono registrati direttamente tramite Active Directory Federation Services (AD FS) o Single Sign-On facile.

Dispositivi Windows 10

Solo Windows 10 dispositivi con un valore di attributo userCertificate specifico configurato da Microsoft Entra join ibrido deve essere sincronizzato nel cloud da Microsoft Entra Connect. Nelle versioni precedenti di Microsoft Entra Connect questo requisito non è stato applicato in modo rigoroso e sono stati aggiunti oggetti dispositivo non necessari a Microsoft Entra ID. Tali dispositivi in Microsoft Entra ID sempre rimasti nello stato "in sospeso", in quanto questi dispositivi non dovevano essere registrati con Microsoft Entra ID.

Questa versione di Microsoft Entra Connect consente di sincronizzare solo Windows 10 dispositivi configurati correttamente per essere Microsoft Entra aggiunti all'ambiente ibrido. Windows 10 oggetti dispositivo senza il Microsoft Entra join userCertificate specifico verrà rimosso da Microsoft Entra ID.

Down-Level dispositivi Windows

Microsoft Entra Connect non deve mai sincronizzare i dispositivi Windows di livello inferiore. Tutti i dispositivi in Microsoft Entra ID sincronizzati in precedenza in modo non corretto verranno eliminati da Microsoft Entra ID. Se Microsoft Entra Connect tenta di eliminare i dispositivi Windows di livello inferiore, il dispositivo non è quello creato da Microsoft Workplace Join per computer non Windows 10 MSI e non può essere utilizzato da altre funzionalità Microsoft Entra.

Alcuni clienti potrebbero dover rivedere le procedure: Pianificare l'implementazione di join ibrido Microsoft Entra per registrare correttamente i dispositivi Windows e assicurarsi che tali dispositivi possano partecipare all'accesso condizionale basato su dispositivo.

Come è possibile verificare quali dispositivi vengono eliminati con questo aggiornamento?

Per verificare quali dispositivi vengono eliminati, usare lo script di PowerShell nello script del report del certificato di PowerShell.

Questo script genera un report sui certificati archiviati negli oggetti computer di Active Directory e in particolare sui certificati emessi dalla funzionalità di join ibrido Microsoft Entra.

Lo script controlla anche i certificati presenti nella proprietà UserCertificate di un oggetto Computer in ACTIVE Directory. Per ogni certificato non scaduto presente, lo script verifica se il certificato è stato emesso o meno per la funzionalità di join ibrido Microsoft Entra, Subject Name matches CN={ObjectGUID}ad esempio .

Prima di questo aggiornamento, Microsoft Entra Connect si sincronizzava con Microsoft Entra qualsiasi computer contenente almeno un certificato valido. A partire da Microsoft Entra Connect versione 1.4, il motore di sincronizzazione identifica Microsoft Entra certificati di join ibridi e usa il filtro cloudfilter per impedire la sincronizzazione dell'oggetto computer con Microsoft Entra ID a meno che non sia presente un Microsoft Entra valido certificato di join ibrido.

Microsoft Entra dispositivi precedentemente sincronizzati con Active Directory, ma che non dispongono di un certificato di join ibrido Microsoft Entra valido, verranno eliminati dal motore di sincronizzazione usando il filtro CloudFiltered=TRUE.

Script del report del certificato di 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)"
   }

Operazioni successive

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.