Cree un informe de usuario inactivo de M365 con Microsoft Graph PowerShell
Con muchos usuarios en su inquilino de Microsoft 365, es difícil simplemente echar un vistazo a su lista de usuarios para determinar si es precisa o no. Además de esto, debe asegurarse de que no se le facture de más y de que no sea susceptible a un riesgo adicional de verse comprometido por tener cuentas inactivas y disponibles todavía en su inquilino.
En este tutorial, le mostraré cómo usar Microsoft Graph PowerShell para exportar una lista de usuarios activos e inactivos en su inquilino. Luego puede utilizar esta información para borrar cuentas de usuario inactivas.
Requisitos previos
Para generar el informe de usuario inactivo de Microsoft 365 en este tutorial, debe asegurarse de tener instalados los módulos Beta de Microsoft Graph PowerShell. Consulte mi tutorial aquí: Cómo instalar el módulo Microsoft Graph PowerShell que detalla cómo instalar y actualizar los módulos Microsoft Graph PowerShell.
Además de esto, para otorgar consentimiento a los permisos de Microsoft Graph API en Microsoft Entra, deberá iniciar sesión de forma interactiva al inicio del script con una cuenta de administrador global. Una vez hecho esto, puede reducir los permisos de la cuenta utilizada para iniciar sesión.
Los permisos que otorgará a la aplicación Microsoft Graph Command Line Tools son:
- Usuario.Leer.Todo
- Registro de auditoría.Leer.Todo
Script de informe de usuario de M365 inactivo
Para usar el script, recomiendo colocar el cursor sobre el script a continuación y usar la función de copia en la parte superior derecha. Luego pegue el script en su IDE, PowerShell ISE o Bloc de notas y asegúrese de comprender lo que está haciendo. Cuando esté satisfecho, ejecútelo desde PowerShell ISE o péguelo en su sesión de PowerShell.
Importante: comprenda siempre a fondo qué hace un script antes de ejecutarlo en su entorno. Incluso si no realiza ningún cambio, a menudo es beneficioso alertar a su equipo de seguridad para informarle sobre las posibles alertas que generará la ejecución de un script.
El script primero reunirá a todos los usuarios de su inquilino con el cmdlet Get-MgBetaUser. Luego recorrerá cada usuario para obtener su información básica, incluida la actividad de inicio de sesión y las asignaciones de licencia, luego generará un nuevo objeto de PowerShell con esta información y lo agregará al informe. Luego, el informe se exportará como un archivo CSV a C:\temp\ donde podrá filtrar y ordenar las columnas de actividad de LastSignIn para lograr el resultado.
<#
AUTHOR: Daniel Bradley
LINKEDIN: https://www.linkedin.com/in/danielbradley2/
TWITTER: https://twitter.com/DanielatOCN
WEBSITE: https://ourcloudnetwork.com/
Info: This script was written by Daniel Bradley for the ourcloudnetwork.com blog
#>
#Connect to Microsoft Graph
Connect-MgGraph -scope User.Read.All, AuditLog.read.All
#Gather all users in tenant
$AllUsers = Get-MgBetaUser -All -Property signinactivity
#Create a new empty array list object
$Report = [System.Collections.Generic.List[Object]]::new()
Foreach ($user in $AllUsers)
{
#Null variables
$SignInActivity = $null
$Licenses = $null
#Display progress output
Write-host "Gathering sign-in information for $($user.DisplayName)" -ForegroundColor Cyan
#Get current user information
$licenses = (Get-MgBetaUserLicenseDetail -UserId $User.id).SkuPartNumber -join ", "
#Create informational object to add to report
$obj = [pscustomobject][ordered]@{
DisplayName = $user.DisplayName
UserPrincipalName = $user.UserPrincipalName
Licenses = $licenses
LastInteractiveSignIn = $User.SignInActivity.LastSignInDateTime
LastNonInteractiveSignin = $User.SignInActivity.LastNonInteractiveSignInDateTime
LastSuccessfullSignInDate = $User.SignInActivity.AdditionalProperties.lastSuccessfulSignInDateTime
}
#Add current user info to report
$report.Add($obj)
}
$report | Export-CSV -path C:\temp\Microsoft365_User_Activity-Report.csv -NoTypeInformation
Resumen
Aunque con un proceso de incorporación y baja eficiente, esta toma puede no ser necesaria. Sin embargo, a medida que pasa el tiempo, las cuentas pueden quedar atrás y es posible que te sorprendas de lo que encuentres.
Los usuarios inactivos y con licencia son costosos; varios usuarios con licencias costosas pueden fácilmente acumular cientos de libras al mes en gastos desperdiciados. Microsoft no realizará esta diligencia debida por usted, por lo que deberá hacerlo usted mismo.
Además del costo, las cuentas de usuario inactivas son solo otro vector de compromiso o abuso para obtener acceso a su inquilino. Muchas veces en el pasado he visto inquilinos mal configurados, sólo para notar una infracción debido al impacto de la capacidad de trabajo de un usuario, lo que a menudo sólo ocurre cuando el atacante ha agotado lo que puede robar de la organización y ha decidido provocar estragos. . Si un usuario inactivo se ve comprometido, podría pasar desapercibido durante un período más largo, en comparación con un usuario activo.