Website-Suche

Verwenden der Microsoft Graph-API für den Zugriff auf Azure über PowerShell


Mit der Microsoft Graph API können Sie über einen einzigen REST-API-Punkt auf alle Objekte im Azure AD-Mandanten (Microsoft 365) zugreifen (

https://graph.microsoft.com

). Sie denken wahrscheinlich, dass es nur für Webentwickler interessant ist, aber das Gegenteil ist der Fall. Auf einige Daten, Objekte oder Ressourceneigenschaften in Microsoft 365 kann nur über Microsoft Graph zugegriffen werden. Um Analysedaten, Statistiken oder andere Informationen zu sammeln, muss ein Azure-Administrator Microsoft Graph verwenden.

In diesem Artikel zeigen wir Ihnen, wie Sie Ihre App in Azure AD registrieren, ein Authentifizierungstoken erhalten, eine Verbindung zu verschiedenen Microsoft 365-Ressourcen (Azure AD, Office 365, Intune, SharePoint, Teams, OneNote usw.) mithilfe von RESTful herstellen und Power Shell

Invoke-RestMethod

Cmdlet. Sie können Microsoft Graph sowohl zum Abrufen von Daten als auch zum Verwalten von Objekten in Azure verwenden.

Registrieren der Microsoft Graph-Anwendung in Azure AD

Um mit Microsoft Graph auf Ressourcen in Ihrem Azure-Mandanten zuzugreifen, müssen Sie eine neue Azure AD-App erstellen und ihr den Zugriff auf verschiedene Azure-Objekte ermöglichen.

  1. Melden Sie sich beim Azure-Portal https://portal.azure.com/ an.

  2. Gehen Sie zu Azure Active Directory -> App-Registrierung

  3. Erstellen Sie eine neue App (Neue Registrierung);

  4. Geben Sie den Namen Ihrer App ein: azGraphPowerShellApp, wählen Sie aus, wer die App verwenden darf:

    Accounts in this organizational directory only (tenantname only - Single tenant)

    und klicken Sie auf Registrieren;

  5. Wählen Sie dann aus, auf welche Azure-Ressourcen Ihre Anwendung zugreifen darf. Gehen Sie zum Abschnitt API-Berechtigungen;

  6. Standardmäßig darf eine App nur Daten über einen aktuellen AzureAD-Benutzer lesen (

    User.Read

    ). Wir erteilen ihm Leseberechtigungen für alle Eigenschaften von Microsoft 365-Benutzern und -Gruppen.

  7. Klicken Sie auf Berechtigung hinzufügen, wählen Sie Microsoft Graph aus;

  8. Es gibt zwei grundlegende Berechtigungstypen in Microsoft Graph (Delegierte Berechtigung - wenn etwas im Namen eines Benutzers getan wird, der eine App ausführt, und Anwendungsberechtigung - wenn eine App von einem externen Skript aufgerufen wird). Wählen Sie Anwendungsberechtigung;

  9. In der angezeigten Liste können Sie auswählen, welche Berechtigungen Sie Ihrer Anwendung für den Zugriff auf Azure-Ressourcen und -Objekte zuweisen möchten. In meinem Beispiel habe ich Gruppe -> hinzugefügt

    Group.Read.All

    , Gruppenmitglied ->

    GroupMember.Read.All

    , Benutzer ->

     User.Read.All

    (Wenn Sie möchten, dass Ihre App Daten in Ihrem Mandanten liest, wählen Sie „

    Directory.Read.All

    );

  10. Klicken Sie auf Administratoreinwilligung erteilen, um den Zugriff im Namen des Administrators zu gewähren.

Zur Authentifizierung in einer App können Sie ein Zertifikat oder ein Geheimnis verwenden. Ein Geheimnis ist ein automatisch generiertes Passwort. Der Benutzername ist eine App-ID. Lassen Sie uns ein Geheimnis für Ihre App erstellen.

  1. Öffnen Sie Zertifikate & Geheimnisse -> Neue Kundengeheimnisse;

  2. Geben Sie den Schlüsselnamen ein und legen Sie seine Gültigkeitsdauer fest (ich habe 12 Monate angegeben);

  3. Kopieren Sie den Wert aus dem Feld Wert (es ist das Passwort für die App). Speichern Sie das Passwort im Azure Key Vault oder in Ihrem Passwort-Manager, da der Passwortwert nach dem Beenden der App ausgeblendet wird (Sie müssen das Geheimnis erneut erstellen);

  4. Kopieren Sie dann Ihre App-ID (Anwendungsclient-ID) und Azure-Mandanten-ID (Verzeichnismandanten-ID).

