AzureAD Connect Health

Auf der Seite Azure Connect Health ADSync habe ich schon die Funktion in Verbindung mit ADSync beschrieben. Azure AD Connect Health kann aber auch lokale Domain Controller überwachen. Wenn Sie die passende Lizenz haben (Also Azure AD P1 alleine oder als Teil von EMS E3/E5, Microsoft 365 E3/E5 o.a.), dann sollten Sie sich die Funktion zumindest einmal anschauen.

Was wird wie überwacht?

Azure AD Connect Health besteht aus einem kleinen Agenten, den Sie auf ausgewählten OnPremeises-Servern installieren können, wenn eine der folgenden Rollen installiert ist:

  • ADSync
    Die Komponente zur Synchronisierung der Identitäten zwischen dem lokalen Active Directory und dem Office 365 Tenant
  • ADFS
    Die optional Komponente zur Anmeldung über lokale ADFS-Dienste
  • AD DS
    Dieser Agent überwacht für Sie ihr lokales Active Directory wenn Sie ihn auf ihrem Domain Controllern installieren

Leider gibt es keinen AzureAD Connect Health Agent für SMB-Server, Exchange Server, SQL-Server, SharePoint-Server o.ä. Wobei diese Dienste für die Bereitstellung on Funktionen in der Cloud ja nicht wirklich wichtig sind.

Dazu ist natürlich die Installation des "Azure AD Connect Health"-Agent auf diesen Server (ADSync, ADFS, Domain Controller) erforderlich.

https://aka.ms/aadchaddsagent
https://aka.ms/aadconnecthealth

Der Fokus dieser Seite liegt auf der Überwachung der ADSync-Komponente.

Installation

Für die Installation müssen Sie sich den richtigen Agenten je Service herunterladen.

ADSync https://go.microsoft.com/fwlink/?linkid=615771
ADFS https://go.microsoft.com/fwlink/?LinkID=518973
ADDC https://go.microsoft.com/fwlink/?LinkID=820540 oder hhttps://aka.ms/aadchaddsagent

Ich beschreibe hier die Installation des Agenten für AD DS. Die Installation für ADSync finden Sie auf AzureAD Connect Health Sync und der Agent für ADFS ist sehr ähnlich.

Der 12 Megabyte Download ist schnell erfolgt und die Installation in weniger als einer Minute erfolgt. Sie müssen nur halbwegs aktuelle Systeme haben und natürlich in der Firewall zwei Ports zu Office 365 öffnen, mit denen der Agent kommuniziert.

Nach einem Druck auf "Installieren" ist in kurzer Zeit auch schon alles installiert.

Aber noch passiert nichts, denn die Konfiguration steht ja noch aus. Solange sind die Dienste auch "deaktiviert"

Beim ADFS-Service sind es sogar drei Dienste.

Das Setup hinterlässt leider im TEMP-Verzeichnis des angemeldeten Benutzers entsprechende Protokolldateien.

Das erlaubt eine einfache Analyse aber vielleicht wäre "ProgramData" besser, damit die Logs erhalten bleiben.

Konfiguration

Die Einrichtung ist ein PowerShell-Script, welches nur nach den Anmeldedaten eines Office 365 Global Administratoren fragt und zumindest beim ADDS-Agent ein Zertifikat für den Agent aus der Cloud anfordert, mit der er sich später an der Cloud authentifiziert.

Das Setup bindet dazu das AzureADConnectHealth-Modul ein, um dann ein "Register-AzureADConnectHealthADFSAgent" aufzurufen. Die Installation ist in einem PowerShell-Fenster sichtbar: (Zeilenumbrüche addiert)

Executing Elevated PowerShell Command: Register-AzureADConnectHealthADDSAgent
2020-07-20 22:25:13.744 ecurityProtocol set to Tls, Tls11, Tls12
2020-07-20 22:25:13.759 Current Monitoring Level in Registry is not set
2020-07-20 22:25:13.759 Updated Monitoring Level in Registry to Full
2020-07-20 22:25:13.759 ProductName: Microsoft Azure AD Connect Health agent for AD DS, FileVersion: 3.1.77.0, 
                              Current UTC Time: 2020-07-20 22:25:13Z
