Ir para o conteúdo

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.