Azure AD'de Kullanıcı Oturum Açma Günlüklerini Kontrol Etme (Microsoft 365)
Bu makalede, Azure Active Directory kullanıcılarınızın son oturum açma tarihini ve oturum açma etkinliğini nasıl alacağınızı, Azure oturum açma ve denetim günlüklerini PowerShell kullanarak (AzureADPreview modülü veya Microsoft Grafik API'si).
Kullanıcı etkinliği günlüklerini görüntülemenin en kolay yolu Azure portalını kullanmaktır. https://portal.azure.com -> Azure AD -> Kullanıcılar -> bir kullanıcı seçin -> Oturum açma günlüklerini açın. Kullanıcı oturum açma geçmişi aşağıdaki tabloda gösterilmektedir.
Kullanıcının son oturum açma tarihini, kullanıcı cihazındaki işletim sistemini, konumu, kullanıcı aracısını vb. öğrenebilirsiniz. Filtreleri farklı parametrelere göre yapılandırabilir, sütun ekleyebilir/kaldırabilir veya verileri bir CSV dosyasına aktarabilirsiniz.
Ancak birden fazla veya tüm kullanıcılar için oturum açma etkinliğini almak istiyorsanız PowerShell kullanmanız gerekir. Azure'da kullanıcı oturum açma günlüklerine erişmenin iki yolu vardır.
Microsoft Graph API Kullanarak Azure AD'de Kullanıcı Oturum Açma Geçmişi Nasıl Alınır?
Microsoft Graph API kullanarak kullanıcı oturum açma günlüklerini almaya çalışalım. Microsoft Graph API kullanarak Azure kiracınıza bağlanın.
Microsoft Graph API aracılığıyla bağlanmak için kullandığınız Azure uygulamanıza şu API izinlerini verin: AuditLog.Read.All ve 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_tokenBir jeton aldıktan sonra, kullanıcı oturum açma etkinliği hakkında bilgi almak için REST API'ye bağlanabilirsiniz:
$GraphSignInLogs = "https://graph.microsoft.com/v1.0/auditLogs/signIns"
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GraphSignInLogs -Method Get).valueAzure'da kullanıcı kimlik doğrulama olayları hakkında veri alabildiğinizden emin olun:
Microsoft Graph API'nin bir seferde en fazla 1.000 nesne döndürebileceğini unutmayın. Sonuçları sayfalandırmak ve kullanarak bir döngüde birden çok nesneyi işlemek için sayfalamayı kullanabilirsiniz.
@odata.nextLinkKullanıcı oturum açma geçmişi raporunda görmek istediğiniz sütun adlarını (nesne öznitelikleri) seçmek için Azure Grafik Gezgini'ni (https://developer.microsoft.com/en-us/graph/graph-explorer) kullanabilirsiniz. Örneğin, bir kullanıcı, işletim sistemi, bağlantı için kullanılan Azure/Microsoft 365 uygulaması ve konum bilgilerini raporda görmek istiyorum (bunlar aşağıdaki sütunlardır:
userDisplayName,
userPrincipalName,
appDisplayName
,
location,
ipAddress,
clientAppUsed,
deviceDetail,
createdDateTime).
Bu örnekte, son 90 gün için bir Azure kullanıcı etkinliği raporu almak istiyorum:
$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
}Sonucu bir CSV dosyasına aktarmak için aşağıdaki komutu çalıştırın:
$alluserhistory| Export-Csv "C:\PS\azure_signin_logs.csv" -NoTypeInformationCSV dosyası, tüm kullanıcı etkinlikleri hakkında bilgiler içerir: hangi cihazlardan ve konumlardan oturum açtıkları, hangi Microsoft uygulamalarını kullandıkları. Gerekirse başka alanlar da ekleyebilirsiniz.
Listedeki her AAD kullanıcısının son oturum açma tarihini almak için şu komutu çalıştırın:
$alluserhistory| Group-Object UPN |%{ $_.Group | Select UPN,Date -First 1}Belirtilen süre boyunca etkin olmayan tüm Azure kullanıcılarını bulabilirsiniz. Bunu yapmak için, Graph API'yi kullanarak Azure'daki UserPrincipalNames (UPN'ler) kullanıcılarının tam listesini alın ve daha önce oluşturduğunuz son 90 gün için Azure'da kimliği doğrulanmış kullanıcıların listesiyle karşılaştırın.
$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 -UniqueO zaman sadece iki listeyi karşılaştırmanız gerekir. Böylece, bir PowerShell betiği kullanarak etkin olmayan kullanıcıları bulabilir ve kullanılmayan Microsoft 365/Azure AD lisanslarını kaldırabilirsiniz.
Get-AzureADAuditSignInLogs Cmdlet'ini Kullanarak Azure AD Kullanıcı Oturum Açma Günlüklerini Dışa Aktarma
Azure AD/Microsoft 365 oturum açma denetim günlüklerini almak ve dışa aktarmak için AzureADPreview PowerShell modülünden Get-AzureADAuditSignInLogs cmdlet'ini kullanabilirsiniz. Nedense en son AzureAD for PowerShell modülünde böyle bir cmdlet yok (görünüşe göre Microsoft, Graph API'nin bizim için yeterli olduğunu düşünüyor).
Install the AzureADPreview module to your computer:
Install-Module AzureADPreview -AllowClobberAzureADPreview kullanarak Azure kiracınıza bağlanın:
AzureADPreview\Connect-AzureADAşağıdaki komut, son 10 kullanıcı oturum açma olayıyla ilgili bilgileri Azure ve Microsoft 365 uygulamalarına döndürür:
Get-AzureADAuditSignInLogs -Filter "UserPrincipalName eq 'maxbak@a-d.onmicrosoft.com'" -Top 10 | select CreatedDateTime, UserPrincipalName, IsInteractive, AppDisplayName, IpAddress, TokenIssuerType, @{Name = 'DeviceOS'; Expression = {$_.DeviceDetail.OperatingSystem}}|ftSon 3 gün için Azure'da kullanıcı oturum açma istatistikleri görüntüleyebilir ve bunları bir CSV dosyasına aktarabilirsiniz:
$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Şirket içi Active Directory etki alanı için kullanıcı oturum açma geçmişi verilerini etki alanı denetleyicisi güvenlik günlüklerinden toplayabilirsiniz.






