No gerenciamento de identidades e acessos em ambientes Azure AD, muitas vezes nos deparamos com a necessidade de auditar e organizar os App Registrations. Com o tempo, muitos desses registros se tornam obsoletos ou não utilizados, representando um risco para a segurança e dificultando o gerenciamento da infraestrutura.
Neste post, vou compartilhar um script simples em PowerShell que ajuda a identificar e auditar os App Registrations do seu ambiente Azure AD, verificando dados como:
- DisplayName: O nome do aplicativo (Display Name).
- ClientId: O ID do cliente (Client ID) do aplicativo.
- SecretUsage: Indica se os segredos (credenciais) do aplicativo estão em uso ou não, com base na utilização dos últimos 90 dias.
- SecretExpiry: A data de expiração do primeiro segredo registrado para o aplicativo.
- AuthUsage: Indica se o aplicativo foi autenticado recentemente nos últimos 90 dias, conforme os logs de autenticação do Microsoft Graph.
Por que auditar os App Registrations?
A auditoria de App Registrations é uma prática importante para garantir que apenas os aplicativos realmente utilizados permaneçam no seu ambiente. Isso não apenas ajuda a manter a segurança da plataforma, mas também contribui para a organização e o controle da infraestrutura.
Benefícios da auditoria:
- Segurança: Remover registros desnecessários reduz a superfície de ataque.
- Organização: Aplicativos em desuso são excluídos, facilitando o gerenciamento.
- Eficiência: Ajudar a manter a plataforma otimizada.
Como Funciona o Script?
O script que vou compartilhar verifica informações cruciais sobre os App Registrations, como a validade do Client ID, o uso de Secrets e as autenticações realizadas nos últimos 90 dias. Ele conecta-se ao Azure AD e ao Microsoft Graph para coletar os dados necessários.
Aqui estão as etapas do script:
- Conexão com o Azure AD e Microsoft Graph: O script verifica a conexão com o Azure e garante a autorização para acessar os dados de autenticação.
- Coleta de Dados: Para cada aplicativo no Azure AD, ele coleta informações sobre o uso dos Secrets, expiração, e se houve autenticações recentes.
- Exportação para CSV: Após a coleta das informações, o script exporta os resultados para um arquivo CSV, que pode ser facilmente analisado.
Script PowerShell para Auditoria
Aqui está o script completo em PowerShell para realizar essa auditoria:
================================================================
#Garantindo conexão com o Azure
if (-not (Get-AzContext)) {
Write-Host "Conectando ao Azure..." -ForegroundColor Yellow
Connect-AzAccount
}
# Verificando se a conexão foi bem-sucedida
if (-not (Get-AzContext)) {
Write-Host "Falha ao conectar ao Azure. Verifique suas credenciais." -ForegroundColor Red
exit
}
# Conectando ao Microsoft Graph para obter logs de autenticação
try {
Write-Host "Conectando ao Microsoft Graph..." -ForegroundColor Yellow
Connect-MgGraph -Scopes "AuditLog.Read.All"
} catch {
Write-Host "Falha ao conectar ao Microsoft Graph. Verifique permissões." -ForegroundColor Red
exit
}
# Obtendo aplicativos no Azure AD
try {
Write-Host "Obtendo lista de aplicativos do Azure AD..." -ForegroundColor Yellow
$applications = Get-AzADApplication
if ($null -eq $applications -or $applications.Count -eq 0) {
Write-Host "Nenhum aplicativo encontrado no Azure AD." -ForegroundColor Yellow
exit
}
# Criando lista para armazenar dados
$appDetails = @()
# Obtendo data de corte para os últimos 90 dias
$cutoffDate = (Get-Date).AddDays(-90).ToString("yyyy-MM-ddTHH:mm:ssZ")
# Obtendo logs de autenticação dos últimos 90 dias
Write-Host "Obtendo logs de autenticação..." -ForegroundColor Yellow
$authLogs = Get-MgAuditLogSignIn -Filter "createdDateTime ge $cutoffDate"
foreach ($app in $applications) {
# Obtendo Secrets (credenciais) do aplicativo
$secrets = Get-AzADAppCredential -ApplicationId $app.AppId
# Verificando se o segredo foi utilizado nos últimos 90 dias
$secretsUsed = $false
foreach ($secret in $secrets) {
if ($secret.StartDateTime -ge (Get-Date).AddDays(-90)) {
$secretsUsed = $true
break
}
}
# Caso o segredo não tenha sido utilizado nos últimos 90 dias, marcar
$secretUsage = if ($secretsUsed) { "Em uso" } else { "Não usado nos últimos 90 dias" }
# Verificando se o aplicativo teve logins recentes
$authUsed = $authLogs | Where-Object { $_.AppId -eq $app.AppId }
# Definindo status de uso do aplicativo
$authUsage = if ($authUsed) { "Autenticado recentemente" } else { "Sem autenticações nos últimos 90 dias" }
# Adicionando detalhes do aplicativo à lista
$appDetails += [PSCustomObject]@{
'DisplayName' = $app.DisplayName
'ClientId' = $app.AppId
'SecretUsage' = $secretUsage
'SecretExpiry' = ($secrets | Select-Object -First 1 -ExpandProperty EndDateTime)
'AuthUsage' = $authUsage
}
}
# Definindo o caminho do arquivo CSV
$csvPath = "$env:USERPROFILE\Documents\AzureADApplications.csv"
# Exportando para CSV
$appDetails | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8
# Confirmando a exportação
if (Test-Path $csvPath) {
Write-Host "Arquivo exportado com sucesso: $csvPath" -ForegroundColor Green
} else {
Write-Host "Falha ao salvar o arquivo. Verifique permissões na pasta." -ForegroundColor Red
}
} catch {
Write-Host "Erro ao obter aplicativos do Azure AD: $_" -ForegroundColor Red
}
=================================================================
Como usar o script?
Baixe o script: Copie e cole o código acima em um arquivo .ps1 no seu computador.
Execute no PowerShell: Abra o PowerShell como administrador e execute o script.
Analise a planilha: Após a execução, você terá um arquivo CSV com as informações sobre os App Registrations, pronto para análise.
Conclusão
Com esse script, você pode facilmente auditar e limpar os App Registrations no Azure AD, melhorando a organização e a segurança do seu ambiente. O processo de auditoria se torna simples e automatizado, economizando tempo e esforço.
Se você tem alguma dúvida ou sugestão de melhorias, deixe seu comentário abaixo! Vamos continuar criando soluções práticas e eficazes para otimizar o gerenciamento no Azure.
Comentários
Postar um comentário