Die Microsoft Graph API ist ein Dienst, der es Ihnen ermöglicht, nahezu jeden Aspekt von Azure AD und Office 365 unter einem einzigen REST-API-Endpunkt zu lesen, zu ändern und zu verwalten. In diesem Artikel erfahren Sie, wie Sie Ihre API in die PowerShell Graph API transformieren können.
Voraussetzungen
Wenn Sie dem Artikel folgen möchten, stellen Sie bitte sicher, dass Sie die folgenden Kriterien erfüllen:
- Windows PowerShell 5.1 ausführen (Dies ist die von mir getestete Version. Andere Versionen können funktionieren, sind jedoch nicht garantiert)
- Einen Azure-Mandanten
- Mit einem Konto mit globalen Administratorberechtigungen oder Berechtigungen zur App-Registrierung auf dem Abonnement und einem globalen Administrator, der Ihre App-Registrierungsanfragen akzeptiert.
Erstellen einer Anwendungsidentität für die Microsoft Graph API
Um auf die Microsoft Graph API zugreifen zu können, benötigen Sie zunächst eine Identität, um ein OAuth-Token zu erhalten. Dies geschieht in erster Linie mit einer Anwendungsidentität, die Sie im Azure-Portal erstellen können. Sie können eine Anwendungsidentität über das Azure-Portal erstellen. Gehen Sie dazu wie folgt vor:
- Wechseln Sie zum Azure-Portal und gehen Sie zu Azure Active Directory.
- Klicken Sie im linken Menü unter Verwalten auf Anwendungsregistrierungen und klicken Sie auf die Schaltfläche Neue Registrierung.

- Geben Sie einen Namen für Ihre Anwendung ein und klicken Sie auf Registrieren.
- Kopieren Sie die Anwendungs-ID-GUID für die spätere Verwendung.

Erstellen von Secrets für die Microsoft Graph API
Sie können sich mit zwei Hauptmethoden bei der Graph API authentifizieren: AppId/Secret und zertifikatsbasierte Authentifizierung. Sie müssen sich authentifizieren, wenn Sie sich mit PowerShell bei der Graph API verbinden.
Lassen Sie uns besprechen, wie Sie sich mit beiden Methoden authentifizieren können.
AppId/Secret
Eine Anwendungs-ID/Geheimnis ist ähnlich wie ein regulärer Benutzername/Kennwort. Die Anwendungs-ID besteht aus einer GUID anstelle eines Benutzernamens, und das Kennwort ist nur eine zufällige Zeichenfolge.
Um ein Geheimnis zu erstellen, klicken Sie auf Zertifikate & Geheimnisse im linken Menü und klicken Sie auf Neues Klientengeheimnis.

Geben Sie eine Beschreibung für das Geheimnis ein und wählen Sie aus, wann es ablaufen soll. Jetzt müssen Sie nur noch um Erlaubnis bitten, damit Sie auf die gewünschten Daten zugreifen können.
Zertifikat
Es besteht die Möglichkeit, ein selbstsigniertes Zertifikat zu erstellen und den öffentlichen Schlüssel in Azure hochzuladen. Dies ist die bevorzugte und sicherere Methode der Authentifizierung.
Sie müssen zuerst ein selbstsigniertes Zertifikat generieren. Zum Glück ist dies mit PowerShell einfach erledigt.
Jetzt laden Sie das selbstsignierte Zertifikat, das Sie nach $CerOutputPath
exportiert haben, in Ihre Azure-Anwendung hoch, indem Sie auf Zertifikate & Geheimnisse im linken Menü klicken und dann auf Zertifikat hochladen.

Hinzufügen von Berechtigungen für die Anwendung
Das Gewähren der richtigen Berechtigungen für die Anwendung ist wichtig – nicht nur für die Funktionalität Ihrer App, sondern auch für die Sicherheit. Informationen hierzu und (fast) alles andere in der Microsoft Graph API finden Sie in der Dokumentation.
Sobald ich dies eingerichtet habe, werde ich alle Sicherheitsereignisse aus meinem Mandanten sammeln. Um dies zu dürfen, benötige ich mindestens die Berechtigung SecurityEvents.Read.All. Damit kann ich Maßnahmen bei „Impossible Travel“-Ereignissen ergreifen, Benutzer, die sich über VPN/TOR verbinden, und ähnliches.
Um die Berechtigung SecurityEvents.Read.All zu Ihrer Anwendung hinzuzufügen, klicken Sie auf API-Berechtigungen und dann auf Berechtigung hinzufügen. Dadurch werden nicht nur die Graph API, sondern auch viele andere Anwendungen in Azure angezeigt. Die meisten dieser Anwendungen lassen sich leicht verbinden, wenn Sie wissen, wie Sie sich mit der Microsoft Graph API verbinden.
Klicken Sie auf Microsoft Graph > Anwendungsberechtigungen > Sicherheitsereignisse und aktivieren Sie die Berechtigung SecurityEvents.Read.All. Drücken Sie anschließend die Schaltfläche Berechtigung hinzufügen.
Haben Sie bemerkt, dass die Spalte Admin-Zustimmung erforderlich für diese Berechtigung auf Ja gesetzt ist? Dies bedeutet, dass ein Mandantenadministrator die Zustimmung erteilen muss, bevor die Berechtigung zur Anwendung hinzugefügt wird.

Wenn Sie ein globaler Administrator sind, drücken Sie die Admin-Zustimmung erteilen für oder bitten Sie einen globalen Administrator, dies zu genehmigen. Die Erlaubnis des Benutzers einzuholen, anstatt dass ein Administrator Lese-/Schreibberechtigungen festlegt, ist ein wesentlicher Bestandteil der OAuth-Authentifizierung. Dies ermöglicht uns jedoch, dies für die meisten Berechtigungen in der Microsoft Graph zu umgehen.
Sie haben dies wahrscheinlich schon auf Facebook oder Google gesehen: „Erlauben Sie Anwendung X den Zugriff auf Ihr Profil?“