2020-07-20 22:25:13.775 AHealthServiceUri (ARM): https://management.azure.com/providers/Microsoft.ADHybridHealthService/
2020-07-20 22:25:13.775 AdHybridHealthServiceUri: https://adds.aadconnecthealth.azure.com/
2020-07-20 22:25:13.869 AHealthServiceUri (ARM): https://management.azure.com/providers/Microsoft.ADHybridHealthService/
2020-07-20 22:25:13.869 AdHybridHealthServiceUri: https://adds.aadconnecthealth.azure.com/
2020-07-20 22:25:15.322 AHealthServiceApiVersion: 2014-01-01
2020-07-20 22:25:32.073 Detecting AdDomainService roles...
2020-07-20 22:25:32.448 Detected the following role(s) for netatwork.de:
2020-07-20 22:25:32.448         Active Directory Domain Services
2020-07-20 22:25:42.027 Acquiring Monitoring Service certificate using tenant.cert
2020-07-20 22:25:45.855 Successfully acquired and stored Monitoring Service certificate: 
                                             Subject=CN=DC1, CN=<TenantID>, 
                                             OU=Microsoft ADFS Agent, 
                                             Issuer=CN=Microsoft PolicyKeyService Certificate Authority,
                                             Thumbprint=7076857D98B9A8A6213F2E6F543C8E6A1C9E079E
2020-07-20 22:25:45.87 Fetched and stored agent credentials successfully...
2020-07-20 22:25:45.87 Starting agent services...
2020-07-20 22:26:02.841 Started agent services successfully...
2020-07-20 22:26:07.826 Agent registration completed successfully.

Detailed log file created in temporary directory:
C:\Users\admin\AppData\Local\Temp\AdHealthAddsAgentConfiguration.2020-07-21_00-25-13.log

Der Agent läuft als LocalSystem und hat keine Dienstkonten oder Anmeldedaten hinterlegt. Nach der Konfiguration sind die Dienste dann auch auf automatischen Start gestellt.

Es kann sein, dass die Konfiguration fehlt schlägt. Das kann an einer fehlenden Firewall-Freischaltung liegen oder der falschen Eingabe ihrer Office 365 Anmeldedaten oder auch einfach die Installation der falschen Version, z.B. ADDS auf ADFS-Servern. Gehen Sie dann einfach über die "Systemsteuerung - Software" und ändern sie das installierte Produkt:

Der nächste Dialog erlaubt ihnen neben der Deinstallation auch die erneute Konfiguration:

Interessant ist das dadurch aufgerufene Skript. Beim AD DS-Modul wird einen CMD-Datei gestartet:

Hier die gekürzte mit Umbrüchen versehene Version.

@echo off 
setlocal EnableDelayedExpansion
echo "%~f0"
set ModulePath=$env:ProgramW6432\Azure` Ad` Connect` Health` Adds` Agent\PowerShell\AdHealthAdds
set CommandletName=Register-AzureADConnectHealthADDSAgent
set StatusMessage=Executing Elevated PowerShell Command: %CommandletName%
%SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe 
` -Command "&{write-host %StatusMessage%; 
              Start-Process PowerShell 
                  -Verb RunAs  
                  -Argument '-NoExit  
                  -Command &{write-host %StatusMessage%;  
                             import-module %ModulePath%;  
                             %CommandletName%}'  
                            }"
endlocal

Eine CMD-Datei startet eine PowerShell, die eine weitere PowerShell startet, um das Modul zu importieren und das Cmdlet "Register-AzureADConnectHealthADDSAgent" zu starten. Sehr ungewöhnlich.

Bei ADFS-Modul hingegen wird direkt die PowerShell gestartet:

Es sind wohl sehr unterschiedliche Teams, die für die Entwicklung zuständig sind. Das behindert aber nicht die Funktion.

Startpunkt in Azure

Die von den AzureAD Connect Health gesammelten Daten können Sie im AzureAD-Portal einsehen. Sie gehen dazu erst auf den Punkt "Active Directory" und dann auf "Azure AD Connect". Dort finden Sie dann auch den Link zu Azure Active Directory Connect Health. Sie können natürlich auch direkt den Links verwenden

https://portal.azure.com/#blade/Microsoft_Azure_ADHybridHealth/AadHealthMenuBlade/QuickStart

Im Juli 2020 hat das Portal die drei Bereiche links enthalten:

  • Azure Active Directory Connect (Sync)
  • AD FS Services
  • AD DS Services

 

Allerdings sehen Sie diesen Bereich nur mit entsprechenden Berechtigungen.

Berechtigungen

Ich habe natürlich noch weitere Tenants diesbezüglich untersucht und konnte allerdings nicht bei allen Firmen den Status über Connect Health kontrollieren. Schon bei der Übersicht war ein Verbotszeichen zu sehen:

