Office 365 : obtenir le statut du MFA avec PowerShell
I. Présentation
Dans ce tutoriel, nous allons apprendre à obtenir le statut du MFA (authentification forte) sur les comptes utilisateurs Office 365 avec PowerShell.
Précédemment, nous avons vu comment mettre en place le MFA sur Office 365 et comment l'activer sur les utilisateurs à partir de l'interface graphique.
Pour obtenir le statut du MFA sur les utilisateurs, c'est-à-dire pour savoir s'il est actif ou non et visualiser le second facteur actif, nous allons utiliser le module MSOnline. Même si ce module est plutôt en fin de vie, il reste d'actualité pour manipuler le MFA dans le sens où le module Microsoft Graph ne permet pas, à ce jour, de gérer le MFA. Enfin, en tout cas je n'ai pas trouvé la solution de mon côté...
II. Obtenir le statut du MFA avec PowerShell
Ouvrez une console Windows PowerShell et exécutez la commande ci-dessous pour établir une connexion à Office 365 (le module MSOnline doit être présent sur votre machine).
Connect-MsolService
Une fenêtre va s'ouvrir, authentifiez-vous. Pour obtenir le statut du MFA pour un utilisateur, il faut regarder la propriété "StrongAuthenticationMethods" de son compte via la commande Get-MsolUser.
On va commencer par stocker les informations dans une variable, en spécifiant l'identifiant de l'utilisateur :
$User = Get-MSolUser -UserPrincipalName [email protected]
Puis, nous allons pouvoir afficher l'état du MFA sur ce compte :
$User.StrongAuthenticationMethods
Si la commande ci-dessus ne retourne aucun résultat, c'est que le MFA est désactivé sur cet utilisateur ou qu'il est activé mais pas encore configuré (aucun second facteur actif).
Dans le cas où le MFA est actif et configuré, la liste des méthodes disponibles pour le second facteur s'affiche. La méthode par défaut est visible via la propriété "IsDefault" qui prend la valeur "True".
Sur l'image ci-dessus, on peut voir que le MFA est actif et configuré pour cet utilisateur et que le second facteur par défaut est "OneWaySMS", c'est-à-dire un code unique envoyé par SMS.
Pour éviter de le faire en deux temps, on peut sélectionner le nom d'affichage de l'utilisateur, son identifiant et créer une propriété calculée avec PowerShell, nommée MFAStatus, pour afficher directement le second facteur par défaut. Dans le cas où le MFA est désactivé sur l'utilisateur, on précisera "Disabled". Voici la commande complète :
Get-MsolUser -UserPrincipalName [email protected] | Select DisplayName,UserPrincipalName,@{N="MFAStatus"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}
Dans le même esprit, on peut obtenir le statut du MFA pour tous les utilisateurs du tenant. Pour cela, il suffit de retirer le paramètre "-UserPrincipalName" de la commande Get-MsolUser et de préciser "-All" à la place.
Ce qui donne :
Get-MsolUser -All | Select DisplayName,UserPrincipalName,@{N="MFAStatus"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}
Voici le résultat obtenu :
La méthode "PhoneAppNotification" visible sur l'image ci-dessus correspond à l'utilisation d'une application comme Microsoft Authenticator.
Si l'on souhaite obtenir le statut du MFA uniquement sur les comptes qui ont le rôle "Administrateur général", c'est possible aussi. Il faut commencer par récupérer la liste de ces comptes (en prenant uniquement ceux sous licence) :
$AdminUsers = Get-MsolRoleMember -RoleObjectId $(Get-MsolRole -RoleName "Company Administrator").ObjectId | Where-Object {$_.isLicensed -eq $true}
Il ne reste plus qu'à appliquer une boucle Foreach et réutiliser la commande étudiée précédemment pour obtenir le statut du MFA sur les comptes admins :
$AdminUsers | Foreach{ Get-MsolUser -UserPrincipalName $_.EmailAddress | select DisplayName,UserPrincipalName,@{N="MFA Status"; E={ if( $_.StrongAuthenticationMethods.IsDefault -eq $true) {($_.StrongAuthenticationMethods | Where IsDefault -eq $True).MethodType} else { "Disabled"}}}}
Avec ces quelques commandes PowerShell, vous êtes en mesure de vérifier le statut du MFA sur vos comptes Office 365 !