Durante a gestão de ambientes em nuvem, é comum nos depararmos com contas de usuários que permanecem ativas, mesmo sem uso recente. Isso impacta diretamente no consumo de licenças e na postura de segurança da organização.
Pensando nisso, desenvolvi um script em PowerShell utilizando o Microsoft Graph para facilitar auditorias de contas ativas no Azure AD, trazendo informações importantes como:
-
Nome do usuário
-
E-mail (UPN)
-
Departamento e cargo
-
Data de criação da conta
-
Último login registrado
Tipo de conta (nuvem ou sincronizada com AD local)
O que o script faz?
- Conecta-se ao Microsoft Graph com as permissões necessárias
- Busca todos os usuários internos ativos (tipo "Member")
- Verifica a última data de login registrada
- Informa se a conta é nuvem (Cloud Only) ou sincronizada (On-Premises)
- Exporta os dados para um relatório CSV
================================================================
# Script para auditoria de usuários ativos no Azure AD
Write-Host "Conectando ao Microsoft Graph..." -ForegroundColor Cyan
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"
Write-Host "Buscando usuários ativos internos..." -ForegroundColor Cyan
$usuarios = Get-MgUser -All -Property "DisplayName,UserPrincipalName,UserType,AccountEnabled,Department,JobTitle,CreatedDateTime,SignInActivity,OnPremisesSyncEnabled" |
Where-Object {
$_.AccountEnabled -eq $true -and
$_.UserType -eq "Member"
}
$resultados = $usuarios | Select-Object `
@{Name='Nome';Expression={$_.DisplayName}},
@{Name='UserPrincipal';Expression={$_.UserPrincipalName}},
@{Name='Departamento';Expression={$_.Department}},
@{Name='Cargo';Expression={$_.JobTitle}},
@{Name='CriadoEm';Expression={$_.CreatedDateTime.ToString("yyyy-MM-dd")}},
@{Name='UltimoAcesso';Expression={
if ($_.SignInActivity.LastSignInDateTime) {
([datetime]$_.SignInActivity.LastSignInDateTime).ToString("yyyy-MM-dd HH:mm:ss")
} else {
"Sem login registrado"
}
}},
@{Name='TipoConta';Expression={
if ($_.OnPremisesSyncEnabled -eq $true) {
"Sincronizado (AD Local)"
} else {
"Nuvem (Cloud Only)"
}
}}
# Exporta para CSV
$arquivo = "Auditoria_Usuarios_AzureAD.csv"
Write-Host "Exportando relatório para $arquivo..." -ForegroundColor Green
$resultados | Export-Csv -Path $arquivo -NoTypeInformation -Encoding UTF8
Write-Host "Concluído! Relatório salvo em: $arquivo" -ForegroundColor Green
================================================================
Por que isso é importante?
Fazer esse tipo de auditoria permite:
-
Reduzir custos com licenças não utilizadas
-
Melhorar a segurança, identificando contas obsoletas
-
Tomar decisões assertivas sobre desativação ou revalidação de acessos
Dica Extra
🔐 Para utilizar o script, é necessário ter o Microsoft Graph PowerShell SDK instalado e permissões de leitura de usuários e logs de auditoria.
Comentários
Postar um comentário