OpenCyber Academy
Curso rápido · Capítulo 3 · Português
Código do curso: OCA-007Capítulo 03: OCA-007-C003

Capítulo 3 — Arquitetura e engenharia de segurança: sistemas, dados e dependências

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 03 publicada. Mapa, exemplo, EX027.

flowchart TD
  N0["3.1 Mapear os sistemas"]
  N1["3.2 Desenhar os fluxos de dados"]
  N2["3.3 Fornecedores e dependências"]
  N3["Laboratório — Contagem dos serviços que dependem de"]
  N4["3.4 Pontos únicos de falha"]
  N5["3.5 Usar o mapa"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX027"]

Desenho lógico

flowchart LR
  N0["3.1 Mapear os sistemas"]
  N1["3.2 Desenhar os fluxos de dados"]
  N2["3.3 Fornecedores e dependências"]
  N3["Laboratório — Contagem dos serviços que dependem de"]
  N4["3.4 Pontos únicos de falha"]
  N5["3.5 Usar o mapa"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX027"]
[3.1 Mapear os sistemas]
    |
    v
[3.2 Desenhar os fluxos de dados]
    |
    v
[3.3 Fornecedores e dependências]
    |
    v
[Laboratório — Contagem dos serviços que dependem de]
    |
    v
[3.4 Pontos únicos de falha]
    |
    v
[3.5 Usar o mapa]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX027]

Objetivos de aprendizagem

Você vai (1) mapear os sistemas e os fluxos de dados da Saltmarsh; (2) identificar fornecedores e dependências; (3) encontrar onde uma única falha pararia muitos serviços.

3.1 Mapear os sistemas

Leah lista os principais sistemas da Saltmarsh com seus responsáveis: o sistema bancário central no bureau de serviços, o internet banking, o novo sistema de empréstimos, o e-mail e as ferramentas de escritório em nuvem, os PCs das agências, o processador de cartões e o sistema telefônico. Para cada um, ela registra que dados ele guarda e quem o usa. Os saldos e as transações das contas dos associados ficam no sistema bancário central; os documentos de empréstimo ficam no sistema de empréstimos; a correspondência com os associados fica no e-mail. Saber onde os dados vivem lhe diz quais sistemas precisam da proteção mais forte.

3.2 Desenhar os fluxos de dados

Leah desenha como se move uma solicitação de empréstimo: um associado envia documentos pelo site; o sistema de empréstimos os armazena; um agente de crédito os revisa num PC da agência; a aprovação dispara um pagamento pelo sistema bancário central; o associado recebe um e-mail. Ela rotula cada fluxo com os dados que ele carrega e marca onde ele passa para um fornecedor. Shostack (2014) recomenda atenção cuidadosa a esses cruzamentos, porque cada um depende dos controles de outra parte e de suposições sobre o que o outro lado já verificou.

3.3 Fornecedores e dependências

A Saltmarsh depende muito de fornecedores: o bureau de serviços, o fornecedor do sistema de empréstimos, o provedor de e-mail em nuvem, o processador de cartões, o provedor de identidade usado no login da equipe e dois provedores de internet. Leah registra o papel de cada fornecedor, os dados que ele guarda, o responsável pelo contrato e o que acontece se ele falhar. Ela observa que o provedor de identidade é usado por quase todos os sistemas, então sua falha ou seu comprometimento afetaria quase tudo. As dependências fazem parte da arquitetura, mesmo que a Saltmarsh não as opere.

Laboratório — Contagem dos serviços que dependem de cada fornecedor

# Count services depending on each supplier (synthetic map).
services = {"online banking": ["identity", "bureau", "internet"], "loan system": ["identity", "loan vendor", "bureau"],
            "email": ["identity", "cloud email"], "branch PCs": ["identity", "internet"],
            "card services": ["card processor", "bureau"], "staff intranet": ["identity", "cloud email"],
            "member payments": ["identity", "bureau"]}
count = {}
for s, deps in services.items():
    for d in deps: count[d] = count.get(d, 0) + 1
for d, n in sorted(count.items(), key=lambda x: (-x[1], x[0])): print(f"{d:14} {n} service(s)")

Execute com python3 lab_deps.py. Saída verificada:

identity       6 service(s)
bureau         4 service(s)
cloud email    2 service(s)
internet       2 service(s)
card processor 1 service(s)
loan vendor    1 service(s)

3.4 Pontos únicos de falha

O laboratório conta quantos serviços dependem de cada fornecedor. O provedor de identidade sustenta seis serviços, e o bureau de serviços, quatro; a maioria dos outros sustenta um ou dois. Leah discute os resultados com a gerente. Para o provedor de identidade, eles acordam uma conta de administrador de emergência (break-glass) guardada com segurança offline e um procedimento testado para fazer login se o provedor falhar. Para o bureau de serviços, eles contam com os compromissos contratuais de recuperação e mantêm um procedimento manual para saques urgentes de associados nas agências.

3.5 Usar o mapa

Leah guarda juntos a lista de sistemas, o diagrama de fluxos de dados e a tabela de dependências como a primeira visão geral de arquitetura da Saltmarsh. Quando, mais tarde, o conselho avalia um novo aplicativo de orçamento doméstico para os associados, a visão geral mostra que ele acrescentaria um novo fornecedor com dados de transações e mais uma dependência do provedor de identidade. O conselho faz perguntas de segurança ao fornecedor antes de assinar. Felix observa que um mapa simples se paga na primeira vez em que molda uma decisão antes que o dinheiro seja gasto. Leah fixa uma data anual para atualizar a visão geral.

Exemplo resolvido

Leah mapeia os sistemas e os fluxos de dados dos empréstimos, lista seis fornecedores, conta as dependências para identificar o provedor de identidade como principal ponto único de falha e usa o mapa numa decisão do conselho.

Caso sintético. Os sistemas, os fornecedores e as contagens são sintéticos; Shostack (2014) é real.

Erros e limites

Os mapas ficam desatualizados sem atualizações. As falhas de fornecedores podem se propagar por quartas partes.

Exercícios

Síntese

Mapear sistemas, fluxos de dados e dependências mostra onde a proteção e os planos alternativos importam mais.

Respostas comentadas

EX027. O sistema bancário central operado pelo bureau de serviços.

EX028. Um associado envia documentos, o sistema de empréstimos os armazena, um agente os revisa, o sistema central paga e o associado recebe um e-mail.

EX029. Porque cada um depende dos controles de outra parte e de suposições sobre o que foi verificado.

EX030. Seu papel, os dados que guarda, o responsável pelo contrato e o que acontece se ele falhar.

EX031. Seis serviços.

EX032. Quatro serviços.

EX033. Uma conta de administrador break-glass guardada com segurança offline, com um procedimento testado.

EX034. Seus compromissos contratuais de recuperação, mais um procedimento manual para saques urgentes nas agências.

EX035. Que ele acrescentaria um fornecedor com dados de transações e mais uma dependência do provedor de identidade.

EX036. Fez perguntas de segurança ao fornecedor antes de assinar.

EX037. Na primeira vez em que molda uma decisão antes que o dinheiro seja gasto.

EX038. Ele fica desatualizado, a menos que seja atualizado conforme os sistemas mudam.