Capítulo 9 — Dados e bancos de dados
Mapa da aula
Aula 09 publicada. Mapa, exemplo, EX025.
flowchart TD
N0["9.1 Esquema mínimo"]
N1["9.2 Controle de acesso"]
N2["9.3 Retenção"]
N3["9.4 Backups"]
N4["9.5 Higiene de consultas"]
N5["9.6 Integridade"]
N6["9.7 Revisão de acessos contra os registros de RH"]
N7["9.8 Marcas d'água nas exportações"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX025"]
Desenho lógico
flowchart LR
N0["9.1 Esquema mínimo"]
N1["9.2 Controle de acesso"]
N2["9.3 Retenção"]
N3["9.4 Backups"]
N4["9.5 Higiene de consultas"]
N5["9.6 Integridade"]
N6["9.7 Revisão de acessos contra os registros de RH"]
N7["9.8 Marcas d'água nas exportações"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX025"]
[9.1 Esquema mínimo]
|
v
[9.2 Controle de acesso]
|
v
[9.3 Retenção]
|
v
[9.4 Backups]
|
v
[9.5 Higiene de consultas]
|
v
[9.6 Integridade]
|
v
[9.7 Revisão de acessos contra os registros de RH]
|
v
[9.8 Marcas d'água nas exportações]
|
v
[Exemplo resolvido] --> [Exercício EX025]
Objetivos de aprendizagem
Você vai (1) projetar esquemas mínimos para achados; (2) proteger dados de clientes em bancos de evidências; (3) reter e apagar no prazo.
9.1 Esquema mínimo
Armazene o que os retestes precisam, não tabelas inteiras de clientes. Um registro de achado no TRB precisa apenas do suficiente para reproduzir e verificar a fraqueza: o identificador do ativo afetado, a requisição ou a configuração que a demonstrou, um carimbo de tempo, o testador, o id do engajamento e um ponteiro para o arquivo de evidência. Quando Sam provou que um endpoint de download de extratos devolvia o PDF de outro cliente, o registro guardou os dois ids de conta sintéticos envolvidos e um hash da resposta, não o extrato em si. Um reteste no trimestre seguinte repete a mesma requisição e compara o resultado. Cada coluna extra copiada de uma tabela de clientes vira um dado que a equipe de testes agora precisa proteger, reter e, um dia, apagar.
9.2 Controle de acesso
Os bancos de evidências usam acesso baseado em papéis; o papel de estagiário de Sam tem leitura/escrita apenas nos esquemas do engajamento. Os papéis são concedidos por engajamento, não por pessoa, de modo que a permissão desaparece quando o engajamento é encerrado, e não quando alguém se lembra de revogá-la. O FindingsDesk tem três: testador (escreve achados e evidências de um engajamento), revisor (lê os engajamentos que aprova) e custodiante (roda as rotinas de retenção e restauração, nunca edita achados). Separar o custodiante do testador significa que quem apaga as evidências no prazo não é a pessoa cujo trabalho elas documentam. Quando um testador passa para um novo engajamento, seu papel antigo expira e o revisor mantém acesso de leitura até que o relatório seja aceito.
9.3 Retenção
Exclusões dirigidas pelo contrato; "guardar para sempre" não é uma política. A declaração de trabalho fixa um período de retenção para as evidências brutas, comumente noventa dias após o relatório final, e outro mais longo para o relatório e o status da remediação. O FindingsDesk armazena essa data na linha do engajamento no dia em que o contrato é assinado, e uma rotina noturna apaga os blobs de evidência cuja data já passou, gravando um recibo de exclusão com contagens e hashes. A retenção também protege o testador: evidência guardada além da data combinada são dados de clientes mantidos sem motivo, e um auditor vai perguntar por quê. Se um cliente pede uma retenção legal, ela é um campo datado com dono, não uma promessa informal.
9.4 Backups
Cifrados, com acesso registrado, com restaurações testadas — os backups estão no escopo da revisão de abuso. Um backup é uma segunda cópia de toda captura de tela, todo log de requisições e toda string com cara de credencial que a equipe já capturou; por isso, ele atrai as mesmas ameaças que o banco de dados vivo e costuma ser vigiado com menos cuidado. Os backups de evidências do TRB são cifrados com uma chave mantida pelo papel de custodiante, armazenados numa conta separada, e toda leitura é registrada. A retenção também se aplica aos backups: uma rotina de exclusão que limpa o armazenamento vivo, mas deixa intactos snapshots de noventa dias, não apagou nada. A revisão trimestral de Sam compara a data do snapshot mais antigo com o menor período de retenção de qualquer engajamento ativo.
9.5 Higiene de consultas
Nada de SELECT * para notebooks; exporte CSVs minimizados. Os analistas geralmente querem uma contagem, uma tendência ou um único exemplo, e a consulta deve devolver exatamente isso. Puxar tabelas inteiras para um notebook leva a evidência para fora dos controles que a protegem: sem log de acesso, sem rotina de retenção e com um disco que pode viajar. Por isso, o FindingsDesk expõe consultas salvas, como achados abertos por severidade ou dias até a correção por unidade de negócio, que devolvem agregados e colunas redigidas. Quando alguém precisa de uma linha bruta, abre-a dentro do visualizador de evidências, onde a leitura é registrada. Sam reescreveu uma consulta popular de painel que selecionava todas as colunas e reduziu a exportação de quarenta campos para seis.
9.6 Integridade
Chaves estrangeiras dos achados para os blobs de evidência. Um achado que aponta para um arquivo ausente ou alterado não pode ser defendido quando o cliente o contesta. Cada blob de evidência no FindingsDesk é armazenado com um hash SHA-256 calculado no upload, e a linha do achado referencia o blob por id com uma restrição de chave estrangeira, de modo que o banco de dados se recusa a apagar evidências que um achado vivo ainda cita. Quando um relatório sai, a exportação lista cada achado com os hashes de suas evidências. Se o TRB depois perguntar se uma captura de tela foi editada, Sam recalcula o hash e compara. Uma divergência é, ela mesma, um incidente a investigar, não um motivo para reenviar o arquivo em silêncio.
9.7 Revisão de acessos contra os registros de RH
Os papéis do banco de evidências são revisados trimestralmente contra as listas de RH. A consulta de Sam procura papéis ativos no cofre sem funcionários ativos. A primeira execução encontrou dois terceirizados; o acesso foi removido na mesma tarde. A junção é simples: papéis sem registro ativo correspondente na exportação do RH estão órfãos. Os casos interessantes são os quase-acertos. Um testador em licença parental está inativo no RH, mas deve manter uma conta dormente, e um terceirizado renovado sob uma nova ordem de compra pode aparecer com um id diferente. Por isso, a consulta de Sam produz uma lista de revisão, em vez de revogar o acesso automaticamente, e o líder de segurança assina cada decisão. A execução do segundo trimestre encontrou zero órfãos, que é o resultado que o controle existe para produzir.
9.8 Marcas d'água nas exportações
As exportações CSV embutem o id do engajamento e o nome de quem exportou num comentário de cabeçalho. Arquivos vazados podem ser rastreados. Sam verifica a existência da marca d'água numa checagem trimestral por amostragem. Uma marca d'água não impede um vazamento; ela encurta a investigação que vem depois de um. Quando um arquivo aparece num drive compartilhado, o cabeçalho nomeia o engajamento e a pessoa que o exportou, para que o custodiante possa verificar se aquela exportação foi autorizada e qual data de retenção se aplica. Comentários de cabeçalho são fáceis de remover; por isso, o log de exportações do FindingsDesk registra os mesmos campos junto com um hash do arquivo. Comparar o hash de um arquivo perdido com esse log identifica sua origem mesmo quando alguém apagou a linha de comentário.
9.9 Jogo de restauração de backup
A cada trimestre, Sam restaura um backup de evidências num host isolado e abre um arquivo. Backups não testados são presumidos quebrados. O exercício tem uma condição de aprovação escrita com antecedência: restaurar em até duas horas, abrir um arquivo de evidência escolhido ao acaso, recalcular seu hash e compará-lo com o registro do achado. O host isolado não tem rota de rede para a produção e é apagado depois, porque um backup restaurado está cheio de evidências sensíveis. O tempo importa tanto quanto o sucesso. Se o TRB contestar um achado durante a revisão de um relatório, a equipe precisa apresentar a evidência original naquela semana, não depois de um dia procurando a chave de decifração. Cada jogo termina com uma nota curta que registra a duração, os problemas e as correções.
9.10 Recusar uma exportação em massa
Um analista pede "todas as evidências do ano" para uma tese. Sam recusa a exportação em massa e oferece um extrato só de estatísticas, com contagens por severidade. A tese segue em frente. A minimização vale também para pedidos amigáveis. A recusa funciona porque Sam perguntou a que pergunta a tese tentava responder. O analista queria mostrar por quanto tempo os achados web de alta severidade ficavam abertos, o que exige datas e severidades, não capturas de tela nem ids de conta. Uma consulta agrupada por trimestre e severidade respondeu a isso, e o resultado não continha nenhum dado de cliente. O propósito vem primeiro: um pedido formulado como "todas as evidências" geralmente esconde uma necessidade mais estreita, e nomear essa necessidade transforma um conflito de privacidade numa tarefa de relatório.
9.11 Restauração sem manifesto
Durante o game day de restauração, o backup abriu, mas o manifesto de hashes estava ausente. Sam reprovou o jogo e restabeleceu a rotina do manifesto antes do engajamento seguinte. Backups sem manifestos são boatos. O arquivo abriu; por isso, um revisor menos cuidadoso teria aprovado o jogo. Sem o manifesto, porém, ninguém conseguiria provar que o arquivo restaurado correspondia ao que foi capturado durante os testes, e essa prova é a razão de ser da evidência. A causa foi banal: uma migração de armazenamento tinha descartado a rotina agendada que grava os manifestos ao lado de cada snapshot. Sam acrescentou uma verificação que faz o próprio backup falhar quando não há manifesto, de modo que a lacuna agora aparece na noite em que ocorre, em vez de no próximo jogo trimestral.
9.12 Um endereço de contato em toda exportação
Os cabeçalhos de marca d'água incluem um mailto de contato para achados e perdidos de exportações extraviadas. Alguém o usou uma vez; Sam lhe pagou um café. O endereço dá a quem encontra um arquivo, de boa-fé, uma forma de relatar uma exportação extraviada em vez de adivinhar quem é o dono. Ele vai para uma caixa compartilhada de custodiantes, não para uma pessoa, de modo que continua funcionando depois de trocas de equipe. Os relatos são tratados como um pequeno incidente. O custodiante confirma a origem do arquivo pelo log de exportações, pede a quem o encontrou que apague sua cópia ou a devolva e registra se a data de retenção já havia passado. Agradecer publicamente a quem relatou aumenta a chance de que o próximo arquivo extraviado também seja relatado.
9.13 Um pen drive devolvido
O mailto de achados e perdidos certa vez trouxe de volta um pen drive etiquetado com um id de engajamento. O processo funciona. O pen drive também mostrou onde o processo havia falhado antes: alguém tinha copiado evidências para mídia removível apesar das regras de exportação. O custodiante não simplesmente apagou o pen drive. Ele conferiu o conteúdo contra o log de exportações, encontrou uma cópia não registrada de capturas de tela de um engajamento encerrado meses antes e a rastreou até um testador que queria trabalhar offline num trem. A resposta foi uma conversa curta, a exclusão com recibo e uma nova opção no FindingsDesk para espaços de trabalho offline cifrados que expiram na data de retenção.
Exemplo resolvido (TRB sintético)
A rotina de exportação de Sam redige os números de conta para os quatro últimos dígitos antes que os analistas baixem o CSV.
Caso sintético — Riverstone Transit Bank (TRB). O banco, Sam Ito, TrackScope/FindingsDesk/PulseMap e todos os números são inventados para fins didáticos.
Erros e limites
Este livro não concede nenhuma autoridade para testar bancos ou sistemas de pagamento reais. Os laboratórios usam apenas endereços de faixas de documentação e dados sintéticos; código de exploit nunca é fornecido.
Exercícios
- EX025 — Minimalismo. Por que não armazenar linhas completas de clientes com cada achado? Rubrica: 3 = privacidade/minimização/ROE; 2 = parcial; 1 = precisamos delas; 0 = nada.
- EX026 — Retenção. O que dispara a exclusão das evidências de um engajamento? Rubrica: 3 = cronograma do contrato / data de retenção; 2 = parcial; 1 = nunca; 0 = nada.
- EX027 — Papel. O que um papel de estagiário não deve acessar por padrão? Rubrica: 3 = engajamentos não relacionados / banco de clientes de produção; 2 = parcial; 1 = tudo; 0 = nada.
Síntese
Os bancos de dados guardam o mínimo de dados pessoais necessário, com retenção e papéis impostos.
Continue estudando — capítulo 09 de 40
← Capítulo 08 (rascunho) · Índice de capítulos do curso · Capítulo 10 (rascunho) →