Überprüfen von Benutzeranmeldeprotokollen in Azure AD (Microsoft 365)
In diesem Artikel zeigen wir Ihnen, wie Sie das letzte Anmeldedatum und die Anmeldeaktivität Ihrer Azure Active Directory-Benutzer abrufen, Azure-Anmelde- und Überwachungsprotokolle in Ihrem Microsoft-Mandanten mithilfe von PowerShell (mit dem AzureADPreview-Modul oder) exportieren und analysieren Microsoft Graph-API).
Die einfachste Möglichkeit, Benutzeraktivitätsprotokolle anzuzeigen, ist die Verwendung des Azure-Portals. Öffnen Sie https://portal.azure.com -> Azure AD -> Benutzer -> Benutzer auswählen -> Anmeldeprotokolle. Der Benutzeranmeldeverlauf wird in der folgenden Tabelle angezeigt.
Sie können das letzte Anmeldedatum des Benutzers, das Betriebssystem auf einem Benutzergerät, den Standort, den Benutzeragenten usw. abrufen. Sie können Filter nach verschiedenen Parametern konfigurieren, Spalten hinzufügen/entfernen oder Daten in eine CSV-Datei exportieren.
Wenn Sie jedoch die Anmeldeaktivität für mehrere oder alle Benutzer erhalten möchten, müssen Sie PowerShell verwenden. Es gibt zwei Möglichkeiten, Zugriff auf Benutzeranmeldeprotokolle in Azure zu erhalten.
Wie erhalte ich den Benutzeranmeldeverlauf in Azure AD mithilfe der Microsoft Graph-API?
Versuchen wir, Benutzeranmeldeprotokolle mithilfe der Microsoft Graph-API abzurufen. Stellen Sie mithilfe der Microsoft Graph-API eine Verbindung zu Ihrem Azure-Mandanten her.
Gewähren Sie Ihrer Azure-Anwendung, die Sie zum Herstellen einer Verbindung über die Microsoft Graph-API verwenden, die folgenden API-Berechtigungen: AuditLog.Read.All und Directory.Read.All.
$ApplicationID = "4434ad23-b212-3212-3aad-54321de3bbc"
$TenatDomainName = "26216542-aaaa-bbbb-2212-65566aa6c32"
$AccessSecret="12-32Bh654321d3-seLa23l33p.hhj33MM21aaf"
$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_tokenNachdem Sie ein Token erhalten haben, können Sie eine Verbindung zur REST-API herstellen, um Informationen zur Benutzeranmeldeaktivität zu erhalten:
$GraphSignInLogs = "https://graph.microsoft.com/v1.0/auditLogs/signIns"
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GraphSignInLogs -Method Get).valueStellen Sie sicher, dass Sie Daten zu Benutzerauthentifizierungsereignissen in Azure abrufen können:
Beachten Sie, dass die Microsoft Graph-API bis zu 1.000 Objekte gleichzeitig zurückgeben kann. Mithilfe von Paging können Sie die Ergebnisse paginieren und mehrere Objekte in einer Schleife verarbeiten
@odata.nextLinkSie können den Azure Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) verwenden, um die Namen der Spalten (Objektattribute) auszuwählen, die Sie im Bericht zum Benutzeranmeldeverlauf sehen möchten. Ich möchte beispielsweise die Informationen zu einem Benutzer, einem Betriebssystem, einer für die Verbindung verwendeten Azure/Microsoft 365-App und einem Standort im Bericht sehen (dies sind die folgenden Spalten:
userDisplayName,
userPrincipalName,
appDisplayName
,
location,
ipAddress,
clientAppUsed,
deviceDetail,
createdDateTime).
In diesem Beispiel möchte ich einen Azure-Benutzeraktivitätsbericht für die letzten 90 Tage erhalten:
$SetDate = (Get-Date).AddDays(-90)
$SetDate = Get-Date($SetDate) -format yyyy-MM-dd
$GraphSignInLogs = "https://graph.microsoft.com/v1.0/auditLogs/signIns"
$result = (Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GraphSignInLogs -Method Get).value | Select-Object userDisplayName, userPrincipalName, appDisplayName, ipAddress, clientAppUsed, deviceDetail, location,createdDateTime | Where-Object {$_.createdDateTime -gt $SetDate }
$alluserhistory = @()
foreach ($resitem in $result){
$userhistory = New-Object PSObject -Property @{
User=$resitem.userDisplayName
UPN=$resitem.userPrincipalName
AzureAppUsed =$resitem.appDisplayName
UserApp =$resitem.clientAppUsed
IP=$resitem.ipAddress
Date=$resitem.createdDateTime
OS=($resitem.deviceDetail).operatingSystem
browser=($resitem.deviceDetail).browser
City=($resitem.location).city
Country=($resitem.location).countryOrRegion
}
$alluserhistory += $userhistory
}Um das Ergebnis in eine CSV-Datei zu exportieren, führen Sie den folgenden Befehl aus:
$alluserhistory| Export-Csv "C:\PS\azure_signin_logs.csv" -NoTypeInformationDie CSV-Datei enthält Informationen zu allen Benutzeraktivitäten: von welchen Geräten und Standorten aus sie sich angemeldet haben, welche Microsoft-Apps sie verwendet haben. Bei Bedarf können Sie weitere Felder hinzufügen.
Führen Sie diesen Befehl aus, um das letzte Anmeldedatum für jeden AAD-Benutzer in der Liste abzurufen:
$alluserhistory| Group-Object UPN |%{ $_.Group | Select UPN,Date -First 1}Sie können alle inaktiven Azure-Benutzer für den angegebenen Zeitraum finden. Rufen Sie dazu mithilfe der Graph-API eine vollständige Liste der UserPrincipalNames (UPNs) der Benutzer in Azure ab und vergleichen Sie diese mit der zuvor erstellten Liste der in Azure authentifizierten Benutzer der letzten 90 Tage.
$GrapUserUrl = 'https://graph.microsoft.com/v1.0/users'
$allusers=(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GrapUserUrl -Method Get).value
$allusers = $allusers | Select-Object @{Name="UPN"; Expression = {$_.userprincipalname.ToLower()}}
$activeusers = $alluserhistory|select UPN -UniqueDann müssen Sie nur noch die beiden Listen vergleichen. So können Sie mithilfe eines PowerShell-Skripts inaktive Benutzer finden und ungenutzte Microsoft 365/Azure AD-Lizenzen entfernen.
Exportieren Sie Azure AD-Benutzeranmeldeprotokolle mit dem Cmdlet Get-AzureADAuditSignInLogs
Sie können das Cmdlet Get-AzureADAuditSignInLogs aus dem PowerShell-Modul AzureADPreview verwenden, um Azure AD-/Microsoft 365-Anmeldeüberwachungsprotokolle abzurufen und zu exportieren. Aus irgendeinem Grund gibt es im neuesten AzureAD für PowerShell-Modul kein solches Cmdlet (anscheinend ist Microsoft der Meinung, dass die Graph-API für uns ausreicht).
Install the AzureADPreview module to your computer:
Install-Module AzureADPreview -AllowClobberStellen Sie mithilfe von AzureADPreview eine Verbindung zu Ihrem Azure-Mandanten her:
AzureADPreview\Connect-AzureADDer folgende Befehl gibt Informationen zu den letzten 10 Benutzeranmeldeereignissen bei Azure- und Microsoft 365-Apps zurück:
Get-AzureADAuditSignInLogs -Filter "UserPrincipalName eq 'maxbak@a-d.onmicrosoft.com'" -Top 10 | select CreatedDateTime, UserPrincipalName, IsInteractive, AppDisplayName, IpAddress, TokenIssuerType, @{Name = 'DeviceOS'; Expression = {$_.DeviceDetail.OperatingSystem}}|ftSie können Statistiken zu Benutzeranmeldungen bei Azure für die letzten 3 Tage anzeigen und diese in eine CSV-Datei exportieren:
$SetDate = (Get-Date).AddDays(-3);
$SetDate = Get-Date($SetDate) -format yyyy-MM-dd
$array = Get-AzureADAuditSignInLogs -Filter "createdDateTime gt $SetDate" | select userDisplayName, userPrincipalName, appDisplayName, ipAddress, clientAppUsed, @{Name = 'DeviceOS'; Expression = {$_.DeviceDetail.OperatingSystem}},@{Name = 'Location'; Expression = {$_.Location.City}}
$array | Export-Csv "C:\PS\AzureUserSigninLogs.csv" -NoTypeInformationSie können Benutzeranmeldeverlaufsdaten für die lokale Active Directory-Domäne aus Sicherheitsprotokollen des Domänencontrollers erfassen.