Jetzt sind Sie bereit – lassen Sie uns einloggen und einige Daten abrufen!
Erhalten Sie einen Zugriffstoken (Anwendungs-ID und Geheimnis)
Dafür müssen wir eine Anfrage senden, um ein Zugriffstoken von einem Microsoft Graph OAuth-Endpunkt zu erhalten. Und im Body dieser Anfrage müssen wir folgendes bereitstellen:
client_id
– Ihre Anwendungs-ID – URL-kodiertclient_secret
– Ihr Anwendungsgeheimnis – URL-kodiertscope
– Eine URL-kodierte URL, die angibt, auf welche Ressourcen zugegriffen werden sollgrant_type
– Die Authentifizierungsmethode, die Sie verwenden
Die URL für den Endpunkt lautet https://login.microsoftonline.com/<tenantname>/oauth2/v2.0/token. Sie können ein Zugriffstoken mit PowerShell und der Graph API anfordern, indem Sie den folgenden Code-Schnipsel verwenden.
Erhalten Sie einen Zugriffstoken (Verwendung eines Zertifikats)
Die Authentifizierung bei der Microsoft Graph API mit einem Zertifikat unterscheidet sich etwas von der normalen AppId/Secret-Flow. Um ein Zugriffstoken mit einem Zertifikat zu erhalten, müssen Sie:
- Erstellen Sie einen Java Web Token (JWT)-Header.
- Erstellen Sie eine JWT-Nutzlast.
- Signieren Sie den JWT-Header UND die Nutzlast mit dem zuvor erstellten selbstsignierten Zertifikat. Dadurch wird ein selbstgemachter Zugriffstoken erstellt, das für die Anforderung eines Microsoft Graph Zugriffstokens verwendet wird.
- Erstellen Sie einen Anforderungskörper, der enthält:
client_id=<Anwendungs-ID>
client_assertion=<der JWT>
client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
scope=<URL-codierter Bereich>
grant_type=client_credentials
- Führen Sie eine Post-Anforderung mit dem Körper an den OAuth-Endpunkt mit
Authorization=<JWT>
in seinem Header durch.
Wie dies in der Dokumentation von Microsoft zu tun ist, war nicht offensichtlich, aber hier ist das PowerShell-Skript, um dies zu erreichen:
Verstehen der Anforderung Zugriffstoken-Ausgabe
Nachdem Sie ein Zugriffstoken erhalten haben, entweder über die Anwendungs-ID/-Geheimnis oder über ein Zertifikat, sollten Sie ein Objekt mit vier Eigenschaften sehen.
token_type
– Welche Art von Token es istexpires_in
– Zeit in Sekunden, für die das Zugriffstoken gültig istext_expires_in
– Ähnlich wieexpires_in
, aber für die Widerstandsfähigkeit im Falle eines Ausfalls des Token-Dienstesaccess_token
– Wofür wir gekommen sind
Als nächstes erstellen Sie einen Header mit token_type
und access_token
und beginnen mit PowerShell Anfragen an die Microsoft Graph API zu senden.
Anfragen an die Microsoft Powershell Graph API senden
Beginnen Sie nun damit, Anfragen an die API zu senden.
In unserem Beispiel benötigen Sie zunächst die URL zum Auflisten von Sicherheitswarnungen. Vergessen Sie nicht, die Microsoft Graph API-Dokumentation zu konsultieren, um zu sehen, was benötigt wird.
In diesem Fall benötigen Sie einen Header mit Authorization=Bearer <access_token>
und eine GET-Anforderung an den Graph API Alerts-Endpunkt. So geht’s mit PowerShell.
Wenn Sie jetzt Sicherheitswarnungen in der Variable $SecurityAlerts
haben, sollte es ungefähr so aussehen:
Die Inspektion eines einzelnen Sicherheitsalarms als JSON wird wie folgt aussehen:
Verstehen und Verwalten der API-Ausgabe-Paging
Die Microsoft Graph API hat ein Limit pro Funktion dafür, wie viele Elemente sie zurückgibt. Diese Grenze gilt pro Funktion, aber sagen wir, es sind 1000 Elemente. Das bedeutet, dass Sie maximal 1000 Elemente in Ihrer Anfrage erhalten können.
Wenn dieses Limit erreicht ist, wird Paging verwendet, um den Rest der Elemente zu liefern. Dies geschieht, indem der @odata.nextLink
-Eigenschaft zur Antwort Ihrer Anfrage hinzugefügt wird. @odata.nextLink
enthält eine URL, unter der Sie die nächste Seite Ihrer Anfrage abrufen können.
Sie können alle Elemente durchgehen, indem Sie diese Eigenschaft überprüfen und eine Schleife verwenden:
Abschluss
Nachdem Sie gelernt haben, wie Sie sich bei der Graph API authentifizieren, ist es ziemlich einfach, Daten daraus zu sammeln. Es ist ein leistungsstarker Dienst, der viel weniger genutzt wird, als er sollte.
Zum Glück gibt es bereits viele Module, um die Microsoft Graph API zu nutzen, aber um Ihre eigenen Anforderungen zu erfüllen, müssen Sie möglicherweise Ihr eigenes Modul dafür erstellen. Mit den in diesem Artikel erlernten Fähigkeiten sollten Sie gut vorankommen.
Für weitere Informationen zur Steuerung des Gastzugriffs in Office 365 habe ich einen ausführlichen Artikel in meinem Blog geschrieben, den ich Ihnen ans Herz lege, überprüfen Sie ihn.