בדיקת יומני כניסה של משתמשים ב- Azure AD (Microsoft 365)


במאמר זה, נראה לך כיצד לקבל את תאריך הכניסה האחרון ואת פעילות הכניסה של משתמשי Azure Active Directory שלך, לייצא ולנתח יומני כניסה וביקורת של Azure בדייר Microsoft שלך באמצעות PowerShell (באמצעות מודול AzureADPreview או Microsoft Graph API).

הדרך הקלה ביותר להציג יומני פעילות של משתמשים היא להשתמש בפורטל Azure. פתח https://portal.azure.com -> Azure AD -> משתמשים -> בחר משתמש -> יומני כניסה. היסטוריית הכניסה של המשתמש מוצגת בטבלה הבאה.

אתה יכול לקבל את תאריך הכניסה האחרון של המשתמש, את מערכת ההפעלה במכשיר משתמש, מיקום, סוכן משתמש וכו '. ניתן להגדיר מסננים לפי פרמטרים שונים, להוסיף/להסיר עמודות או לייצא נתונים לקובץ CSV.

עם זאת, אם ברצונך לקבל את פעילות הכניסה עבור משתמשים מרובים או כולם, יהיה עליך להשתמש PowerShell. קיימות שתי דרכים לקבלת גישה ליומני כניסה של משתמשים ב- Azure.

כיצד לקבל היסטוריית כניסות משתמשים ב- Azure AD באמצעות Microsoft Graph API?

בוא ננסה להשיג יומני כניסה של משתמשים באמצעות Microsoft Graph API. התחבר לדייר Azure באמצעות Microsoft Graph API.

הענק את הרשאות ה- API הבאות ליישום Azure שבו אתה משתמש כדי להתחבר באמצעות ה- API של Microsoft Graph: AuditLog.Read.All ו- 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_token

לאחר קבלת אסימון, באפשרותך להתחבר ל- API של REST כדי לקבל מידע אודות פעילות הכניסה של המשתמש:

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

ודא שבאפשרותך לקבל נתונים אודות אירועי אימות משתמשים ב- Azure:

שים לב שה- API של Microsoft Graph יכול להחזיר עד 1,000 אובייקטים בכל פעם. ניתן להשתמש בקידוד כדי לחלק לעמודים את התוצאות ולעבד אובייקטים מרובים בלולאה באמצעות

@odata.nextLink

באפשרותך להשתמש ב- Azure Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) כדי לבחור את שמות העמודות (תכונות אובייקט) שברצונך לראות בדוח היסטוריית כניסת המשתמש. לדוגמה, ברצוני לראות את המידע אודות משתמש, מערכת הפעלה, אפליקציית Azure/Microsoft 365 המשמשת לחיבור ולמיקום בדוח (אלה הן העמודות הבאות:

userDisplayName

,

userPrincipalName

,

appDisplayName

,

location

,

ipAddress

,

clientAppUsed

,

deviceDetail

,

createdDateTime

).

בדוגמה זו, ברצוני לקבל דוח פעילות משתמשים של Azure עבור 90 הימים האחרונים:

$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
}

כדי לייצא את התוצאה לקובץ CSV, הפעל את הפקודה הבאה:

$alluserhistory| Export-Csv "C:\PS\azure_signin_logs.csv" -NoTypeInformation

קובץ ה- CSV מכיל מידע על כל פעילויות המשתמש: מאילו מכשירים ומיקומים הוא התחבר, באילו אפליקציות של Microsoft הוא השתמש. באפשרותך להוסיף שדות אחרים במידת הצורך.

כדי לקבל את תאריך הכניסה האחרון עבור כל משתמש AAD ברשימה, הפעל פקודה זו:

$alluserhistory| Group-Object UPN |%{ $_.Group | Select UPN,Date -First 1}

באפשרותך למצוא את כל משתמשי Azure הלא פעילים למשך פרק הזמן שצוין. לשם כך, קבל רשימה מלאה של משתמשים UserPrincipalNames (UPN) ב- Azure באמצעות Graph API והשווה אותה לרשימת המשתמשים שאומתו ב- Azure עבור 90 הימים האחרונים שיצרת קודם לכן.

$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 -Unique

אז אתה רק צריך להשוות בין שתי הרשימות. לכן, באמצעות קובץ script של PowerShell תוכל למצוא משתמשים לא פעילים ולהסיר רשיונות Microsoft 365/Azure AD שאינם בשימוש.

ייצוא יומני כניסה של משתמשים של Azure AD באמצעות ה- cmdlet Get-AzureADAuditSignInLogs

באפשרותך להשתמש ב- cmdlet Get-AzureADAuditSignInLogs מהמודול AzureADPreview PowerShell כדי לקבל ולייצא יומני ביקורת כניסה של Azure AD/Microsoft 365. מסיבה כלשהי, אין cmdlet כזה במודול AzureAD for PowerShell האחרון (ככל הנראה, מיקרוסופט חושבת שה- API של Graph מספיק לנו).

Install the AzureADPreview module to your computer:
Install-Module AzureADPreview -AllowClobber

התחבר לדייר Azure שלך באמצעות AzureADPreview:

AzureADPreview\Connect-AzureAD

הפקודה הבאה תחזיר מידע אודות 10 אירועי הכניסה האחרונים של משתמשים ל- Azure וליישומי Microsoft 365:

Get-AzureADAuditSignInLogs -Filter "UserPrincipalName eq 'maxbak@a-d.onmicrosoft.com'" -Top 10 | select CreatedDateTime, UserPrincipalName, IsInteractive, AppDisplayName, IpAddress, TokenIssuerType, @{Name = 'DeviceOS'; Expression = {$_.DeviceDetail.OperatingSystem}}|ft

באפשרותך להציג נתונים סטטיסטיים על כניסות משתמשים ל- Azure בשלושת הימים האחרונים ולייצא אותם לקובץ CSV:

$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" -NoTypeInformation

באפשרותך לאסוף נתוני היסטוריית כניסה של משתמשים עבור תחום Active Directory המקומי מיומני אבטחה של בקר תחום.