OpenCyber Academy
Graduação · Capítulo 9 · Português
Código do curso: OCA-099Capítulo 09: OCA-099-C009

Capítulo 9 — Dados e bancos de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Mapa da aula

Aula 09 publicada. Mapa, exemplo, EX025.

flowchart TD
  N0["9.1 Acesso ao banco com menor privilégio"]
  N1["9.2 Injeção e parâmetros"]
  N2["9.3 Backups e cópias de teste"]
  N3["Síntese"]
  N0 --> N1 --> N2 --> N3
  N3 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["9.1 Acesso ao banco com menor privilégio"]
  N1["9.2 Injeção e parâmetros"]
  N2["9.3 Backups e cópias de teste"]
  N3["Síntese"]
  N0 --> N1 --> N2 --> N3 --> Q["EX025"]
[9.1 Acesso ao banco com menor privilégio]
    |
    v
[9.2 Injeção e parâmetros]
    |
    v
[9.3 Backups e cópias de teste]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem

Você vai (1) projetar o acesso ao banco de dados segundo o menor privilégio; (2) prevenir injeção por meio de consultas parametrizadas; (3) proteger backups e cópias de teste.

9.1 Acesso ao banco com menor privilégio

O banco de dados da loja da Fernway guarda associados, pedidos e estoque. Lucas revisa como as aplicações se conectam. A loja usa uma única conta de banco de dados com todos os direitos sobre tudo, inclusive apagar tabelas. Ele propõe contas separadas: a loja pode ler produtos e gravar pedidos; os relatórios podem ler visões agregadas; só uma conta de administrador, usada raramente e com registro, pode mudar o esquema. Cada conta recebe apenas os direitos de que sua função precisa. Se a loja for comprometida, o atacante herda só os direitos da loja, e não o poder de apagar ou exportar todas as tabelas.

9.2 Injeção e parâmetros

Lucas revisa o código de busca da loja e encontra uma consulta montada concatenando strings com a entrada do cliente. Ele demonstra, num banco sintético com o sqlite3 do Python, como um termo de busca forjado devolve todos os registros de associados. A correção é passar a entrada como parâmetros, que o banco trata estritamente como dados. Ele também verifica as demais consultas e encontra mais duas montadas do mesmo jeito. As consultas parametrizadas são um controle simples e consagrado, e mesmo assim a injeção continua comum porque desenvolvedores sob pressão de prazo copiam padrões antigos. Os checklists de revisão de código devem incluí-la explicitamente.

9.3 Backups e cópias de teste

O inventário do capítulo 2 encontrou uma cópia de teste do banco de dados no armazenamento em nuvem. Lucas investiga: ela continha dados reais de associados e podia ser lida por qualquer pessoa com o link. Ele recomenda que os ambientes de teste usem dados sintéticos ou mascarados, que os backups sejam criptografados com chaves guardadas separadamente e que as permissões de armazenamento sejam revisadas automaticamente. A ISO/IEC 27002:2022 inclui controles sobre informações de teste e mascaramento de dados. As cópias de dados multiplicam o risco, e a arquitetura precisa tratar cada cópia com o mesmo cuidado que o original, ou evitar criá-la.

Exemplo resolvido

Lucas divide uma conta de banco de dados todo-poderosa em três contas de menor privilégio, encontra três consultas injetáveis e recomenda dados de teste sintéticos e backups criptografados.

Caso sintético. O conteúdo do banco e as consultas são sintéticos; a ISO/IEC 27002:2022 é real.

Erros e limites

Dividir as contas exige mudanças e testes na aplicação. Dados mascarados ainda podem ser reidentificáveis se o mascaramento for malfeito.

Exercícios

Síntese

A arquitetura de bancos de dados limita o poder de cada conta, mantém a entrada como dado e controla cada cópia dos dados.

Respostas comentadas

EX025. O atacante herda apenas os direitos de leitura e de gravação de pedidos da loja, e não os poderes sobre o esquema ou de exportação.

EX026. Três: a consulta de busca e outras duas montadas do mesmo jeito.

EX027. Dados sintéticos ou adequadamente mascarados, nunca registros brutos de associados.