Skip to content
Go back

Métodos de Autenticação nos Logs

Published:  at  10:00 AM

Índice

Métodos de Autenticação e Segurança

Monitorar os métodos de autenticação utilizados pelos utilizadores é fundamental para:

Consulta KQL para Análise de Métodos

A consulta abaixo analisa os métodos de autenticação dos logs de sign-in:

// Análise de métodos de autenticação dos últimos 30 dias
SigninLogs
| where TimeGenerated > ago(30d)
| where ResultType == 0
| extend AuthMethod = tostring(AuthenticationDetails[0].authenticationMethod)
| where isnotempty(AuthMethod)
| summarize Count = count() by AuthMethod
| order by Count desc

Distribuição por Aplicação

Para entender quais aplicações usam quais métodos:

// Distribuição de métodos de autenticação por aplicação
SigninLogs
| where TimeGenerated > ago(30d)
| where ResultType == 0
| extend AuthMethod = tostring(AuthenticationDetails[0].authenticationMethod)
| where isnotempty(AuthMethod)
| summarize Count = count() by AppDisplayName, AuthMethod
| order by AppDisplayName, Count desc

Utilizadores com Métodos Inseguros

Para identificar utilizadores que frequentemente usam métodos menos seguros:

// Utilizadores que usam senha sem MFA
SigninLogs
| where TimeGenerated > ago(30d)
| where ResultType == 0
| extend AuthMethod = tostring(AuthenticationDetails[0].authenticationMethod)
| where AuthMethod == "Password"
| extend AuthMethodCount = array_length(AuthenticationDetails)
| where AuthMethodCount == 1
| summarize Count = count() by UserPrincipalName
| order by Count desc
| take 20

Tendências de Adoção de Métodos Seguros

Para acompanhar a evolução da adoção de métodos mais seguros:

// Tendência de adoção de métodos seguros
SigninLogs
| where TimeGenerated > ago(90d)
| where ResultType == 0
| extend AuthMethod = tostring(AuthenticationDetails[0].authenticationMethod)
| where isnotempty(AuthMethod)
| extend SecureMethod = case(
    AuthMethod == "Password", "Password Only",
    AuthMethod == "Password, MultiFactor", "Password + MFA",
    AuthMethod has "WindowsHello", "Windows Hello",
    AuthMethod has "FIDO2", "FIDO2 Key",
    AuthMethod has "Microsoft Authenticator", "Authenticator App",
    AuthMethod has "Phone", "Phone",
    "Other"
)
| summarize Count = count() by bin(TimeGenerated, 1d), SecureMethod
| render timechart

Implementação em PowerShell com Microsoft Graph

Para extrair dados de autenticação via PowerShell:

# Conectar ao Microsoft Graph
Connect-MgGraph -Scopes "AuditLog.Read.All"

# Data de início da consulta (últimos 7 dias)
$startDate = (Get-Date).AddDays(-7).ToString("yyyy-MM-dd")

# Consultar logs de sign-in
$signInLogs = Get-MgAuditLogSignIn -Filter "createdDateTime ge $startDate" -Top 1000

# Analisar métodos de autenticação
$authMethodStats = @{}

foreach ($log in $signInLogs) {
    if ($log.Status.ErrorCode -eq 0) {
        $authMethod = "Unknown"
        
        if ($log.AuthenticationDetails -and $log.AuthenticationDetails.Count -gt 0) {
            $authMethod = $log.AuthenticationDetails[0].AuthenticationMethod
        }
        
        if (-not $authMethodStats.ContainsKey($authMethod)) {
            $authMethodStats[$authMethod] = 0
        }
        
        $authMethodStats[$authMethod]++
    }
}

# Converter para objetos e exibir resultados
$results = $authMethodStats.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        AuthenticationMethod = $_.Key
        Count = $_.Value
        Percentage = [math]::Round(($_.Value / $signInLogs.Count) * 100, 2)
    }
}

$results | Sort-Object -Property Count -Descending | Format-Table -AutoSize

Monitoramento de Descompasso de MFA

Para identificar utilizadores com configurações inconsistentes:

// Utilizadores com descompasso de método de autenticação
SigninLogs
| where TimeGenerated > ago(30d)
| where ResultType == 0
| extend PrimaryAuthMethod = tostring(AuthenticationDetails[0].authenticationMethod)
| extend AuthMethodCount = array_length(AuthenticationDetails)
| project TimeGenerated, UserPrincipalName, AppDisplayName, PrimaryAuthMethod, AuthMethodCount
| summarize 
    Methods = make_set(PrimaryAuthMethod), 
    Apps = make_set(AppDisplayName), 
    MethodCounts = make_set(AuthMethodCount),
    SignInCount = count()
    by UserPrincipalName
| where array_length(Methods) > 1 or array_length(MethodCounts) > 1
| order by SignInCount desc

Melhores Práticas


Suggest Changes

Previous Post
Utilizadores Capazes de MFA
Next Post
Falhas no Acesso Condicional