Microsoft Graph: Einheitliches (PowerShell)-API für Microsofts Cloud-Dienste


    Tags: , , ,

    PowerShell-Modul für Microsoft Graph installierenMicrosoft Graph ist ein API für den Zugriff auf die Daten in diversen Microsoft-Diensten, ein­schließlich Azure Active Directory, Teams oder OneDrive. Wenn man es in PowerShell nutzen möchte, dann benötigt man dafür nur ein Modul, und nicht wie bisher für jeden Service ein eigenes. Zudem entfällt in Scripts die separate Authentifizierung für jeden Dienst.

    Aufgrund der getrennten Entwicklung von Microsofts Online-Diensten besaß jedes Produkt (Exchange, OneDrive, SharePoint etc.) sein eigenes API, das neben Graph auf absehbare Zeit auch weiter existieren wird. Einige neue Services wie der Update for Business Deployment Service sind aber gleich von Anfang an nur über Graph ansprechbar.

    Konsolidierung der APIs

    Eine konsistente Schnittstelle macht es für Entwickler einfacher, den Überblick über das umfangreiche API mit seinen verschiedenen Cmdlets zu behalten. Das gilt auch für die Ergebnisse der Abfragen, etwa zu Benutzern oder Gruppen, wo die jeweiligen Funktionen verschiedene Resultate liefern. Diese Inkonsistenz resultiert daraus, dass viele Eigenschaften je nach Produkt anders ausgelegt wurden.

    Ein aktuelles Thema ist die Abschaltung der Basic Authentication zum 1. Oktober 2022 in Microsoft 365, das sich unter anderem auf mehrere Exchange-Protokolle sowie das Sichern oder Archivieren von Teams-Nachrichten und Chats auswirkt. Stattdessen empfiehlt Microsoft zukünftig die Verwendung von Graph in Scripts.

    Graph Explorer

    MS Graph hat kein Admin-Portal, wie man es von Exchange, SharePoint & Co, kennt, da es ja in erster Linie programmatisch angesprochen wird. Es ist aber trotzdem im Web unter http://graph.microsoft.com erreichbar.

    Die Homepage von Microsoft Graph

    Wer sich erstmal etwas mit dieser Technologie vertraut machen möchte, sollte dort mit dem Graph Explorer starten. Damit lassen sich bereits einfache Abfragen durchführen. Später kann man die Befehle in Programmier­sprachen wie C#, JavaScript, Java, GO und PowerShell übernehmen.

     Im Graph Explorer kann man erste Gehversuche mit dem API unternehmen.

    Zu bestimmten Abfragen bietet der Explorer Hilfestellungen als Sample Queries in der linken Fensterleiste an.

    Aktuell gibt es zwei Versionen von Endpoints, die sich ansprechen lassen, nämlich V1.0 und Beta.

    Im Graph Explorer kann man zwischen der Version 1.0 und der Beta umschalten

    Die v1.0 ist für den produktiven Einsatz gedacht und in der Beta veröffentlicht Microsoft neue Funktionen, welche dann im nächsten Release erscheinen sollen.

    Zu beachten ist, dass grundsätzlich nicht alle APIs per Default freigeschaltet werden. Microsoft behält sich vor, geschützte APIs erst nach Genehmigung eines Antrags freizuschalten, wobei die Bearbeitung ca. zwei Wochen dauern kann.

    Authentifizierung für Microsoft Graph

    Die Authentifizierung für Graph erfolgt über einen Security Token (JSON Web Token). Nachdem der Graph Explorer bereits eine App ist, muss sich der Administrator dort nur noch anmelden, hier wird der Security Token automatisch selbst generiert. Bei einer PowerShell-Sitzung muss man besagten Token erst selbst erzeugen und in das Script einbetten.

    Im Graph Explorer kann man den Access Token einsehen.

    Zugriff mittels PowerShell

    Neben dem Explorer existiert für Microsoft Graph ein eigenes Modul für PowerShell. Dieses lässt sich folgendermaßen installieren:

    Install-Module -Name Microsoft.Graph

    Der Aufruf von

    Get-Command -Module Microsoft.Graph -CommandType Function

    zeigt, wie mächtig dieses API mit seinen 39 Submodulen und über 8000 Functions ist.

    Das Modul für Microsoft Graph umfasst eine Vielzahl von Cmdlets und Functions.

    Um sich mit dem Graph-API zu verbinden, reicht es nicht, wie bei den anderen M365- oder Azure-Modulen einfach das jeweilige Connect-Cmdlet aufzurufen. Vielmehr muss man erst einen Scope definieren, der die Berechtigungen für den Zugriff definiert.

    $Scope=@('User.Read.All','User.ReadWrite.All')
    Connect-MgGraph -Scopes $Scope

    Alternativ kann man auf das REST-API direkt mittels Invoke-WebRequest bzw. Invoke-RestMethod zugreifen.

    Fazit

    Mit Graph entwickelt Microsoft eine übergreifende Schnittstelle für seine Online-Dienste. Diese fällt übersichtlicher aus als die historisch gewachsenen APIs der verschiedenen Produkte und Services. Sie unterstützt zudem moderne Formen der Authentifizierung.

    Das Interface lässt sich über verschiedene Programmiersprachen ansprechen, für PowerShell existiert ein Modul mit zahlreichen Funktionen und Cmdlets.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Roland Eich

    Roland Eich ist gelernter Fach­infor­matiker für System­inte­gration und in der IT seit über 14 Jahren zu Hause. Roland deckt auf­grund seiner Erfah­rungen ein breites Spek­trum der Microsoft-Produkt­palette ab.Zudem besitzt er ver­schiedene Zertifi­zierungen (MCITP, MCSA und MCSE, ITIL, PRINCE2).
    // Kontakt: E-Mail //

    Verwandte Beiträge

    Weitere Links