A tabela security_audit_log é append-only por design. Triggers de banco de dados bloqueiam UPDATE e DELETE mesmo via service_role. Isso garante que:
- 1Nenhuma ação pode ser "apagada" do histórico
- 2PII crua nunca é armazenada — apenas
payload_hash (SHA256) para verificação de integridade
- 3Particionamento mensal mantém performance mesmo com milhões de entradas
- 4Retenção mínima de 7 anos (LGPD Art. 16) — partições antigas vão para cold storage
## Anomaly detection (hourly)
Um worker varre o log a cada hora e sinaliza:
- D1 Engenheiro acessou >5 tenants/h
- D2 Acesso noturno (00-06 UTC) sem ticket de plantão
- D3 Mesmo IP em >3 tenants
- D4 Volume anormal (>10x baseline)
- D5 Acesso fora de scope aprovado → auto-revoga sessão
- D6 Export massivo (>10k registros)
- D7 Chamada IA durante impersonation
Eventos flagged vão para revisão semanal de segurança.