Capítulo 28 — Arquitetura e engenharia de segurança: implementação I
Mapa da aula
Aula 28 publicada. Mapa, exemplo, EX082.
flowchart TD
N0["28.1 Da arquitetura às tarefas"]
N1["28.2 Configuração e segredos"]
N2["28.3 Manter o alinhamento"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX082"]
Desenho lógico
flowchart LR
N0["28.1 Da arquitetura às tarefas"]
N1["28.2 Configuração e segredos"]
N2["28.3 Manter o alinhamento"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3 --> Q["EX082"]
[28.1 Da arquitetura às tarefas]
|
v
[28.2 Configuração e segredos]
|
v
[28.3 Manter o alinhamento]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX082]
Objetivos de aprendizagem
Você vai (1) traduzir a arquitetura em tarefas de implementação; (2) aplicar configuração segura e tratamento de segredos; (3) manter a implementação alinhada à arquitetura.
28.1 Da arquitetura às tarefas
A equipe de Sofia começa a implementar o componente de ingestão do back-office. Ela divide a arquitetura em tarefas: autenticação de dispositivos baseada em certificados, validação do esquema dos registros, detecção de replay com um repositório dos identificadores de registros recentes, verificação dos registros assinados e logging estruturado. Cada tarefa referencia o requisito e a especificação de controle que implementa e inclui testes de aceitação. Isso evita a deriva comum em que os desenvolvedores implementam o que é fácil e os controles mais difíceis da arquitetura são adiados em silêncio. As referências das tarefas também permitem que os revisores verifiquem a cobertura: todo requisito deve corresponder a pelo menos uma tarefa concluída.
28.2 Configuração e segredos
O serviço de ingestão precisa de uma chave privada para seu certificado de servidor TLS e de credenciais para seu banco de dados. Sofia garante que nenhum dos dois seja armazenado no código-fonte ou em imagens de contêiner. Os segredos vêm de um repositório gerenciado de segredos em tempo de execução, legível apenas pela identidade do serviço, e são rotacionados num calendário. A configuração fica sob controle de versão e é revisada, com as configurações relevantes para a segurança, como as versões de TLS e os emissores de certificado permitidos, verificadas automaticamente contra a especificação. Ela encontra uma credencial de teste commitada num branch antigo, remove-a do histórico e providencia sua rotação, registrando o incidente.
28.3 Manter o alinhamento
Durante a implementação, a equipe descobre que a detecção de replay precisa de mais memória do que o esperado no pico de carga. Um desenvolvedor propõe pulá-la durante os picos. Sofia leva isso como uma mudança de arquitetura, e não como uma decisão de codificação, porque enfraquece um requisito. Em vez disso, a equipe usa um repositório com limite de tempo, indexado pelo identificador do registro e pelo validador, que cabe nos limites de memória. Ela atualiza o registro de arquitetura e a especificação. Daniel ressalta que a implementação sempre ensina alguma coisa; a disciplina está em levar esse aprendizado de volta à arquitetura, em vez de deixar o sistema construído divergir em silêncio.
Exemplo resolvido
Sofia relaciona os requisitos da ingestão a cinco tarefas de implementação, leva os segredos para um repositório gerenciado, trata uma credencial de teste commitada e encaminha uma mudança na detecção de replay pela revisão de arquitetura.
Caso sintético. O componente de ingestão e o incidente são sintéticos.
Erros e limites
Os repositórios de segredos se tornam dependências críticas que precisam de alta disponibilidade. Remover segredos do histórico não desfaz a exposição; a rotação continua necessária.
Exercícios
-
EX082 — Referências das tarefas. Por que cada tarefa referencia um requisito? Rubrica: 3 = evita adiar os controles difíceis e permite que os revisores verifiquem a cobertura;; 2 = cobertura;; 1 = vago;; 0 = nenhuma.
-
EX083 — Credencial commitada. Que passos se seguiram à descoberta de uma credencial de teste commitada? Rubrica: 3 = removida do histórico e rotacionada, com o incidente registrado;; 2 = as duas;; 1 = só removida;; 0 = nenhuma.
-
EX084 — Encaminhamento da mudança de replay. Por que pular a detecção de replay foi tratado como uma mudança de arquitetura? Rubrica: 3 = enfraquece um requisito, então precisa de revisão de arquitetura;; 2 = requisito;; 1 = escolha de codificação;; 0 = nenhuma.
Síntese
A implementação honra a arquitetura quando as tarefas remontam aos requisitos, os segredos ficam fora do código e as descobertas retornam ao desenho.
Continue estudando — aula 28 (capítulo 28 de 50)
← Capítulo 27 · Índice das aulas · Capítulo 29 →
Continue para a próxima aula já escrita.