Comprobación de los registros de inicio de sesión de usuario en Azure AD (Microsoft 365)
En este artículo, le mostraremos cómo obtener la última fecha de inicio de sesión y la actividad de inicio de sesión de sus usuarios de Azure Active Directory, exportar y analizar los registros de auditoría e inicio de sesión de Azure en su inquilino de Microsoft mediante PowerShell (con el módulo AzureADPreview o la API de Microsoft Graph).
La forma más fácil de ver los registros de actividad de los usuarios es usar Azure Portal. Abra https://portal.azure.com -> Azure AD -> Usuarios -> seleccione un usuario -> Registros de inicio de sesión. El historial de inicio de sesión del usuario se muestra en la siguiente tabla.
Puede obtener la fecha del último inicio de sesión del usuario, el sistema operativo en un dispositivo de usuario, la ubicación, el agente de usuario, etc. Puede configurar filtros por diferentes parámetros, agregar/eliminar columnas o exportar datos a un archivo CSV.
Sin embargo, si desea obtener la actividad de inicio de sesión para varios o todos los usuarios, deberá usar PowerShell. Hay dos formas de obtener acceso a los registros de inicio de sesión de los usuarios en Azure.
¿Cómo obtener el historial de inicio de sesión del usuario en Azure AD con la API de Microsoft Graph?
Intentemos obtener los registros de inicio de sesión de los usuarios mediante la API de Microsoft Graph. Conéctese a su arrendatario de Azure mediante la API de Microsoft Graph.
Otorgue los siguientes permisos de API a su aplicación de Azure que está utilizando para conectarse a través de la API de Microsoft Graph: AuditLog.Read.All y 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_tokenDespués de recibir un token, puede conectarse a la API REST para obtener información sobre la actividad de inicio de sesión del usuario:
$GraphSignInLogs = "https://graph.microsoft.com/v1.0/auditLogs/signIns"
(Invoke-RestMethod -Headers @{Authorization = "Bearer $($token)"} -Uri $GraphSignInLogs -Method Get).valueAsegúrese de que puede obtener datos sobre los eventos de autenticación de usuarios en Azure:
Tenga en cuenta que la API de Microsoft Graph puede devolver hasta 1000 objetos a la vez. Puede usar la paginación para paginar los resultados y procesar múltiples objetos en un bucle usando
@odata.nextLinkPuede usar Azure Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) para seleccionar los nombres de las columnas (atributos de objeto) que desea ver en el informe del historial de inicio de sesión del usuario. Por ejemplo, quiero ver la información sobre un usuario, sistema operativo, aplicación Azure/Microsoft 365 utilizada para la conexión y ubicación en el informe (estas son las siguientes columnas:
userDisplayName,
userPrincipalName,
appDisplayName
,
location,
ipAddress,
clientAppUsed,
deviceDetail,
createdDateTime).
En este ejemplo, quiero obtener un informe de actividad de usuario de Azure de los últimos 90 días:
$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
}Para exportar el resultado a un archivo CSV, ejecute el siguiente comando:
$alluserhistory| Export-Csv "C:\PS\azure_signin_logs.csv" -NoTypeInformationEl archivo CSV contiene información sobre todas las actividades de los usuarios: desde qué dispositivos y ubicaciones iniciaron sesión, qué aplicaciones de Microsoft usaron. Puede agregar cualquier otro campo si es necesario.
Para obtener la última fecha de inicio de sesión de cada usuario de AAD de la lista, ejecute este comando:
$alluserhistory| Group-Object UPN |%{ $_.Group | Select UPN,Date -First 1}Puede encontrar todos los usuarios de Azure inactivos durante el período de tiempo especificado. Para hacerlo, obtenga una lista completa de UserPrincipalNames (UPN) de usuario en Azure mediante Graph API y compárela con la lista de usuarios autenticados en Azure durante los últimos 90 días que generó anteriormente.
$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 -UniqueEntonces solo tienes que comparar las dos listas. Por lo tanto, al usar un script de PowerShell, puede encontrar usuarios inactivos y eliminar las licencias de Microsoft 365/Azure AD que no se usan.
Exportar registros de inicio de sesión de usuario de Azure AD mediante el cmdlet Get-AzureADAuditSignInLogs
Puede usar el cmdlet Get-AzureADAuditSignInLogs del módulo AzureADPreview PowerShell para obtener y exportar registros de auditoría de inicio de sesión de Azure AD/Microsoft 365. Por alguna razón, no existe tal cmdlet en el último módulo de AzureAD para PowerShell (aparentemente, Microsoft cree que Graph API es suficiente para nosotros).
Install the AzureADPreview module to your computer:
Install-Module AzureADPreview -AllowClobberConéctese a su arrendatario de Azure mediante AzureADPreview:
AzureADPreview\Connect-AzureADEl siguiente comando devolverá información sobre los últimos 10 eventos de inicio de sesión de usuario en las aplicaciones de Azure y 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}}|ftPuede mostrar estadísticas sobre los inicios de sesión de los usuarios en Azure durante los últimos 3 días y exportarlas a un archivo 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" -NoTypeInformationPuede recopilar datos del historial de inicio de sesión del usuario para el dominio de Active Directory local desde los registros de seguridad del controlador de dominio.






