Mapa da aula
Aula 32 publicada. Mapa, exemplo, EX094.
flowchart TD
N0["32.1 Série e paralelo"]
N1["Laboratório — Disponibilidade em série e em paralelo"]
N2["32.2 Redundância para serviços de segurança"]
N3["32.3 Quando a segurança prejudica a confiabilidade"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX094"]
Desenho lógico
flowchart LR
N0["32.1 Série e paralelo"]
N1["Laboratório — Disponibilidade em série e em paralelo"]
N2["32.2 Redundância para serviços de segurança"]
N3["32.3 Quando a segurança prejudica a confiabilidade"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX094"]
[32.1 Série e paralelo]
|
v
[Laboratório — Disponibilidade em série e em paralelo]
|
v
[32.2 Redundância para serviços de segurança]
|
v
[32.3 Quando a segurança prejudica a confiabilidade]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX094]
Objetivos de aprendizagem
Você vai (1) calcular a disponibilidade de componentes em série e em paralelo; (2) projetar redundância para serviços de segurança; (3) reconhecer quando controles de segurança reduzem a confiabilidade.
32.1 Série e paralelo
A engenharia de confiabilidade oferece regras simples. Componentes em série, todos necessários para o serviço, multiplicam suas disponibilidades, de modo que o todo é menos disponível do que qualquer parte. Componentes em paralelo, em que qualquer um basta, se combinam de modo que o todo é mais disponível do que cada um. Sofia aplica isso à ingestão, que precisa em série do balanceador de carga, do serviço de ingestão, do repositório de segredos e do banco de dados. O laboratório abaixo calcula a disponibilidade geral com números sintéticos e mostra como acrescentar uma segunda instância do repositório de segredos em paralelo muda o resultado. Serviços de segurança como os repositórios de segredos costumam ser esquecidos quando a disponibilidade é planejada.
Laboratório — Disponibilidade em série e em paralelo
# Series/parallel availability with synthetic component figures.
comp = {"load balancer": 0.9995, "ingestion": 0.999, "secret store": 0.998, "database": 0.9995}
def series(xs):
p = 1.0
for x in xs: p *= x
return p
def parallel(a, n): return 1 - (1 - a) ** n
base = series(comp.values())
red = series([comp["load balancer"], comp["ingestion"], parallel(comp["secret store"], 2), comp["database"]])
print(f"single secret store: {base:.4f} (~{(1-base)*8760:.0f} h/yr down)")
print(f"two secret stores: {red:.4f} (~{(1-red)*8760:.0f} h/yr down)")
Execute com python3 lab_avail.py. Saída verificada:
single secret store: 0.9960 (~35 h/yr down)
two secret stores: 0.9980 (~18 h/yr down)
32.2 Redundância para serviços de segurança
Autenticação, gestão de chaves e logging são dependências de quase tudo. Se o provedor de identidade falha, a equipe não consegue fazer login; se o repositório de segredos falha, os serviços não conseguem iniciar; se o logging falha, os ataques passam despercebidos. Sofia propõe redundância para cada um: provedores de identidade em cluster em dois sites, repositórios de segredos replicados e buffer local de logs quando o coletor central estiver inacessível. Ela também documenta o que acontece no modo degradado, como os validadores seguirem com listas de bloqueio em cache. Projetar deliberadamente o comportamento degradado é mais seguro do que descobri-lo durante uma indisponibilidade.
32.3 Quando a segurança prejudica a confiabilidade
Alguns controles reduzem a disponibilidade. Uma validação estrita de certificados falha fechada se o serviço de revogação estiver inacessível; um rate limiting agressivo pode bloquear picos legítimos; a autenticação multifator obrigatória falha se o serviço do segundo fator estiver fora do ar. Sofia lista esses casos e decide cada um deliberadamente: a ingestão das validações faz soft-fail nas verificações de revogação por um curto período, usando listas em cache, enquanto o acesso administrativo faz hard-fail. A decisão decorre do ativo e da ameaça: a arrecadação precisa continuar, enquanto o acesso administrativo pode esperar. Confiabilidade e segurança são propriedades do mesmo sistema e precisam ser negociadas explicitamente.
Exemplo resolvido
Sofia calcula a disponibilidade da ingestão com e sem um repositório de segredos redundante, projeta redundância para três serviços de segurança e registra as decisões de falhar aberto e falhar fechado.
Caso sintético. Os números de disponibilidade são sintéticos.
Erros e limites
As premissas de independência superestimam os benefícios do paralelo quando as réplicas compartilham uma causa de falha. As janelas de soft-fail podem ser abusadas.
Exercícios
-
EX094 — Regra da série. Como as disponibilidades se combinam em série?
Mostrar critérios de avaliação
Rubrica: 3 = multiplicam-se; o todo é menos disponível do que qualquer parte;; 2 = multiplicar;; 1 = somar;; 0 = nenhuma. -
EX095 — Efeito da redundância no laboratório. O que o laboratório mostrou quando o repositório de segredos foi duplicado?
Mostrar critérios de avaliação
Rubrica: 3 = a disponibilidade subiu de 0.9960 para 0.9980, reduzindo à metade a indisponibilidade, de cerca de 35 para 18 horas por ano;; 2 = subiu;; 1 = caiu;; 0 = nenhuma. -
EX096 — Decisão de falha. Que caminho faz soft-fail nas verificações de revogação, e qual faz hard-fail?
Mostrar critérios de avaliação
Rubrica: 3 = a ingestão das validações faz soft-fail por pouco tempo; o acesso administrativo faz hard-fail;; 2 = os dois;; 1 = invertido;; 0 = nenhuma.
Síntese
A engenharia de confiabilidade se aplica aos serviços de segurança, e as escolhas entre falhar aberto ou falhar fechado precisam decorrer dos ativos e das ameaças.