10 - Preservação e Auditoria¶
EnfaseCloud.WebApiEnfaseCloud.Vue
Implemented
Objetivo¶
Garantir fixidez, rastreabilidade, preservação digital e evidências exportaveis ao longo do ciclo de vida documental.
Fixidez¶
- O sistema deve recalcular hashes periodicamente.
- Divergencias devem gerar alerta, evento de auditoria e bloqueio de operações destrutivas.
- O relatorio deve indicar hash esperado, hash calculado, data, tenant, cliente e arquivo.
Migração controlada¶
- Toda migração de formato deve preservar o original ou registrar politica de substituição aprovada.
- Antes e depois da migração devem existir hash, metadados, validação PDF/A e auditoria.
Auditoria¶
Eventos devem ser encadeados por hash ou enviados a armazenamento imutavel/off-host quando disponivel.
Eventos minimos:
- captura;
- upload;
- validação;
- assinatura;
- indexação;
- acesso;
- download;
- preview;
- alteração de metadados;
- preservação;
- migração;
- eliminação.
Eliminação¶
Eliminação deve obedecer PCDA/TTDA, workflow de aprovação e evidências formais.
Aceite¶
- Relatorio de fixidez detecta arquivo alterado.
- Auditoria permite rastrear quem fez o que, quando e em qual tenant.
- Migração nao perde hash/evidência do artefato anterior.
Implementação¶
Entregues (status: Implemented)¶
| Requisito | Implementação | Arquivo |
|---|---|---|
| Fixidez periódica | PreservacaoFixidezService.RunAsync — recalcula SHA-256 por cliente; detecta AUSENTE/ALTERADO/INTEGRO |
WebApi/Services/PreservacaoFixidezService.cs |
| Agendamento diário automático | PreservacaoFixidezSchedulerService — executa por tenant/cliente a cada 24h |
WebApi/BackgroundServices/ |
| Alerta quando divergência | LogError escalado quando TotalFalha > 0 ou TotalAusente > 0; job status muda para ALERTA |
BackgroundServices/PreservacaoFixidezSchedulerService.cs |
| Relatório de fixidez | PreservacaoObservabilidadeService.GetRelatorioAsync — exportável JSON/CSV |
WebApi/Services/PreservacaoObservabilidadeService.cs |
| Migração controlada | PreservacaoMigracaoService.RunAsync — valida PDF/A, hash pré/pós, metadados antes e depois |
WebApi/Services/PreservacaoMigracaoService.cs |
| Auditoria encadeada | AuditService.LogAsync — persiste por tenant em logs/webapi/{tenant}/audit/ com encadeamento por arquivo |
WebApi/Services/AuditLogService.cs |
| Evento: captura | AuditActions.FileScan no ScanController |
WebApi/Controllers/ScanController.cs |
| Evento: upload | AuditActions.UploadFile no FileUploadController |
WebApi/Controllers/FileUploadController.cs |
| Evento: download | AuditActions.Download no DownloadFileByPath |
WebApi/Controllers/FileUploadController.cs |
| Evento: preview | AuditActions.Preview no GetFilePreview |
WebApi/Controllers/FileUploadController.cs |
| Evento: assinatura | AuditActions.AssinaturaDigital no DocumentSignatureService |
WebApi/Services/DocumentSignatureService.cs |
| Evento: indexação | AuditActions.IndexFile no CrudService |
WebApi/Services/CrudService.cs |
| Evento: eliminação | EliminacaoSolicitada / Aprovada / Cancelada |
WebApi/Services/DocumentEliminationWorkflowService.cs |
| Evento: preservação | PreservacaoFixidezRun / PreservacaoFixidezAlerta / MigracaoRun |
WebApi/Controllers/PreservacaoController.cs |
| Workflow de eliminação | DocumentEliminationWorkflowService + DocumentDeletionGuardService (bloqueia PERMANENTE) |
WebApi/Services/ |
| Observabilidade | GET /preservacao/saude, GET /preservacao/relatorio, GET /preservacao/agendamento/ultima-execucao |
WebApi/Controllers/PreservacaoController.cs |
Eventos de auditoria declarados (constantes em AuditActions)¶
UPLOAD_FILE · DELETE_FILE · INDEX_FILE · ASSINATURA_DIGITAL · FILE_SCAN ·
PREVIEW · DOWNLOAD · ACESSO · ALTERACAO_METADADOS ·
ELIMINACAO_SOLICITADA · ELIMINACAO_APROVADA · ELIMINACAO_CANCELADA ·
PRESERVACAO_FIXIDEZ_RUN · PRESERVACAO_FIXIDEZ_ALERTA · PRESERVACAO_MIGRACAO_RUN
Pendente (infra/próxima sprint)¶
| Requisito | Situação |
|---|---|
| Auditoria imutável/off-host | AuditService grava em arquivo local. Para imutabilidade real: Azure Immutable Blob Storage ou Azure Log Analytics com retenção configurada. |
| Evento: alteração de metadados | Constante ALTERACAO_METADADOS declarada. Falta instrumentar PUT /fileattributes com o log de auditoria. |
| Bloqueio de download quando hash diverge | SyncService já bloqueia no sync. Download direto não consulta histórico de fixidez — implementar consulta a PreservacaoVerificacao antes de servir o arquivo. |
| Encadeamento hash-a-hash da auditoria | AuditService grava em arquivo por timestamp. Encadeamento criptográfico (cada entrada referencia o hash da anterior) requer refatoração da persistência. |