Fügen Sie Ihre Werte in PowerShell-Variablen ein:

$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"

Herstellen einer Verbindung zur Azure Microsoft Graph-API mithilfe von PowerShell

Um die Microsoft Graph-API von PowerShell aus zu verwenden, müssen Sie keine separaten PowerShell-Module (wie Azure AD) installieren. Sie können über eine integrierte Funktion damit interagieren

Invoke-RestMethod

Cmdlet.

Um eine Verbindung zur Graph-API herzustellen, müssen Sie ein Zugriffstoken erhalten. Mit dem folgenden PowerShell-Skript können Sie sich in Ihrer App authentifizieren und ein Microsoft Graph-API-Zugriffstoken erhalten.

In diesem Beispiel verwenden wir ein Geheimnis (ein Passwort) als Klartext im Skript. Im wirklichen Leben wird dies nicht empfohlen. Sie sollten ein Geheimnis besser interaktiv anfordern oder es aus einem geheimen Tresor extrahieren (das SecretManagement PowerShell-Modul kann Ihnen dabei helfen). Achten Sie außerdem auf Ihre Geheimnisse, wenn Sie Ihre PowerShell-Skripte auf Git speichern.

$ApplicationID = "1111111-1111-1111-1111-11111111111"
$TenatDomainName = "2222222-2222-2222-2222-222222222222"
$AccessSecret = "3333333333333333333333333333333333333333333"
$Body = @{
Grant_Type    = "client_credentials"
Scope         = "https://graph.microsoft.com/.default"
client_Id     = $ApplicationID
Client_Secret = $AccessSecret
}
$ConnectGraph = Invoke-RestMethod -Uri https://login.microsoftonline.com/$TenatDomainName/oauth2/v2.0/token -Method POST -Body $Body
$token = $ConnectGraph.access_token

Mit dem Token können Sie mithilfe von GraphAPI verschiedene Abfragen für Ihren Azure-Mandanten ausführen.

Das folgende Skript zeigt beispielsweise eine Liste von Gruppen in Ihrem Azure AD an:

$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value.displayName

Sie können das Datum anzeigen, an dem eine Azure AD-Gruppe erstellt wurde:

$GrapGroupUrl = 'https://graph.microsoft.com/v1.0/Groups/'
$Groups=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapGroupUrl -Method Get).value
$Groups | select displayName,createdDateTime

So zeigen Sie einen Benutzernamen, einen UPN und eine E-Mail-Adresse an:

$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$users=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$users | select displayName,userprincipalname,mail

Wenn Sie Ihrer App keine Berechtigungen für den Zugriff auf Azure AD-Objekte erteilt haben, wird beim Versuch, Invoke-RestMethod auszuführen, die folgende Fehlermeldung angezeigt:

The remote server returned an error: (403) Forbidden.

In den obigen Beispielen lesen wir Daten nur aus Azure AD mit der GET-Methode. Sie können aber auch die Methoden POST, PUT, PATCH oder DELETE verwenden, um Änderungen vorzunehmen. Sie können beispielsweise einen Benutzer in Azure AD erstellen, ein Passwort zurücksetzen, eine Beschreibung ändern usw.

Um verfügbare Microsoft Graph-API-Eigenschaften oder -Methoden in Ihrem Browser anzuzeigen, können Sie Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) verwenden.

Microsoft verfügt außerdem über ein spezielles Microsoft Graph PowerShell SDK für die Interaktion mit Microsoft Graph (

Install-Module Microsoft.Graph

). Wir haben jedoch gezeigt, dass Sie direkt über PowerShell auf Microsoft Graph zugreifen können.

Verwandte Artikel