In diesem Beitrag werden wir uns mit der GraphAPI und PowerShell 7 widmen. Sei es Automatisierungen, Dokumentation oder Konfiguration.
Hierfür benutze ich das MGGraph Modul von Microsoft für PowerShell 7.
Zunächst wird eine sogenannte Enterprise Application benötigt. Diese erstellen wir unter Identity unter Enterprise Application.
Sobald erstellt, gehen wir in den Menüpunkt API permissions unter App registration.
Dort müssen die jeweiligen permissions hinzugefügt werden, welche wir für unser Skript verwenden.
Achtung: hierbei gilt natürlich: desto weniger desto besser. Also nur die permissions geben, welche wirklich notwendig sind!

Add a permission!

Microsoft Graph nehmen wir hier natürlich

Da wir das Skript auch ohne angemeldeten User ausführen möchten, müssen wir hier die Application permissions auswählen.
Doch was ist genau der Unterschied? <- Gerne hier im Beitrag nachlesen

Hier müssen wir noch als Administrator die Berechtigungen geben.

Doch wie können wir nun die konfigurierte Applikation nutzen?
Es gibt 3 Wege, 2 werde ich hier demonstrieren:
Zertifikatsbasierte Anmeldung und ein client secret.
In der Regel empfehle ich die Zertifikatsbasierte Anmeldung für jegliche Skripte.
Wenn ein Skript entwendet wird, kann eine Zertifikatsbasierte Anwendung den Angreifer davon abholten die Applikation zu nutzen, bei einem client secret, kann ein Angreifer das Secret entwenden und ohne weiteres die Applikation nutzen.
Wenn das Zertifikat entwendet wird, dann ist auch hier eine Anwendung der Applikation möglich.
Daher gilt: Für Automatisierungen Zertifikatsbasiertes anmelden, für manuelles ausführen kann man ein client secret nutzen, welches sich in einer geschützten Passwort Datenbank befindet, KeePass oder sonstige Tools.
Zertifikatsbasiertes anmelden
Wir benötigen ein selbstsigniertes Zertifikat, welches wir mithilfe von PowerShell erstellen:
$certname = "{certificateName}" ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256
Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer" ## Specify your preferred location

Zertifikat hochladen
Nun benötigen wir noch die TenantID, ObjectID (ApplicationID) und das Thumbprint des Zertifikats
Beim Skript nun folgendes ausführen:
Connect-MgGraph -ClientId "YOUR_APP_ID" -TenantId "YOUR_TENANT_ID" -CertificateName "YOUR_CERT_SUBJECT"
Für die Secret Authentifizierung nutzen wir folgendes Skript:
# Define the Application (Client) ID and Secret
$ApplicationClientId = '<application(client)ID>' # Application (Client) ID
$ApplicationClientSecret = '<secret.value>' # Application Secret Value
$TenantId = 'Tenant_Id' # Tenant ID
# Convert the Client Secret to a Secure String
$SecureClientSecret = ConvertTo-SecureString -String $ApplicationClientSecret -AsPlainText -Force
# Create a PSCredential Object Using the Client ID and Secure Client Secret
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ApplicationClientId, $SecureClientSecret
# Connect to Microsoft Graph Using the Tenant ID and Client Secret Credential
Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $ClientSecretCredential
Schreibe einen Kommentar