🔍 Rastreabilidade e Auditoria de Commits no Azure DevOps
Em ambientes colaborativos, especialmente em pipelines corporativos e DevOps, a autenticidade dos commits é essencial.
Mas o que acontece se alguém faz um commit “falso” — ou seja, usa um nome/email de outro usuário no Git — e faz o push para um repositório do Azure DevOps?
Este artigo explica como rastrear a autoria real usando audit logging, o que o Azure registra por padrão e quais são as limitações.
🧩 1. O problema: commits com autor falsificado
O Git permite que qualquer pessoa defina livremente o autor de um commit:
git commit --author="Fulano <fulano@example.com>"
Isso altera apenas o metadado local do commit, sem autenticação real.
Portanto, o author ou committer no log do Git não garante identidade.
A identidade real está no método de autenticação usado para o push — SSH, HTTPS (token/senha) ou serviço automatizado.
🔐 2. Como o Azure DevOps autentica um push
O Azure DevOps aceita dois principais modos de autenticação Git:
| Método | Autenticação | Onde rastrear | Comentário |
|---|---|---|---|
| SSH | Chave pública associada a uma conta do DevOps | Audit Log (eventos SSH) | Forte, identifica a conta associada |
| HTTPS | Usuário + Senha / Token (PAT) | Audit Log (requisições REST/Push) + Logs internos | Registra usuário autenticado, IP e timestamp |
👉 Mesmo que o commit tenha Author: outro@email.com, o push é autenticado e rastreável pela conta real que o enviou.
🧾 3. O que é o Audit Logging do Azure DevOps
O Audit Logging é o sistema de trilhas de auditoria da plataforma Azure DevOps, que registra ações administrativas e operacionais — inclusive algumas relacionadas a Git.
📍 Onde ativar
- Vá em Organization Settings → Auditing.
- Verifique se a auditoria está ativada.
Em novas organizações, o recurso pode vir desativado por padrão e precisa ser habilitado manualmente.
⚙️ Requisitos
- A organização precisa estar associada ao Microsoft Entra ID (antigo Azure AD).
- Se não estiver, o recurso pode não aparecer no painel.
📊 4. Quais eventos Git são registrados
Nem todos os eventos Git aparecem na auditoria.
Abaixo, uma visão geral dos principais tipos (conforme documentação e testes práticos):
| Evento | Registrado na Auditoria? | Detalhes |
|---|---|---|
| git push | ✅ Sim | Mostra usuário autenticado, repositório, IP e horário. |
| git clone / fetch | ⚠️ Parcial | Nem sempre registrado; depende da versão e plano. |
| git commit (local) | ❌ Não | O commit é local, só o push é auditável. |
| Criação de branch / tag | ✅ Sim | Evento de criação e exclusão são auditáveis. |
| Alteração de chave SSH / Token PAT | ✅ Sim | Eventos de segurança são registrados. |
| Criação/Exclusão de repositório | ✅ Sim | Eventos administrativos completos. |
🧠 Dica: use o Audit Stream para enviar logs em tempo real ao Azure Monitor, Event Hub ou SIEM (Splunk, Sentinel).
🕵️♂️ 5. Investigando um commit suspeito
Suponha que um commit foi feito com o autor “fulano@example.com”, mas suspeita-se que outro usuário o enviou.
Passos para rastrear:
-
Identifique o hash e a data do commit:
git log --pretty=fuller -
No Azure DevOps, vá em:
Organization Settings → Auditing -
Filtre por ação:
GitPushouRepository Push -
Verifique:
- Usuário autenticado (
actorDisplayName) - Endereço IP (
ipAddress) - Repositório e branch
- Data e hora
- Usuário autenticado (
-
Compare o timestamp do push com o commit.
Se o commit foi feito localmente por alguém e empurrado via conta alugafacil-org@..., o log mostrará essa conta como a origem real.
⚠️ 6. Limitações e lacunas conhecidas
- Commits locais não são registrados — apenas o push final.
- Clones e fetchs podem não gerar eventos auditáveis.
- Tokens pessoais (PATs) podem ser reutilizados ou vazados, dificultando a atribuição física.
- Logs são retidos por 90 dias (por padrão), a menos que você configure Audit Streaming.
- Organizações não conectadas ao Entra ID podem não ter auditoria disponível.
🧰 7. Boas práticas de rastreabilidade
| Medida | Benefício |
|---|---|
| Habilitar auditoria e streaming | Retém logs por longo prazo e integra com SIEM |
| Exigir autenticação 2FA/SSO | Evita uso indevido de senhas ou tokens |
| Forçar commits assinados (GPG) | Garante autoria criptográfica |
| Revisar chaves SSH e PATs regularmente | Minimiza risco de uso indevido |
| Ativar notificações de segurança | Detecta pushes inesperados rapidamente |
🧮 8. Exemplo de evidência técnica
| Campo | Exemplo |
|---|---|
| Commit Hash | e41b9a67c6f1e3... |
| Author declarado | Fulano <fulano@example.com> |
| Usuário autenticado | alugafacil-org@gmail.com |
| IP | 203.0.113.55 |
| Método | HTTPS (PAT) |
| Timestamp | 2025-10-22T14:33:21Z |
| Fingerprint SSH | (se aplicável) SHA256:W8t2xNKl4K7... |
🧭 9. Conclusão
Mesmo que alguém tente falsificar o autor de um commit, o push ao Azure DevOps deixa rastros auditáveis, desde que:
- A auditoria esteja habilitada;
- O push tenha sido autenticado via SSH, HTTPS ou token válido;
- Os logs não tenham expirado (configure retenção).
A combinação de audit logging + GPG signing + políticas de autenticação forte cria um ambiente auditável e juridicamente defensável.
