Office 365 : activer le MFA avec PowerShell
I. Présentation
Dans ce tutoriel, nous allons apprendre à activer ou désactiver le MFA (authentification multifacteur) sur les comptes utilisateurs Office 365 avec PowerShell.
Il s'agit du troisième article au sujet du MFA avec Office 365 puisque j'ai déjà publié les deux tutoriels suivants :
Cette fois-ci encore, nous allons utiliser le module MSOnline. Je vous rappelle que même si ce module est plutôt en fin de vie, et qu'il serait mieux d'utiliser le module Microsoft Graph, je n'ai pas trouvé de commandes permettant de gérer le MFA via ce module. Lorsque ce sera pris en charge par Microsoft Graph, cet article sera actualisé.
II. Activer le MFA avec PowerShell
Ouvrez une console Windows PowerShell afin d'exécuter la commande ci-dessous pour établir une connexion à Office 365. Le prérequis c'est bien sûr de disposer du module MSOnline.
Connect-MsolService
Une fenêtre va s'ouvrir, authentifiez-vous. Ensuite, il ne reste plus qu'à s'amuser avec PowerShell pour gérer le MFA sur les comptes utilisateurs.
Il est nécessaire de créer un objet de type "Microsoft.Online.Administration.StrongAuthenticationRequirement" avec plusieurs propriétés pour activer le MFA au sein d'un compte utilisateur. Cela nous donne les lignes suivantes :
$Mfa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$Mfa.RelyingParty = "*"
$Mfa.State = "Enabled"
$MfaStatus = @($Mfa)
La variable $MfaStatus contient notre objet et ses propriétés. Cette variable va être utilisée au sein de la commande Set-MsolUser pour activer (ou désactiver) le MFA sur un utilisateur.
Voici un exemple :
Set-MsolUser -UserPrincipalName [email protected] -StrongAuthenticationRequirements $MfaStatus
Voilà, le MFA est désormais activé pour cet utilisateur et il n'aura plus qu'à configurer un second facteur d'authentification.
Prenons un autre exemple : on souhaite activer le MFA sur tous les membres d'un groupe de sécurité Active Directory. Pour cela, il faut que l'on commence à récupérer les membres de notre groupe "O365-Licence-E3" dans l'AD :
$Users = Get-ADGroupMember -Identity "O365-Licence-E3" | Foreach{ Get-ADUser -Identity $_.SamAccountName } | Select-Object UserPrincipalName
La commande ci-dessus récupère l'attribut UserPrincipalName car il s'agit de comptes synchronisés via Azure AD Connect donc il s'agit de l'attribut de référence pour l'identifiant du compte Office 365. Vous pouvez sélectionner un autre attribut, comme le champ "mail" par exemple.
Ensuite, il suffit de traiter chaque compte afin d'activer le MFA (en réutilisant l'objet déclaré précédemment) :
$Users | Set-MsolUser -StrongAuthenticationRequirements $MfaStatus
En résumé, voici les différentes lignes de commande PowerShell :
Connect-MsolService
$Mfa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$Mfa.RelyingParty = "*"
$Mfa.State = "Enabled"
$MfaStatus = @($Mfa)
$Users = Get-ADGroupMember -Identity "O365-Licence-E3" | Foreach{ Get-ADUser -Identity $_.SamAccountName } | Select-Object UserPrincipalName
$USers | Set-MsolUser -StrongAuthenticationRequirements $MfaStatus
Nous pourrions imaginer le même type d'exemple avec un fichier CSV en entrée.
III. Désactiver le MFA avec PowerShell
Pour désactiver le MFA, il ne faut pas reprendre le bout de code précédent et remplacer "Enabled" par "Disabled" car cela ne fonctionnera pas. Par contre, si l'on initialise notre variable $MfaStatus sans lui attribuer la moindre propriété, cela va supprimer la configuration MFA sur l'utilisateur et donc désactiver le MFA.
Il suffira de faire :
$MfaStatus = @()
Puis, de mettre à jour le compte :
Set-MsolUser -UserPrincipalName [email protected] -StrongAuthenticationRequirements $MfaStatus
Si vous avez besoin de désactiver le MFA sur tous les comptes utilisateurs de votre tenant (ou de l'activer sur tous les comptes), je vous invite à utiliser le script fourni par Microsoft et disponible sur cette page (testé et approuvé !) :