Gráfico práctico: cómo eliminar de forma masiva cuentas de Entra ID
Encontrar y eliminar grandes cantidades de cuentas de Azure AD
Después de cubrir temas como cómo crear cuentas de Azure AD, deberíamos considerar la cuestión de cómo eliminar de forma masiva cuentas de Azure AD en el otro extremo de su ciclo de vida. No vale la pena discutir la eliminación de una sola cuenta porque es muy fácil de hacer a través del centro de administración de Microsoft 365, el centro de administración de Microsoft Entra o el cmdlet Remove-MgUser en el SDK de Microsoft Graph PowerShell.
La eliminación masiva es más interesante. El centro de administración de Microsoft 365 y el centro de administración de Microsoft Entra admiten la capacidad de eliminar varias cuentas en una sola operación (Figura 1), y ese enfoque funciona para eliminar una cantidad relativamente pequeña de cuentas. Sin embargo, una vez que aumenta la cantidad de cuentas que se deben eliminar, un enfoque programático es más eficiente.
Encontrará muchos artículos que documentan solemnemente cómo leer los nombres de las cuentas para eliminarlas de un archivo CSV antes de llamar a un cmdlet desde los módulos AzureAD o MSOL, ambos en desuso, para eliminar las cuentas. La lectura de nombres y otra información de cuentas de un archivo CSV crea una serie de cuentas para su procesamiento. El punto que sostengo aquí es que existen métodos más interesantes para encontrar cuentas para su eliminación.
Eliminación de estudiantes al final del año académico
Tomemos, por ejemplo, la situación en la que se encuentran muchos establecimientos educativos al final del año académico. Muchas cuentas de estudiantes caducan cuando completan sus cursos y deben eliminarse para liberar licencias para tareas para los estudiantes entrantes. La primera cuestión es cómo identificar las cuentas relevantes.
En otro artículo, cubro cómo usar filtros para buscar cuentas de Azure AD con PowerShell. Entre los métodos se encuentra el uso de quince atributos de extensión personalizados de Exchange para almacenar información destinada a localizar cuentas. Para los estudiantes, puede utilizar atributos de extensión personalizados para almacenar lo siguiente para los estudiantes:
- Número de curso.
- Número de registro.
- Fecha de vencimiento del registro.
En este caso, usaremos un atributo de extensión personalizado que almacena la fecha de vencimiento del registro para buscar cuentas de estudiantes al final del año académico.
El cmdlet Get-ExoMailbox de Exchange Online es más flexible al comparar los datos contenidos en atributos personalizados. Este ejemplo muestra cómo crear una serie de cuentas de estudiantes que han transcurrido. En este caso, CustomAttribute1 almacena valores como 20230601 para representar el 1 de junio de 2023. Puede almacenar la información en otros formatos de fecha, pero esto es conveniente para el tipo de verificación que debemos realizar.
[string]$EndAcademicYear = (Get-Date -format yyyyMMdd)
[array]$StudentAccounts = Get-ExoMailbox -Filter "CustomAttribute1 -le '$EndAcademicYear'" -Properties CustomAttribute1
If (!($StudentAccounts)) { Write-Host "No expired student accounts found!" ; break }
Recuerde que Exchange Online devuelve información como el nombre principal del usuario y el identificador de la cuenta (en la propiedad ExternalDirectoryObjectId ) que se puede usar con los cmdlets del SDK de Microsoft Graph PowerShell para interactuar con las cuentas de usuario.
Eliminación de empleados temporales
Otro ejemplo en el que la eliminación masiva de cuentas podría ser necesaria es la eliminación de cuentas de empleados temporales después de que finalice su período de empleo contratado. Azure AD incluye algunas propiedades de cuenta útiles para guardar información de empleo, incluido el tipo de empleo.
Desafortunadamente, el cmdlet Get-MgUser no admite el filtrado según la propiedad EmployeeType, por lo que terminamos haciendo algo como esto para obtener información de la cuenta del usuario y procesarla para determinar si Los empleados temporales exceden su período de empleo de un año.
[datetime]$ExpirationDate = Get-Date
[array]$Employees = Get-MgUser -filter "userType eq 'Member' and EmployeeId ge ' '" -Property Id, displayname, userprincipalname, employeeid, employeehiredate, employeetype
If ($Employees) {
$Employees = $Employees | Where-Object {$_.EmployeeType -eq 'Temporary’}
} Else {
Write-Host "No employees found" ; break
}
$AccountsforDeletion = [System.Collections.Generic.List[Object]]::new()
ForEach ($Employee in $Employees) {
[datetime]$EmployeeExpirationDate = (Get-Date $Employee.EmployeeHireDate).AddDays(365)
If ($EmployeeExpirationDate -lt $ExpirationDate) {
$ReportLine = [PSCustomObject]@{
EmployeeUserId = $Employee.Id
EmployeeUPN = $Employee.UserPrincipalName
EmployeeId = $Employee.EmployeeId
EmployeeName = $Employee.displayName
EmployeeDate = $Employee.EmployeeHireDate
EmployeeType = $Employee.EmployeeType
ExpiryDate = $EmployeeExpirationDate }
$AccountsForDeletion.Add($ReportLine)
}
}
Entiendes la idea. Antes de que podamos eliminar cuentas de Azure AD de forma masiva, necesitamos conocer el conjunto de cuentas que deseamos eliminar y proporcionar esa información en un formato que PowerShell pueda procesar (una lista o matriz). Y antes de que se produzca cualquier eliminación, siempre es una buena idea que un par de ojos adicionales revisen el conjunto de cuentas para asegurarse de que está bien continuar.
Eliminación masiva de cuentas de Azure AD
Eliminar un conjunto de cuentas de Azure AD es cuestión de recorrer el conjunto y llamar a Remove-MgUser para eliminar cada cuenta. El único requisito previo es que el conjunto debe contener una propiedad que permita a Azure AD identificar cada cuenta. Puede ser el nombre principal de usuario de la cuenta o el identificador de objeto. En el caso de los empleados temporales, cada elemento del conjunto tiene este aspecto:
EmployeeUserId : 6fd89e40-665a-4efa-9691-da07849cae91
EmployeeUPN : Rene.Artois@office365itpros.com
EmployeeId : 111888
EmployeeName : Rene Artois
EmployeeDate : 08/03/2022 21:19:10
EmployeeType : Temporary
ExpiryDate : 08/03/2023 21:19:10
El código para eliminar las cuentas es muy sencillo:
ForEach ($Account in $AccountsForDeletion) {
Write-Host ("Deleting account {0}" -f $Account.EmployeeName
Remove-MgUser -UserId $Account.EmployeeUserId }
Tenga en cuenta que el cmdlet Remove-MgUser no requiere confirmación antes de eliminar una cuenta. Las cuentas eliminadas van a la papelera de reciclaje de cuentas de Azure AD y permanecen allí durante 30 días. Durante ese tiempo, puede restaurar una cuenta ejecutando el cmdlet Restore-MgDirectoryDeletedItem (consulte este artículo para obtener más información). Si desea eliminar permanentemente cuentas eliminadas de Azure AD antes de que finalice su período de retención de 30 días, puede hacerlo ejecutando el cmdlet Remove-MgDirectoryDeletedItem.
Retener datos
Las cuentas con licencias de Office 365 E3 pueden conservar el contenido del buzón y de OneDrive para la Empresa propiedad de cuentas eliminadas. El método más sencillo es implementar una política de retención general para que todas las cuentas conserven el contenido durante un período corto (digamos, seis meses). Una política de retención separada puede cubrir cuentas con requisitos de retención más urgentes, como ejecutivos o responsables de auditoría. Los principios de retención utilizados por Microsoft Purview significan que se aplica el período de retención más largo, por lo que los datos pertenecientes a una cuenta cubierta por múltiples políticas de retención permanecerán hasta que transcurra el período de retención más largo. Por lo tanto, es bastante seguro aplicar una política de retención con un período de retención corto como respaldo.
Algunos expertos recomiendan aplicar una retención por litigio a cada buzón antes de eliminar la cuenta de su propiedad. Una retención por litigio (o legal) tiene el mismo efecto que una directiva de retención en un buzón, pero ignora los demás datos personales almacenados en las cuentas de OneDrive para Empresas. En general, considero que una política de retención es la mejor opción.
La precisión del directorio es clave
Es fácil eliminar de forma masiva cuentas de Azure AD. La clave de la operación es poder identificar con precisión las cuentas objetivo. Azure AD debe contener información precisa antes de que funcionen los filtros. Si los datos de Azure AD no son exactos, también puede volver a utilizar un archivo CSV para impulsar las operaciones de eliminación masiva de cuentas. Por supuesto, no hay razón para suponer que el contenido de un archivo CSV sea exacto, pero al menos si no lo es, puedes culpar a quien haya creado el archivo.
Gestión de riesgos de ciberseguridad para Active Directory
Descubra cómo prevenir y recuperarse de ataques AD a través de estas soluciones de gestión de riesgos de ciberseguridad.
