Auditoria de App Registrations no Azure AD: Como Organizar e Limpar Sua Base de Aplicativos com PowerShell e Microsoft Graph

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

Postagens mais visitadas deste blog

Microsoft Authenticator agora suporta Passkeys: Como ativar e testar

Mudança no Processo de Exclusão de Usuário no Microsoft 365

Microsoft está removendo as permissões "Todos, exceto usuários externos" no OneDrive