Obtenga el estado de MFA para usuarios de Microsoft 365 con PowerShell – TrucosInformaticos

Powershell

No existe una forma conveniente de averiguar si la autenticación multifactor está habilitada para un usuario en particular y qué métodos de MFA están configurados en la interfaz web del Centro de administración de Microsoft 365. En este artículo, le mostraremos cómo obtener el estado de MFA de los usuarios de Microsoft 365 mediante PowerShell.

Anteriormente, podía utilizar el Get-MsolUser cmdlet desde el módulo MsOnline o el Get-AzureADUser cmdlet del módulo AzureAD para obtener el estado de MFA de los usuarios de Microsoft 365. Sin embargo, después del 30 de junio de 2023, los módulos heredados de Azure AD y MSOL (que usan la API de Azure AD) quedarán obsoletos. Entonces, ahora debes usar el Microsoft Graph PowerShell módulo para obtener el estado de MFA del usuario en su arrendatario de Azure.

Instale el módulo de PowerShell Microsoft Graph para todos los usuarios en su computadora:

Install-Module Microsoft.Graph -Scope AllUsers –force

Puede verificar si su computadora tiene Microsoft Graph instalado:

Find-Module Microsoft.Graph

Luego conéctese a su arrendatario usando el módulo de Microsoft Graph:

Connect-MgGraph -Scopes "User.Read.All,UserAuthenticationMethod.Read.All"

Autentique y otorgue permisos a las herramientas de línea de comandos de Microsoft Graph para leer todas las propiedades de usuario y métodos de autenticación de Azure.

obtener powershell estado mfa

Si se ha autenticado correctamente en Azure a través de PowerShell, debería ver el mensaje «¡Bienvenido a Microsoft Graph!

Ejecute el siguiente comando para obtener el estado de MFA para un solo usuario:

Get-MGUserAuthenticationMethod -userid [email protected] | fl

Pista. Se produce un error si no ha otorgado acceso a UserAuthenticationMethod.Read scope:

Get-MgUserAuthenticationMethod_List1: Request Authorization failed

powershell obtiene el estado mfa

Solo microsoft.graph.passwordAuthenticationMethod está habilitado para el usuario en este ejemplo. Esto significa que MFA no está configurado.

Si el usuario tiene otros métodos MFA configurados, el cmdlet Get-MGUserAuthenticationMethod los enumera.

Por ejemplo, mi cuenta está configurada para autenticarse mediante la aplicación Microsoft Authenticator en un dispositivo móvil (#microsoft.graph.microsoftAuthenticatorAuthenticationMethod).

verificar el estado de mfa powershell

Se pueden configurar para el usuario otros métodos sólidos de autenticación MFA, incluidos datos biométricos, aplicaciones de autenticación, claves de seguridad de hardware, etc.

Si se configuran varios métodos MFA para un usuario, la salida del comando puede ser difícil de entender qué métodos están habilitados.

Por lo tanto, puede usar este sencillo script de PowerShell para verificar el estado de MFA para un solo usuario. El script comprueba si hay algún método de autenticación fuerte que no sea ‘Autenticación de contraseña’ configurado para el usuario.

$AzureUserUPN='[email protected]'

$MFAUserData=Get-MgUserAuthenticationMethod -UserId $AzureUserUPN

$AzureUserObject = [PSCustomObject]@{

    "User"                        = 'n/a'

    "MFA status"                  = "Disabled"

    "Email authentication"        = "False"

    "FIDO2 authentication"        = "False"

    "Microsoft Authenticator"     = "False"

    "Password authentication"     = "False"

    "Phone authentication"        = "False"

    "Software Oath"               = "False"

    "Temporary Access Pass"       = "False"

    "Windows Hello for Business"  = "False"

    "Passwordless Authenticator"  = "False"

}

$AzureUserObject.user = $AzureUserUPN

foreach ($method in $MFAUserData) {

    Switch ($method.AdditionalProperties["@odata.type"]) {

        "#microsoft.graph.microsoftAuthenticatorAuthenticationMethod" {

            $AzureUserObject."Microsoft Authenticator" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.emailAuthenticationMethod" {

            $AzureUserObject."Email authentication" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.passwordAuthenticationMethod" {

            $AzureUserObject."Password authentication" = $true

            if ($AzureUserObject."MFA status" -ne "Enabled") {

                $AzureUserObject."MFA status" = "Disabled"

            }

        }

        "#microsoft.graph.fido2AuthenticationMethod" {

            $AzureUserObject."FIDO2 authentication" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.phoneAuthenticationMethod" {

            $AzureUserObject."Phone authentication" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.softwareOathAuthenticationMethod" {

            $AzureUserObject."Software Oath" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.temporaryAccessPassAuthenticationMethod" {

            $AzureUserObject."Temporary Access Pass" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

        "#microsoft.graph.windowsHelloForBusinessAuthenticationMethod" {

            $AzureUserObject."Windows Hello for Business" = $true

            $AzureUserObject."MFA status" = "Enabled"

        }

    }

}    

$AzureUserObject

El guión volverá Estado de MFA: Deshabilitado si el usuario está configurado para usar solo la autenticación de contraseña.

powershell comprobar el estado de mfa

Si se configuran uno o más métodos de autenticación seguros además de la autenticación de contraseña, esto significa que MFA está habilitado para el usuario.

obtener el estado de mfa para todos los usuarios powershell

5/5 - (69 votos)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *