Automatisieren von Microsoft Entra ID Governance-Aufgaben über Azure Automation und Microsoft Graph
Azure Automation ist ein Azure-Clouddienst, mit dem Sie alltägliche oder wiederkehrend ausgeführte Aufgaben und Prozesse im Rahmen der Systemverwaltung automatisieren können. Microsoft Graph ist der einheitliche API-Endpunkt von Microsoft für Microsoft Entra-Features, mit deren Hilfe Benutzer, Gruppen, Zugriffspakete, Zugriffsüberprüfungen und andere Ressourcen im Verzeichnis verwaltet werden. Sie können Microsoft Entra ID über die PowerShell-Befehlszeile im großen Maßstab verwalten, indem Sie das Microsoft Graph PowerShell SDK nutzen. Zudem können Sie die Microsoft Graph PowerShell-Cmdlets über ein PowerShell-basiertes Runbook in Azure Automation einbinden, sodass Sie Microsoft Entra-Aufgaben anhand eines einfachen Skripts automatisieren können.
Azure Automation und das PowerShell Graph SDK unterstützen die zertifikatbasierte Authentifizierung und Anwendungsberechtigungen, sodass Azure Automation-Runbooks ohne Benutzerkontext bei Microsoft Entra ID authentifiziert werden können.
In diesem Artikel erfahren Sie, wie Sie Azure Automation für Microsoft Entra ID Governance einsetzen können, indem Sie ein einfaches Runbook erstellen, das die Berechtigungsverwaltung über Microsoft Graph PowerShell abfragt.
Erstellen eines Azure Automation-Kontos
Tipp
Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.
Azure Automation bietet eine in der Cloud gehostete Umgebung für die Ausführung von Runbooks. Diese Runbooks können automatisch auf der Grundlage eines Zeitplans gestartet oder durch Webhooks oder Logic Apps ausgelöst werden.
Für die Verwendung von Azure Automation benötigen Sie ein Azure-Abonnement.
Erforderliche Rolle: Besitzer eines Azure-Abonnements oder einer Ressourcengruppe
Melden Sie sich beim Azure-Portal an. Stellen Sie sicher, dass Sie Zugriff auf das Abonnement oder die Ressourcengruppe haben, in dem bzw. der sich das Azure Automation-Konto befindet.
Wählen Sie das Abonnement oder die Ressourcengruppe aus, und klicken Sie auf Erstellen. Geben Sie Automation ein, wählen Sie den Azure-Dienst Automation von Microsoft aus, und klicken Sie dann auf Erstellen.
Nachdem das Azure Automation-Konto erstellt wurde, wählen Sie Zugriffssteuerung (IAM) aus. Wählen Sie dann unter Zugriff auf diese Ressource anzeigen die Option Anzeigen aus. Die angezeigten Benutzer und Dienstprinzipale können später über die in diesem Azure Automation-Konto erstellten Skripts mit dem Microsoft-Dienst interagieren.
Überprüfen Sie die aufgeführten Benutzer und Dienstprinzipale, und stellen Sie sicher, dass sie autorisiert sind. Entfernen Sie alle Benutzer ohne Autorisierung.
Erstellen eines selbstsigniertes Schlüsselpaars und Zertifikats auf Ihrem Computer
Damit das Konto ohne Ihre persönlichen Anmeldedaten arbeiten kann, muss sich das von Ihnen erstellte Azure Automation-Konto mit einem Zertifikat bei Microsoft Entra ID authentifizieren.
Wenn Sie bereits über ein Schlüsselpaar für die Dienstauthentifizierung bei Microsoft Entra ID verfügen und ein Zertifikat von einer Zertifizierungsstelle erhalten haben, fahren Sie mit dem nächsten Abschnitt fort.
So generieren Sie ein selbstsigniertes Zertifikat
Folgen Sie den Anweisungen unter Erstellen eines selbstsignierten Zertifikats (Option 2), um ein Zertifikat mit zugehörigem privaten Schlüssel zu erstellen und zu exportieren.
Zeigen Sie den Zertifikatfingerabdruck an.
$cert | ft Thumbprint
Nachdem Sie die Dateien exportiert haben, können Sie das Zertifikat und das Schlüsselpaar aus Ihrem lokalen Benutzerzertifikatspeicher entfernen. In den folgenden Schritten werden Sie die
.pfx
- und.crt
-Dateien ebenfalls entfernen, sobald das Zertifikat und der private Schlüssel in die Azure Automation- und Microsoft Entra-Dienste hochgeladen wurden.
Hochladen des Schlüsselpaars in Azure Automation
Ihr Runbook in Azure Automation ruft den privaten Schlüssel aus der .pfx
-Datei ab und verwendet ihn für die Authentifizierung bei Microsoft Graph.
Wählen Sie im Azure-Portal für das Azure Automation-Konto Zertifikate und Zertifikat hinzufügen aus.
Laden Sie die zuvor erstellte
.pfx
-Datei hoch, und geben Sie das Kennwort ein, das Sie beim Erstellen der Datei angegeben haben.Nachdem der private Schlüssel hochgeladen wurde, notieren Sie sich das Ablaufdatum des Zertifikats.
Sie können die
.pfx
-Datei jetzt von Ihrem lokalen Computer löschen. Löschen Sie die.crt
-Datei jedoch noch nicht, da Sie diese Datei in einem späteren Schritt benötigen.
Hinzufügen von Modulen für Microsoft Graph zu Ihrem Azure Automation-Konto
Standardmäßig sind in Azure Automation keine PowerShell-Module für Microsoft Graph vorinstalliert. Sie müssen Ihrem Automation-Konto Microsoft.Graph.Authentication und anschließend weitere Module aus dem Katalog hinzufügen.
Wählen Sie im Azure-Portal für das Azure Automation-Konto Module und dann Katalog durchsuchen aus.
Geben Sie in der Suchleiste Microsoft.Graph.Authentication ein. Wählen Sie das Modul aus, klicken Sie auf Importieren und dann auf OK, um den Import des Moduls durch Microsoft Entra zu starten. Nachdem Sie „OK“ ausgewählt haben, kann das Importieren eines Moduls einige Minuten dauern. Versuchen Sie nicht, weitere Microsoft Graph-Module hinzuzufügen, bevor der Import von Modul „Microsoft.Graph.Authentication“ abgeschlossen ist, weil „Microsoft.Graph.Authentication“ die Voraussetzung für weitere Module ist.
Kehren Sie zur Liste Module zurück, und wählen Sie Aktualisieren aus. Sobald sich der Status des Moduls Microsoft.Graph.Authentication in Verfügbar geändert hat, können Sie das nächste Modul importieren.
Wenn Sie die Cmdlets für Microsoft Entra ID Governance-Funktionen wie die Berechtigungsverwaltung verwenden, wiederholen Sie den Importvorgang für das Modul Microsoft.Graph.Identity.Governance.
Importieren Sie weitere Module, die Ihr Skript möglicherweise benötigt, z. B. Microsoft.Graph.Users. Wenn Sie beispielsweise Microsoft Entra ID Protection verwenden, sollten Sie das Modul Microsoft.Graph.Identity.SignIns importieren.
Erstellen einer App-Registrierung und Zuweisen von Berechtigungen
Als Nächstes erstellen Sie eine App-Registrierung in Microsoft Entra ID, damit Microsoft Entra ID das Zertifikat Ihres Azure Automation-Runbooks bei der Authentifizierung erkennt.
- Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsadministrator an.
- Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.
- Wählen Sie Neue Registrierung aus.
- Geben Sie einen Namen für die Anwendung ein, und wählen Sie Registrieren aus.
- Nachdem die Anwendungsregistrierung erstellt wurde, notieren Sie sich die Anwendungs-ID (Client) und Verzeichnis-ID (Mandant), da Sie diese Informationen später benötigen.
- Wählen Sie Zertifikate und Geheimnisse>Zertifikate>Zertifikat hochladen.
- Laden Sie die zuvor erstellte
.crt
-Datei hoch.
- Laden Sie die zuvor erstellte
- Klicken Sie auf API-Berechtigungen>Berechtigung hinzufügen.
- Wählen Sie Microsoft Graph>Anwendungsberechtigungen aus.
Wählen Sie alle Berechtigungen aus, die für Ihr Azure Automation-Konto benötigt werden, und klicken Sie dann auf Berechtigungen hinzufügen.
- Wenn Ihr Runbook nur Abfragen oder Updates innerhalb eines einzelnen Katalogs ausführt, müssen Sie ihm keine mandantenweiten Anwendungsberechtigungen zuweisen. Stattdessen können Sie den Dienstprinzipal der Rolle Katalogbesitzer oder Katalogleser zuweisen.
- Wenn Ihr Runbook nur Abfragen zur Berechtigungsverwaltung durchführt, kann es die Berechtigung EntitlementManagement.Read.All verwenden.
- Wenn Ihr Runbook Änderungen an der Berechtigungsverwaltung vornimmt, z. B. um katalogübergreifende Zuweisungen zu erstellen, verwenden Sie die Berechtigung EntitlementManagement.ReadWrite.All.
- Stellen Sie für andere APIs sicher, dass die erforderliche Berechtigung hinzugefügt wird. Für Microsoft Entra ID Protection könnte beispielsweise die Berechtigung IdentityRiskyUser.Read.All erforderlich sein.
Administratoreinwilligung erteilen
Die im vorherigen Abschnitt erstellte Anwendung verfügt über Berechtigungen, die von einer Person mit mindestens der Rolle „Administrator für privilegierte Rollen“ genehmigt werden müssen, bevor sie wie vorgesehen funktioniert.
- Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Administrator für privilegierte Rollen an.
- Browsen Sie zu Identität>Anwendungen>App-Registrierungen>Alle Anwendungen.
- Wählen Sie die App aus, die im vorherigen Abschnitt erstellt wurde.
- Wählen Sie API-Berechtigungen aus und überprüfen Sie die erforderlichen Berechtigungen.
- Wählen Sie gegebenenfalls die Option Administratorzustimmung erteilen für „Name Ihres Mandanten“, um der Anwendung diese Berechtigungen zu erteilen.
Erstellen von Azure Automation-Variablen
In diesem Schritt erstellen Sie im Azure Automation-Konto drei Variablen, anhand derer das Runbook bestimmt, wie es sich bei Microsoft Entra ID authentifizieren soll.
Kehren Sie im Azure-Portal-Konto zum Azure Automation-Konto zurück.
Wählen Sie Variablen und dann Variable hinzufügen aus.
Erstellen Sie eine Variable mit dem Namen Thumbprint. Geben Sie als Wert der Variablen den zuvor generierten Zertifikatfingerabdruck ein.
Erstellen Sie eine Variable mit dem Namen ClientId. Geben Sie als Variablenwert die Client-ID für die in Microsoft Entra ID registrierte Anwendung ein.
Erstellen Sie eine Variable mit dem Namen TenantId. Geben Sie als Variablenwert die Mandanten-ID des Verzeichnisses ein, in dem die Anwendung registriert wurde.
Erstellen eines Azure Automation PowerShell-Runbooks zur Verwendung von Graph
In diesem Schritt erstellen Sie ein erstes Runbook. Sie können dieses Runbook auslösen, um zu überprüfen, ob die Authentifizierung mit dem zuvor erstellten Zertifikat erfolgreich war.
Wählen Sie Runbooks und Runbook erstellen aus.
Geben Sie den Namen des Runbooks ein, wählen Sie PowerShell als Typ des zu erstellenden Runbooks aus, und klicken Sie auf Erstellen.
Nachdem das Runbook erstellt wurde, wird ein Textbearbeitungsbereich angezeigt, in den Sie den PowerShell-Quellcode des Runbooks eingeben können.
Geben Sie den folgenden PowerShell-Code in den Text-Editor ein.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
Connect-MgGraph -clientId $ClientId -tenantId $TenantId -certificatethumbprint $Thumbprint
Wählen Sie Testbereich und Starten aus. Warten Sie einige Sekunden, bis Azure Automation die Verarbeitung Ihres Runbookskripts abgeschlossen hat.
Wenn die Ausführung Ihres Runbooks erfolgreich war, wird die Meldung Willkommen bei Microsoft Graph! angezeigt.
Nachdem Sie nun sichergestellt haben, dass Ihr Runbook sich bei Microsoft Graph authentifizieren kann, erweitern Sie Ihr Runbook, indem Sie Cmdlets für die Interaktion mit Microsoft Entra ID-Features hinzufügen.
Erweitern des Runbooks zur Verwendung der Berechtigungsverwaltung
Wenn die App-Registrierung für Ihr Runbook die Berechtigungen EntitlementManagement.Read.All oder EntitlementManagement.ReadWrite.All umfasst, können die APIs der Berechtigungsverwaltung verwendet werden.
- Um beispielsweise eine Liste der Microsoft Entra-Zugriffspakete für die Berechtigungsverwaltung abzurufen, können Sie das zuvor erstellte Runbook aktualisieren und den Text durch den folgenden PowerShell-Code ersetzen.
Import-Module Microsoft.Graph.Authentication
$ClientId = Get-AutomationVariable -Name 'ClientId'
$TenantId = Get-AutomationVariable -Name 'TenantId'
$Thumbprint = Get-AutomationVariable -Name 'Thumbprint'
$auth = Connect-MgGraph -clientId $ClientId -tenantid $TenantId -certificatethumbprint $Thumbprint
Import-Module Microsoft.Graph.Identity.Governance
$ap = @(Get-MgEntitlementManagementAccessPackage -All -ErrorAction Stop)
if ($null -eq $ap -or $ap.Count -eq 0) {
ConvertTo-Json @()
} else {
$ap | Select-Object -Property Id,DisplayName | ConvertTo-Json -AsArray
}
Wählen Sie Testbereich und Starten aus. Warten Sie einige Sekunden, bis Azure Automation die Verarbeitung Ihres Runbookskripts abgeschlossen hat.
Wenn die Ausführung erfolgreich war, wird anstelle der Begrüßungsnachricht ein JSON-Array ausgegeben. Das JSON-Array enthält die ID und den Anzeigenamen für jedes Zugriffspaket, das von der Abfrage zurückgegeben wird.
Bereitstellen von Parametern für das Runbook (optional)
Sie können Ihrem Runbook auch Eingabeparameter hinzufügen, indem Sie oben im PowerShell-Skript einen Param
Abschnitt hinzufügen. Beispiel:
Param
(
[String] $AccessPackageAssignmentId
)
Das Format der zulässigen Parameter hängt vom aufrufenden Dienst ab. Wenn Ihr Runbook Parameter vom Aufrufer akzeptiert, müssen Sie Ihrem Runbook Validierungslogik hinzufügen, um sicherzustellen, dass die bereitgestellten Parameterwerte für den Start des Runbooks geeignet sind. Wenn Ihr Runbook beispielsweise von einem Webhook gestartet wird, führt Azure Automation keine Authentifizierung für eine Webhookanforderung durch, solange sie an die richtige URL gesendet wird, sodass Sie eine alternative Methode zum Überprüfen der Anforderung benötigen.
Sobald Sie runbook-Eingabeparameter konfigurieren, können Sie dann beim Testen Ihres Runbook Werte über die Testseite bereitstellen. Später, wenn das Runbook veröffentlicht wird, können Sie Parameter beim Starten des Runbook aus PowerShell, der REST-API oder einer Logik-App bereitstellen.
Analysieren der Ausgabe eines Azure Automation-Kontos in Logic Apps (optional)
Sobald Ihr Runbook veröffentlicht wurde, können Sie einen Zeitplan in Azure Automation erstellen und das Runbook mit diesem Zeitplan verknüpfen, damit es automatisch ausgeführt wird. Das Planen von Runbooks aus Azure Automation eignet sich für Runbooks, die nicht mit anderen Azure- oder Office 365-Diensten interagieren müssen, die keine PowerShell-Schnittstellen haben.
Wenn Sie die Ausgabe Ihres Runbooks an einen anderen Dienst senden möchten, sollten Sie die Verwendung von Azure Logic Apps zum Starten Ihres Azure Automation-Runbooks in Betracht ziehen, da Logic Apps die Ergebnisse zusätzlich analysieren kann.
Erstellen Sie in Azure Logic Apps im Designer für Logik-Apps eine Logik-App, die mit Recurrence (Wiederholung) beginnt.
Fügen Sie den Vorgang Auftrag erstellen aus Azure Automation hinzu. Authentifizieren Sie sich bei Microsoft Entra ID, und wählen Sie das zuvor erstellte Abonnement, die Ressourcengruppe und das Automation-Konto aus. Wählen Sie Auf Auftrag warten aus.
Fügen Sie den Parameter Runbookname hinzu, und geben Sie den Namen des zu startenden Runbooks ein. Wenn das Runbook über Eingabeparameter verfügt, können Sie ihnen die Werte bereitstellen.
Wählen Sie Neuer Schritt aus, und fügen Sie den Vorgang Auftragsausgabe abrufen hinzu. Wählen Sie dasselbe Abonnement, dieselbe Ressourcengruppe und dasselbe Automation-Konto wie im vorherigen Schritt und den dynamischen Wert der Auftrags-ID aus dem vorherigen Schritt aus.
Anschließend können Sie der Logik-App weitere Vorgänge hinzufügen, z. B. die Aktion JSON analysieren, die den bei Abschluss des Runbooks zurückgegebenen Inhalt verwendet. (Wenn Sie das Parsing-JSON-Schema automatisch aus einer Beispielnutzlast generieren, stellen Sie sicher, dass das PowerShell-Skript möglicherweise null zurückgibt; Sie müssen möglicherweise einige der
"type": "string"
in"type": ["string", "null"]
im Schema ändern.)
In Azure Automation kann ein PowerShell-Runbook möglicherweise nicht erfolgreich ausgeführt werden, wenn es versucht, in einem Arbeitsschritt eine große Datenmenge in den Ausgabestream zu schreiben. Sie können dieses Problem in der Regel umgehen, indem Sie das Runbook nur die von der Logik-App benötigten Informationen ausgeben lassen, z. B. indem Sie das Cmdlet Select-Object -Property
verwenden, um nicht benötigte Eigenschaften auszuschließen.
Planen der Zertifikataktualisierung
Wenn Sie gemäß den obigen Schritten ein selbstsigniertes Zertifikat für die Authentifizierung erstellt haben, denken Sie daran, dass das Zertifikat nach einer bestimmten Gültigkeitsdauer abläuft. Sie müssen das Zertifikat vor dem Ablaufdatum neu generieren und das neue Zertifikat hochladen.
Es gibt zwei Stellen im Azure-Portal, an denen Sie das Ablaufdatum anzeigen können.
- In Azure Automation wird das Ablaufdatum des Zertifikats auf dem Bildschirm Zertifikate angezeigt.
- In Microsoft Entra ID wird bei der App-Registrierung auf dem Bildschirm Zertifikate & Geheimnisse das Ablaufdatum des für das Azure Automation-Konto verwendeten Zertifikats angezeigt.