Поделиться через


Общие сведения о Microsoft Entra Connect 1.4.xx.x и исчезновение устройства

С реализацией версии 1.4.xx.x Microsoft Entra Connect клиенты могут увидеть, что некоторые или все их устройства с Windows исчезают из Microsoft Entra ID. Это не повод для беспокойства, так как эти удостоверения устройств не используются Microsoft Entra ID во время авторизации условного доступа. Это изменение не приведет к удалению устройств Windows, правильно зарегистрированных в Microsoft Entra ID для Microsoft Entra гибридного присоединения.

Если вы видите, что удаление объектов устройств в Microsoft Entra ID превышает пороговое значение экспорта удаления, разрешите удаление пройти. Практическое руководство. Разрешение потокового удаления при превышении порогового значения удаления

Общие сведения

Устройства Windows, зарегистрированные как Microsoft Entra гибридное присоединение, представлены в Microsoft Entra ID как объекты устройств, и их можно использовать для условного доступа. Windows 10 устройства синхронизируются с облаком через Microsoft Entra Connect, а устройства Windows нижнего уровня регистрируются напрямую с помощью службы федерации Active Directory (AD FS) (AD FS) или простого единого входа.

устройства с Windows 10

Только Windows 10 устройства с определенным значением атрибута userCertificate, настроенным Microsoft Entra гибридного присоединения, должны быть синхронизированы с облаком с помощью Microsoft Entra Connect. В предыдущих версиях Microsoft Entra Connect это требование не применялось строго, а ненужные объекты устройств добавлялись в Microsoft Entra ID. Такие устройства в Microsoft Entra ID всегда находились в состоянии ожидания, так как эти устройства не должны были быть зарегистрированы в Microsoft Entra ID.

Эта версия Microsoft Entra Connect синхронизирует только Windows 10 устройствами, которые правильно настроены для Microsoft Entra гибридного присоединения. Windows 10 объекты устройств без Microsoft Entra присоединения конкретного userCertificate будут удалены из Microsoft Entra ID.

Down-Level устройствах Windows

Microsoft Entra Connect никогда не следует синхронизировать устройства Windows нижнего уровня. Все устройства в Microsoft Entra ID, ранее синхронизированные неправильно, будут удалены из Microsoft Entra ID. Если Microsoft Entra Connect пытается удалить устройства Windows нижнего уровня, это устройство не является тем, которое было создано приложением Microsoft Workplace Join для msi компьютеров, не Windows 10, и оно не может быть использовано другими Microsoft Entra функцией.

Некоторым клиентам может потребоваться вернуться к руководству. Планирование реализации гибридного соединения Microsoft Entra, чтобы правильно зарегистрировать свои устройства Windows и убедиться, что эти устройства могут участвовать в условном доступе на основе устройств.

Как проверить, какие устройства удалены с помощью этого обновления?

Чтобы проверить, какие устройства удалены, используйте скрипт PowerShell в скрипте отчета о сертификатах PowerShell.

Этот скрипт создает отчет о сертификатах, хранящихся в объектах-компьютерах Active Directory, и, в частности, сертификатах, выданных функцией гибридного соединения Microsoft Entra.

Скрипт также проверяет сертификаты, присутствующих в свойстве UserCertificate объекта Computer в AD. Для каждого сертификата, не истекшего срока действия, скрипт проверяет, был ли сертификат выдан для функции гибридного присоединения Microsoft Entra, например Subject Name matches CN={ObjectGUID}.

Перед этим обновлением Microsoft Entra Connect синхронизируется с Microsoft Entra компьютером, содержащим по крайней мере один действительный сертификат. Начиная с Microsoft Entra Connect версии 1.4, модуль синхронизации определяет Microsoft Entra сертификатов гибридного присоединения и будет использовать фильтр cloudfilter, чтобы предотвратить синхронизацию объекта-компьютера с Microsoft Entra ID, если нет допустимой Microsoft Entra сертификат гибридного присоединения.

Microsoft Entra устройства, которые ранее были синхронизированы с AD, но не имеют допустимого сертификата Microsoft Entra гибридного присоединения, будут удалены подсистемой синхронизации с помощью фильтра CloudFiltered=TRUE.

Скрипт отчета о сертификате 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)"
   }

Дальнейшие действия

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.