feat: item 14 do roadmap -- identidade via Authentik (forward-auth) e audit log #66
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/audit-log-authentik"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Item 14 do roadmap: identidade real (autoria) + histórico de mudança de status/severidade, usando o Authentik já disponibilizado como forward-auth.
Correção de nomenclatura: quase toda a documentação anterior (
docs/adr/0004-*,docs/HANDOFF.md,docs/BACKLOG.md,docs/API.md) citava "Authelia" como o mecanismo planejado -- era um erro de nomenclatura desde o início, não uma mudança de plano. O produto real disponibilizado é o Authentik. Corrigido em todos os arquivos; ver ADR-0014 para a decisão completa.Decisões confirmadas com o usuário:
Report.reviewer/Report.approved_by/TestRun.executed_bydeixam de ser texto livre -- viram auto-preenchidos a partir da identidade capturada (nunca aceitos do payload do cliente).forwardauth):X-authentik-username,X-authentik-email,X-authentik-groups(|-separado),X-authentik-uid.DEV_FAKE_USER, só comENVIRONMENT=development) com trava de segurança: derruba o boot seDEV_FAKE_USERestiver setado junto deENVIRONMENT=production.null, nada quebra -- rollout aditivo.Implementado:
backend/services/identity.py--get_current_user(dependency FastAPI) +assert_dev_fallback_not_misconfigured(chamada no boot,main.py).backend/modules/audit_log/(novo) -- tabela genéricaAuditLogEntry(entity_type/entity_id/field/old_value/new_value/changed_by/changed_at),record_change(),GET /api/audit-log?entity_type=&entity_id=. Migrationd09a77ddaa17.update_report(Report.status),update_issue(Issue.status e Issue.severity) eupdate_run/create_run(TestRun.status, disparaexecuted_by);reviewer/approved_bydisparam quandoreview_date/approved_atsão setados/limpos.ReportForm/ReportDetail/RunForm/RunDetailperdem os inputs de texto de autoria, viram campo read-only ouReadField, com dica explicando o auto-preenchimento.Pendente (infra, fora deste repo, responsabilidade do usuário): adicionar
authentik-forwardauth@dockerno routereegqa-apido Traefik + criar Provider/Application no Authentik.Verificação: 248 testes de backend (18 novos), 152 de frontend, typecheck/lint/build/Storybook build OK, walkthrough manual no browser real (Report e Run) confirmando auto-preenchimento e o novo endpoint de audit log.
Backend le identidade via headers X-authentik-* (forward-auth no Traefik, services/identity.py), com fallback de dev (DEV_FAKE_USER) que se recusa a funcionar se ENVIRONMENT=production por engano. Report.reviewer/approved_by e TestRun.executed_by deixam de aceitar texto livre e passam a ser auto-preenchidos a partir da identidade capturada. Novo modules/audit_log/ registra historico de mudanca de Report.status, Issue.status/severity e TestRun.status (GET /api/audit-log). Infra do lado do Authentik/Traefik ainda depende de um passo fora deste repo -- ver ADR-0014. Corrige tambem uma imprecisao de nomenclatura que já existia em varios docs ("Authelia" em vez de "Authentik" como mecanismo de auth planejado). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>