Microsoft hat die Verbindungsmöglichkeit zum Compliance Center mit App-based Authentication erweitert. Damit kann eine Anmeldung von Username + Passwort auf AppID + Zertifikat ersetzt werden.
Mit App-based Authentication wird bei PowerShell statt Username + Passwort für die Anmeldung eine Azure AD App + Zertifikat (oder Client Secret) eingesetzt. Mit der Anmeldeart könnten automatisierte Konten (Service Accounts) ebenfalls für Multi-Faktor Authentifizierung eingerichtet sein.
PowerShell unterstützt die Verbindung zu Exchange Online über App-based Authentication bereits länger. Für die Verbindung zum Compliance Center war weiterhin Username + Passwort erforderlich. Heute kann es für die Verbindung zum Compliance Center eine Mischung geben.
# Connect to Exchange Online (App-based Authentication)
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -AppID "<AppID>" -CertificateThumbPrint "<CertificateThumbPrint>" -Organization "<Tenantname>.onmicrosoft.com"
# Connect to Compliance Center (with Username + Password)
$UserCredential = Get-Credential
Connect-IPPSSession -Credential $UserCredential
Im Preview Release des Exchange Online PowerShell Moduls hat Microsoft dem Command Connect-IPPSSession die Möglichkeit von App-based Authentication hinzugefügt. Damit kann die Anmeldung statt über Username + Passwort mit AppID + Zertifikat erfolgen. Wie App-based Authentication für das Exchange Online PowerShell Modul eingerichtet wird beschreibt eine Schritt für Schritt Anleitung.
Es sind 7 Schritt erforderlich:
- Registrieren von einer Azure AD App Application
- Zuweisungen von API Berechtigungen
- Erstellung von selbstsigniertem Zertifikat
- Das Zertifikat der Azure AD App zuweisen
- Zuweisung von Berechtigungsrollen zu der App
- Exchange Online PowerShell Modul aktualisieren
- Verbindung über App-based Authentication herstellen
Schritt 1: Zur Demo erstellte ich mir eine neue Azure AD App.
Schritt 2: Laut Anleitung weise ich der App die Berechtigungen für Exchange.ManageAsApp zu.
Schritt 3: Es wird lokal am Client ein selbstsigniertes Zertifikat erstellt und das Zertifikat in passende Formate exportiert.
$mycert = New-SelfSignedCertificate -DnsName "demo1.tam365.com" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) -KeySpec KeyExchange
$mycert | Export-PfxCertificate -FilePath "C:\Temp\mycert.pfx" -Password $(ConvertTo-SecureString -String "<Password>" -AsPlainText -Force)
$mycert | Export-Certificate -FilePath "C:\Temp\mycert.cer"
Schritt 4: Das öffentliche Zertifikat wird in die Azure AD App hochgeladen.
Schritt 5: Zuweisung einer unterstützten Admin-Rolle für die Azure AD App. Ich weise meiner “Exchange Online and Compliance Center” App die Compliance Admin Rolle zu.
Schritt 6: Damit Import-PSSession App-based Authentication unterstützt muss das Modul für Exchange Online PowerShell 2.0.6 Preview oder höher installiert sein. Da es sich um ein Pre-release Modul handelt ist beim Update der Parameter AllowPrerelease zu ergänzen.
Update-Module ExchangeOnlineManagement -AllowPrerelease
Schritt 7: Danach ist die Verbindung über die Azure AD App und Zertifikat möglich.
Import-Module ExchangeOnlineManagement
Connect-ExchangeOnline -AppID "<AppID>" -CertificateThumbPrint "<CertificateThumbPrint>" -Organization "<Tenantname>.onmicrosoft.com"
Connect-IPPSSession -AppID "<AppID>" -CertificateThumbPrint "<CertificateThumbPrint>" -Organization "<Tenantname>.onmicrosoft.com"
Wurden die Schritte 1 – 5 fehlerfrei durchgeführt sollte PowerShell die Verbindung erfolgreich herstellen. Jetzt ist die normale Ausführung vom Compliance Commands möglich. So ist es mir möglich die vor wenigen Tagen getesteten Adaptive Scopes für Information Governance via PowerShell zu bearbeiten und Retention Policies abzufragen.