Skip to content
Go back

Utilizadores Capazes de MFA

Published:  at  10:00 AM

Importância da Autenticação Multifator

A autenticação multifator (MFA) é uma componente essencial na estratégia de segurança de qualquer organização. Identificar quais utilizadores já estão configurados para utilizar MFA permite:

Identificação via Microsoft Graph

Para identificar utilizadores capazes de utilizar MFA:

# Ligar ao Microsoft Graph
Connect-MgGraph -Scopes "User.Read.All", "UserAuthenticationMethod.Read.All"

# Obter todos os utilizadores
$users = Get-MgUser -All

# Array para resultados
$mfaCapableUsers = @()

foreach ($user in $users) {
    # Obter métodos de autenticação do utilizador
    $authMethods = Get-MgUserAuthenticationMethod -UserId $user.Id
    
    # Verificar métodos de MFA (qualquer método exceto palavra-passe)
    $mfaMethods = $authMethods | Where-Object {
        $_.AdditionalProperties.'@odata.type' -ne '#microsoft.graph.passwordAuthenticationMethod'
    }
    
    # Se tiver pelo menos um método MFA, é capaz de MFA
    $isMfaCapable = $mfaMethods.Count -gt 0
    
    $mfaCapableUsers += [PSCustomObject]@{
        DisplayName = $user.DisplayName
        UserPrincipalName = $user.UserPrincipalName
        IsLicensed = $user.AssignedLicenses.Count -gt 0
        MfaCapable = $isMfaCapable
        MfaMethods = $mfaMethods.Count
        MethodTypes = if ($mfaMethods) {
            ($mfaMethods | ForEach-Object { $_.AdditionalProperties.'@odata.type' }) -join ', '
        } else {
            'None'
        }
    }
}

# Apresentar utilizadores capazes de MFA
$mfaCapableUsers | 
    Sort-Object -Property MfaCapable, UserPrincipalName | 
    Format-Table DisplayName, UserPrincipalName, MfaCapable, MfaMethods, MethodTypes -AutoSize

Análise Detalhada por Método de Autenticação

Para uma análise mais detalhada dos métodos específicos registados:

# Tipos de métodos de MFA e suas contagens
$methodCounts = @{}

foreach ($user in $mfaCapableUsers) {
    if ($user.MethodTypes -ne 'None') {
        $methods = $user.MethodTypes -split ', '
        
        foreach ($method in $methods) {
            $methodName = $method.Replace('#microsoft.graph.', '')
            
            if (-not $methodCounts.ContainsKey($methodName)) {
                $methodCounts[$methodName] = 0
            }
            
            $methodCounts[$methodName]++
        }
    }
}

# Criar objetos para resultados
$methodResults = $methodCounts.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        Method = $_.Key
        Count = $_.Value
        Percentage = [math]::Round(($_.Value / $mfaCapableUsers.Count) * 100, 2)
    }
}

# Apresentar estatísticas de métodos
$methodResults | Sort-Object -Property Count -Descending | Format-Table -AutoSize

Relatório Resumido

Para gerar um relatório de resumo sobre a adoção de MFA:

$totalUsers = $mfaCapableUsers.Count
$mfaUsers = ($mfaCapableUsers | Where-Object { $_.MfaCapable -eq $true }).Count
$nonMfaUsers = $totalUsers - $mfaUsers
$mfaPercentage = [math]::Round(($mfaUsers / $totalUsers) * 100, 2)

Write-Output "=== Relatório de Adoção de MFA ==="
Write-Output "Total de Utilizadores: $totalUsers"
Write-Output "Utilizadores com MFA: $mfaUsers ($mfaPercentage%)"
Write-Output "Utilizadores sem MFA: $nonMfaUsers ($(100 - $mfaPercentage)%)"

Considerações Importantes

Melhores Práticas


Suggest Changes

Previous Post
Autenticação Sem Palavra-passe
Next Post
Métodos de Autenticação nos Logs