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

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

shibiadmin
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.