Olá, pessoal!
Gerenciar usuários no Azure Active Directory é uma tarefa que demanda atenção constante — especialmente quando falamos de auditoria e governança de acessos. Para ajudar times de TI e gestores a terem uma visão clara da estrutura de usuários e suas relações de gerenciamento, desenvolvi um script em PowerShell para auditoria que gera um relatório completo em Excel, sem modificar nada no ambiente.
Por que realizar auditorias periódicas no Azure AD?
- Visibilidade: Saber quem está ativo, quem possui licença, quem gerencia quem.
- Segurança: Identificar contas sem gestor, que podem representar riscos ou erros administrativos.
- Organização: Ter relatórios rápidos para decisões e validações em auditorias internas.
O que o script faz?
-
Lista todos os usuários ativos do tipo 'Member' (exclui contas guest e desativadas).
-
Identifica usuários que possuem gestor e aqueles que não têm.
-
Mapeia gestores que possuem subordinados ativos.
-
Coleta dados importantes como nome, UPN, departamento, status da conta e status de licença.
-
Gera um arquivo Excel com várias abas para fácil análise:
-
Usuários com manager
-
Usuários sem manager
-
Managers com subordinados
-
Resumo gráfico e tabelas para insights rápidos
Como o script ajuda seu time?
- Disponibilizar essa ferramenta para seu time é garantir uma auditoria rápida, segura e prática, sem risco de alterar dados no ambiente.
- O arquivo é gerado localmente com timestamp para controle histórico.
====================================================================
Import-Module ImportExcel
Connect-AzureAD
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm"
$excelPath = "AuditoriaUsuarios_$timestamp.xlsx"
# Arrays para armazenar dados
$comManager = @()
$semManager = @()
$managersComSubordinados = @()
$usuarios = Get-AzureADUser -All $true | Where-Object {
$_.UserType -eq 'Member' -and $_.AccountEnabled -eq $true -and $_.UserPrincipalName -notlike "*#EXT#*"
}
foreach ($user in $usuarios) {
$manager = Get-AzureADUserManager -ObjectId $user.ObjectId -ErrorAction SilentlyContinue
$licenciado = (Get-AzureADUserLicenseDetail -ObjectId $user.ObjectId -ErrorAction SilentlyContinue).Count -gt 0
$statusLicenca = if ($licenciado) { "Licensed" } else { "Unlicensed" }
$statusConta = if ($user.AccountEnabled) { "Active" } else { "Disabled" }
if ($manager) {
$comManager += [PSCustomObject]@{
Nome = $user.DisplayName
UPN = $user.UserPrincipalName
Departamento = $user.Department
'Manager Nome' = $manager.DisplayName
'Manager UPN' = $manager.UserPrincipalName
'Status Conta' = $statusConta
'Status Licença'= $statusLicenca
}
} else {
$semManager += [PSCustomObject]@{
Nome = $user.DisplayName
UPN = $user.UserPrincipalName
Departamento = $user.Department
'Manager Nome' = "N/A"
'Manager UPN' = "N/A"
'Status Conta' = $statusConta
'Status Licença'= $statusLicenca
}
}
$subordinados = Get-AzureADUserDirectReport -ObjectId $user.ObjectId -ErrorAction SilentlyContinue
if ($subordinados.Count -gt 0) {
$managersComSubordinados += [PSCustomObject]@{
NomeManager = $user.DisplayName
UPNManager = $user.UserPrincipalName
Departamento = $user.Department
StatusConta = $statusConta
StatusLicenca = $statusLicenca
QtdSubordinados = $subordinados.Count
'Nomes Subordinados' = ($subordinados | Select-Object -ExpandProperty DisplayName) -join ", "
'UPNs Subordinados' = ($subordinados | Select-Object -ExpandProperty UserPrincipalName) -join ", "
}
}
}
# Exporta para Excel (com múltiplas abas)
# ...
Agora que você já tem o script pronto para rodar, é hora de colocar em prática essa auditoria no seu ambiente Azure AD. Manter o controle sobre usuários, gestores e licenças ajuda a garantir a segurança e a eficiência da sua infraestrutura.
Lembre-se: auditorias regulares são a base para uma governança forte e para evitar surpresas no futuro. Use essa ferramenta sempre que precisar e compartilhe com seu time para facilitar o trabalho de todos.
Se gostou, deixe seu comentário, compartilhe este artigo e fique ligado para mais conteúdos práticos que facilitam o dia a dia do profissional de TI.
Comentários
Postar um comentário