Logs e Auditoria — Registro de Decisões (v1.0)
Documentos desta funcionalidade: 01 - Definição (v1.0) · 02 - Especificação (v1.0) · 03 - Protótipo (v1.0) · 04 - Mapeamento de Banco de Dados (v1.0) · Cenários de Teste (v1.0) · 05 - Registro de Decisões (v1.0)
Legenda: D-LOG = decisão do solicitante; E-LOG = escolha do Designer ([INVENÇÃO], a aprovar); P-LOG = pergunta em aberto.
Decisões do solicitante (D-LOG)
| ID | Decisão | Data | Reflexo |
|---|---|---|---|
| D-LOG-001 | Dois registros distintos: log de sistema (suporte, anomalias pontuais e estatísticas) e trilha de auditoria (tudo no prontuário e funcionalidades coligadas; ONA, SBIS; busca de responsáveis) | 11/2026 | RN-LOG-001 |
| D-LOG-002 | Identificador opaco do paciente na trilha, sendo o IdPaciente | 11/2026 | RN-LOG-015 |
| D-LOG-003 | Hospedagem SaaS na nuvem do fornecedor; backend .NET (C#); Grafana, Loki e Prometheus operados pela própria equipe, em contêineres | 11/2026 | 2.3.1 |
| D-LOG-004 | Tenant como campo do log, não como rótulo do Loki; métricas com granularidade enxuta (HTTP por endpoint sem tenant; métrica enxuta com tenant; métricas de banco com tenant). Razão do solicitante: erros e anomalias de sistema quase sempre afetam todos os tenants; acessos indevidos são tratados no Segurança; tenant só importa quando o problema é o banco do cliente | 11/2026 | RN-LOG-006, 007 |
| D-LOG-005 | Mecanismo de auditoria para o sistema todo, com categorias distintas; processo de auditoria no Segurança (IpSeguranca) para eventos de segurança, o que leva a dois repositórios (global e por cliente) | 11/2026 | RN-LOG-011, 012 |
| D-LOG-006 | Log de sistema pode ser temporário no Loki, mas há desejo de guardar de 1 a 2 anos, para auditorias do passado em funcionalidades fora do PEP | 11/2026 | RN-LOG-009 |
| D-LOG-007 | Medir o volume de logs antes de decidir o armazenamento | 11/2026 | P-LOG-02, 03 |
| D-LOG-008 | Usar partições para a trilha; verificar se o PostgreSQL (possível migração) tem função semelhante | 11/2026 | RN-LOG-026; 4.4 |
| D-LOG-009 | Integridade, fase 1: permissões e hash por linha; as demais etapas (lote, selo externo) só depois, se necessárias | 11/2026 | RN-LOG-025 |
| D-LOG-010 | Os dois sistemas devem ser simples, fáceis de incorporar nas APIs e bibliotecas, integrados ao framework ou avisando o desenvolvedor da falta | 11/2026 | RN-LOG-021 |
Escolhas do Designer (E-LOG) — [INVENÇÃO], a aprovar
| ID | Escolha | Motivo |
|---|---|---|
| E-LOG-001 | Pacotes Gemed.Telemetry e Gemed.Audit | Separar o que é de suporte do que é de responsabilização |
| E-LOG-002 | Gravar a trilha na mesma transação, com falha fechada; fila de saída só se a trilha mudar de banco | Evita operação sem rastro; o padrão de fila existe em mensageria.OutboxEvento |
| E-LOG-003 | Captura por atributos, interceptador do EF Core e chamada explícita | Cobre leitura, escrita e segurança sem esforço do desenvolvedor |
| E-LOG-004 | Catálogo de eventos como enumeração em código, gerando a matriz NGS1.07.03 | Uma fonte de verdade para código, tela e conformidade |
| E-LOG-005 | Numeração do tipo de evento por faixas (1001, 2001, 3001) | Estável e legível |
| E-LOG-006 | Modelo lógico neutro com mapeamento para SQL Server e PostgreSQL | Migração em aberto |
| E-LOG-007 | Não reutilizar Log/LogComplemento | Finalidade não confirmada; faltam campos e proteção |
| E-LOG-008 | Hash SHA-256 por linha, calculado pela aplicação | Independe do banco |
| E-LOG-009 | Exportação em CSV e JSON | Formato aberto simples |
| E-LOG-010 | Tela no contexto Segurança, com perfil “Auditor” | Mantém o acesso separado (NGS1.07.02) |
| E-LOG-011 | Eventos clínicos e de segurança com falha fechada; só “erro de processo operacional” com falha aberta | Rastro obrigatório sem travar o diagnóstico |
| E-LOG-012 | Eventos de segurança e gestão no repositório global; clínicos e operacionais do cliente no repositório do cliente | Onde o dado nasce |
| E-LOG-013 | TraceId na trilha | Liga o auditor ao suporte |
| E-LOG-014 | Evento de alteração (AUD-RES-005) e evento operacional fora do RES (AUD-OPE-010) | Decorre do pedido “tudo que foi feito” e de D-LOG-005 |
Perguntas em aberto (P-LOG)
| ID | Pergunta | Quem responde |
|---|---|---|
| P-LOG-01 | NGS1.07.06: o identificador opaco e os nomes de campos atendem ao requisito? O PEPLog.NovoValor legado conflita? | Certificador SBIS |
| P-LOG-02 | Volume do log de sistema; retenção por nível; MinIO/S3; Mimir, Thanos ou VictoriaMetrics para 1 a 2 anos de métricas | Medição, equipe |
| P-LOG-03 | Volume da trilha; compressão (PostgreSQL: ZFS, TimescaleDB ou Citus colunar); necessidade de camada fria | Medição, equipe |
| P-LOG-04 | Prazo legal e do certificador de guarda da trilha | Jurídico, certificador |
| P-LOG-05 | A camada de dados é EF Core? Se não, o interceptador vira decorador do repositório | Arquitetura |
| P-LOG-06 | NGS1.07.02: permissões e hash bastam, ou o certificador exige selo em lote ou externo? | Certificador SBIS |
| P-LOG-07 | Destino das tabelas Log e LogComplemento do IpSeguranca | Solicitante |
| P-LOG-08 | Haverá unificação de pacientes? | Solicitante |
| P-LOG-09 | SQL Server ou PostgreSQL como banco final | Solicitante |
| P-LOG-10 | Versão do Loki com suporte nativo a OTLP | Equipe |
| P-LOG-11 | Precisa apagar logs de um tenant específico (por exemplo, fim de contrato)? Isso muda a retenção por tenant | Solicitante |
| P-LOG-12 | Quem recebe o perfil “Auditor” por padrão na implantação | Solicitante |
| P-LOG-13 | A tela do auditor pode mostrar o nome do paciente (resolvido na hora a partir do IdPaciente, sem guardar na trilha) ou só o identificador? Depende de P-LOG-01 | Solicitante, certificador |
Histórico de Versões
- v1.0 (11/11/2026) — Criação.