Descripción de Microsoft Entra Connect 1.4.xx.x y la desaparición del dispositivo

Con la implementación de la versión 1.4.xx.x de Microsoft Entra Connect, es posible que los clientes vean que algunos o todos sus dispositivos Windows desaparecen de Microsoft Entra ID. Esto no es motivo de preocupación, ya que estas identidades de dispositivo no se usan en Microsoft Entra ID durante la autorización de acceso condicional. Este cambio no eliminará los dispositivos Windows que se registraron correctamente con Microsoft Entra ID para Microsoft Entra unión híbrida.

Si ve la eliminación de objetos de dispositivo en Microsoft Entra ID superar el umbral de eliminación de exportación, permita que las eliminaciones se realicen. Procedimiento para permitir que fluyan las eliminaciones cuando superan el umbral de eliminación

Información previa

Los dispositivos Windows registrados como Microsoft Entra unidos a híbridos se representan en Microsoft Entra ID como objetos de dispositivo y se pueden usar para el acceso condicional. Windows 10 dispositivos se sincronizan con la nube a través de Microsoft Entra Connect, mientras que los dispositivos Windows de nivel inferior se registran directamente mediante Servicios de federación de Active Directory (AD FS) (AD FS) o inicio de sesión único sin problemas.

Dispositivos Windows 10

Microsoft Entra Connect solo debe sincronizar Windows 10 dispositivos con un valor de atributo userCertificate específico configurado por Microsoft Entra unión híbrida a la nube. En versiones anteriores de Microsoft Entra Connect, este requisito no se aplicaba rigurosamente y se agregaron objetos de dispositivo innecesarios a Microsoft Entra ID. Estos dispositivos en Microsoft Entra ID siempre permanecen en el estado "pendiente", ya que estos dispositivos no estaban diseñados para registrarse con Microsoft Entra ID.

Esta versión de Microsoft Entra Connect solo sincronizará Windows 10 dispositivos configurados correctamente para Microsoft Entra unidos a híbridos. Windows 10 objetos de dispositivo sin la Microsoft Entra unirse a un usuario específicoCertificate se quitarán de Microsoft Entra ID.

Down-Level dispositivos Windows

Microsoft Entra Connect nunca debe sincronizar dispositivos Windows de nivel inferior. Los dispositivos de Microsoft Entra ID sincronizados previamente incorrectamente se eliminarán de Microsoft Entra ID. Si Microsoft Entra Connect intenta eliminar dispositivos Windows de nivel inferior, el dispositivo no es el que creó Microsoft Workplace Join para msi de equipos que no son Windows 10 y no puede ser consumido por ninguna otra característica de Microsoft Entra.

Es posible que algunos clientes deban volver a consultar How To: Plan your Microsoft Entra hybrid join implementation to register their Windows devices correctly and ensure that that those devices can participate in device-based Conditional Access.

¿Cómo puedo comprobar qué dispositivos se eliminan con esta actualización?

Para comprobar qué dispositivos se eliminan, use el script de PowerShell en el script de informe de certificados de PowerShell.

Este script genera un informe sobre los certificados almacenados en objetos Computer de Active Directory y, en concreto, los certificados emitidos por la característica de combinación híbrida Microsoft Entra.

El script también comprueba los certificados presentes en la propiedad UserCertificate de un objeto Computer en AD. Para cada certificado no expirado presente, el script valida si el certificado se emitió o no para la característica de combinación híbrida Microsoft Entra; por ejemplo, Subject Name matches CN={ObjectGUID}.

Antes de esta actualización, Microsoft Entra Connect se sincronizaría para Microsoft Entra cualquier equipo que contenga al menos un certificado válido. A partir de Microsoft Entra Connect versión 1.4, el motor de sincronización identifica Microsoft Entra certificados de combinación híbrida y usará el filtro cloudfilter para evitar que el objeto de equipo se sincronice con Microsoft Entra ID a menos que haya un Microsoft Entra válido certificado de unión híbrida.

Microsoft Entra dispositivos que se sincronizaron anteriormente con AD, pero que no tienen un certificado de unión híbrida Microsoft Entra válido, el motor de sincronización eliminará mediante el filtro CloudFiltered=TRUE.

Script de informe de certificado de 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)"
   }

Pasos siguientes

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.