O instante faz parte da população
Um auditor pede a contagem e o total de posições de uma aplicação de fundos fictícia. Duas consultas separadas parecem suficientes, mas a aplicação continua a receber operações. Se a contagem é recolhida antes de uma inserção e o total depois, o par pode nunca ter existido como estado coerente. Regista o sistema, a finalidade, os filtros, a moeda ou unidade, a data de referência e o mecanismo de extração. A pergunta de auditoria pode exigir o fecho de um dia ou o estado num instante; isso não é necessariamente o momento em que o ficheiro foi descarregado. Um ficheiro recente pode representar dados antigos, e uma base consistente pode estar incompleta face ao âmbito de negócio.
Reproduzir a inconsistência
O laboratório começa com duas linhas, A=100 e B=200, em unidades inteiras de cêntimos. Um leitor consulta a contagem e obtém dois. Outra ligação insere C=300 e confirma a escrita. O leitor consulta depois o total e obtém 600. As respostas individuais estão corretas para os respetivos instantes; apresentá-las como uma única fotografia de duas linhas com total 600 seria enganador. Compara o par com os estados efetivos: inicialmente 2/300 e depois 3/600. Antes de acusar uma manipulação, reproduz o processo de recolha e identifica as fronteiras das transações. A anomalia pode resultar de desenho da extração, sem qualquer alteração maliciosa dos dados.
Uma transação de leitura observada
Na segunda experiência, a base SQLite usa WAL e ligações separadas. O leitor inicia uma transação e executa a primeira consulta, que fixa a sua visão. O escritor transfere 50 de A para B, acrescenta C e faz commit. Dentro da transação, o leitor continua a ver duas linhas, total 300 e A=100. Depois de terminar essa transação, uma nova leitura vê três linhas, total 600 e A=50. O resultado não significa que o commit falhou: o escritor e o leitor observam momentos diferentes. O comportamento foi executado nesta configuração SQLite. Noutra tecnologia ou nível de isolamento, confirma a semântica e demonstra o comportamento em vez de transportar a conclusão automaticamente.
Congelar uma cópia com âmbito conhecido
A API de backup cria no exercício uma cópia com três linhas e total 600. A origem recebe depois D=400 e passa a quatro linhas e total 1000; a cópia conserva o estado anterior. Para um papel de trabalho, identifica a cópia, a origem, o período coberto e a forma de obtenção. Repetir uma análise sobre uma cópia fixa ajuda a comparar resultados, mas não prova que todas as operações relevantes estavam na origem. Uma filial omitida ou uma interface atrasada podem ficar fora de uma cópia tecnicamente consistente. Se a pergunta exige dados posteriores, obtém outra extração com âmbito identificado; não atualizes silenciosamente a evidência já usada numa conclusão.
Propor um procedimento executável
No trabalho com APS, combina a extração com o responsável pela base: acesso mínimo, impacto esperado, janela, critérios e forma de interromper uma operação demasiado pesada. Um pedido de consistência não autoriza bloquear produção sem avaliação. O laboratório abre a ligação de análise em modo de leitura e verifica que uma escrita é recusada; isso protege contra aquela mutação pela ligação, sem comprovar todas as permissões do sistema. Entrega o ficheiro com um manifesto de parâmetros e controlos de reconciliação, e pede a outro revisor que refaça o cálculo sobre a mesma cópia. Regista discrepâncias e limitações. A conclusão deve descrever o que a extração permite afirmar e o que exige evidência adicional.
python3 content/labs/cisa-data-lineage/run.py --output /tmp/cisa-lineage-evidence.json
# Separate connections, synthetic SQLite WAL, no real application data.A contagem 2 e o total 600 vieram de instantes diferentes. Uma transação de leitura conserva 2/300 enquanto outro utilizador confirma 3/600.
Armadilhas comuns
Consultas corretas como relatório coerente; commit invisível como commit falhado; backup consistente como população completa; bloqueio como solução universal.
Tópicos relacionados: Populações e papéis de trabalho · Bases de dados e operação · Integridade e proveniência
Uma conclusão reproduzível precisa de dados coerentes, parâmetros registados e um âmbito de negócio justificado.
Referência: Isolation in SQLite · CISA outline effective August 1, 2024