Wenn ich dann die Details anzeigen wollte, wurde eine detaillierte Meldung ausgeliefert:

Mit fehlt also das Recht "Microsoft.ADHybridHealthService/services/read" für den Bereich "/providers/Microsoft.ADHybridHealthService". AzureAD verwaltet die Rechte über Rollen und Role Assignments und Scopes. Das ist das klassische RBAC-Prinzip und entsprechend können Sie auf diesen Bereich Berechtigungen vergeben. "Azure AD Connect Health" ist ja auch einfach eine Ressource im AzureAD und unter folgenden URL anzupassen.

https://portal.azure.com/#blade/Microsoft_Azure_ADHybridHealth/AadHealthMenuBlade/usersandgroup

Also habe ich einem regulären Office 365 Konto ohne weitere privilegierte Berechtigungen an dieser Stelle das "Reader"-Recht gegeben:

Die Bestätigung war rechts oben zu sehen:

Danach konnte ich mit diesem Konto die AzureAD Connect Health-Informationen lesen aber nichts weiter verändern.

Zugriff per API

Anscheinend liefert Azure AD Connect Health ja deutlich mehr Fehler und Details als ADSync selbst. Damit stellt sich dann die Frage, wie ich diese Informationen per PowerShell oder Graph erreichen kann, um sie in ein lokales Monitoring zu integrieren.

Aktuell habe ich noch keinen Weg gefunden, die Informationen aus dem Azure-Portal über Graph o.ä. abzufragen und in eine eigene Überwachungslösung einzubinden

Auch im Azure Feedback-Forum werden solche Fragen gestellt aber die Funktionen sind entweder "geplant" oder es gibt keine Aussage dazu:

Azure Active Directory Connect Health: Monitoring the sync engine
https://channel9.msdn.com/Series/Azure-Active-Directory-Videos-Demos/Azure-Active-Directory-Connect-Health-Monitoring-the-sync-engine 

Auswertung AD DS

Die Ergebnisse der Agenten können Sie im Azure Portal unter der folgenden URL erreichen.

https://portal.azure.com/#blade/icrosoft_Azure_ADHybridHealth/AadHealthMenuBlade/AddsServicesList

Allerdings sollten sie den Agenten etwas Zeit geben. Laut Microsoft kann es mehrere Stunden dauern:

In meiner Umgebung habe ich nach ca. 5 Minuten die ersten Ergebnisse sehen können. Zuerst sehen Sie eine Übersicht der Domänen, Sites und Domaincontroller samt den FSMO-Rollen und Synchronisationsproblemen.

Die aus Sicht von Azure AD Connect Health zu überwachtenden Counter sind die Anmeldezahlen:

Wenn Sie rechts unten auf "Performance Monitors Collection" klicken, sehen Sie zusätzlich noch die Replication Queue. Die Anzeige können Sie anpassen, denn AzureAD Connect Health sammelt durchaus mehr Counter.

Wenn Sie AzureAD Connect Health nicht nutzen, dann können Sie hiervon natürlich schon die interessanten Counter in ihre eigene Monitoring-Lösung übernehmen.

Auswertung ADFS

Meldungen des ADFS-Agenten landen ebenfalls im Portal.

https://portal.azure.com/#blade/Microsoft_Azure_ADHybridHealth/AadHealthMenuBlade/AdfsServicesList

Hier haben ich das erste mal dann auch Meldungen gefunden, dass die ADFS-Dienste nicht "perfekt" sind

Auch hier können Sie Benachrichtigungen einschalten.

Die Statistiken beschränken Sie auf die Anzahl der Requests/s, die genutzten Anwendungen, fehlerhafte Anmeldungen (Bad Password) und eine Liste der "Risky IPs"

 

 

 

AzureAD Connect Health for ADFS
https://www.microsoft.com/en-us/videoplayer/embed/RE2GpVU

 

Einschätzung

Wer schon ein Monitoring für seine Domain Controller hat, muss nicht unbedingt AzureAD Connect Health installieren. Da es aber in der passenden Lizenz enthalten ist, spricht aber auch nichts dagegen, eine zweite Meinung einzuholen. Sie könne So relativ einfach sehen, welche Counter aus Sicht von Microsoft wichtig sind und ihr eigenes Monitoring entsprechend anpassen.

Wer aber seine DCs aktuell nur grundlegend auf CPU-Last, iskFree, RamFree und "IsAlive" per ICMP-Ping überwacht oder überhaupt keine Überwachung hat, sollte die Change ergreifen und und Einrichtung in 5 Minuten durchführen.

Weitere Links