OpenCyber Academy
Tecnólogo · Capítulo 9 · Português
Código do curso: OCA-092Capítulo 09: OCA-092-C009

Capítulo 9 — Evidência e medição

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 O que uma boa medida declara"]
  N1["9.2 Distribuições, e não só médias"]
  N2["9.3 Itens em aberto e viés de sobrevivência"]
  N3["9.4 Amostras pequenas precisam de intervalos"]
  N4["9.6 Atividade prática: medidas honestas"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX025"]

Desenho lógico

flowchart LR
  N0["9.1 O que uma boa medida declara"]
  N1["9.2 Distribuições, e não só médias"]
  N2["9.3 Itens em aberto e viés de sobrevivência"]
  N3["9.4 Amostras pequenas precisam de intervalos"]
  N4["9.6 Atividade prática: medidas honestas"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX025"]
[9.1 O que uma boa medida declara]
    |
    v
[9.2 Distribuições, e não só médias]
    |
    v
[9.3 Itens em aberto e viés de sobrevivência]
    |
    v
[9.4 Amostras pequenas precisam de intervalos]
    |
    v
[9.6 Atividade prática: medidas honestas]
    |
    v
[Síntese do capítulo]
    |
    v
[Exemplo resolvido] --> [Exercício EX025]

Objetivos de aprendizagem e conexão

Depois deste capítulo, você deve ser capaz de:

Todos os capítulos seguintes pedem que você prove algo com evidências: que um controle funciona, que a aplicação de patches é tempestiva, que uma restauração cumpre a sua meta. A medição é como um implementador transforma "está tudo bem" numa afirmação que alguém pode conferir. É também como as organizações se enganam — em geral não mentindo, mas escolhendo um denominador conveniente.

9.1 O que uma boa medida declara

Uma medida é útil quando outra pessoa conseguiria recalculá-la. Declare a pergunta ("com que rapidez instalamos as correções dos fornecedores nos controladores das estações?"), a população (quais ativos, quais correções), o numerador e o denominador, o período, a fonte dos dados e o que é excluído e por quê. Uma cifra de conformidade de patches de "96 %" sem denominador pode significar 96 % dos laptops do escritório, o que nada diz sobre as estações de bombeamento.

A mediana agregada de 9 dias do Laboratório 9 falha nesse teste: não informa a população, e o seu denominador exclui em silêncio sete correções em aberto.

9.2 Distribuições, e não só médias

As grandezas operacionais — tempo para aplicar o patch, tempo para restaurar, tempo de resposta a alertas — costumam ser assimétricas: a maioria é rápida, algumas são muito lentas, e as lentas são as que importam. A mediana descreve o caso típico; o percentil 90 (p90) descreve os casos ruins; a média é puxada pelos valores extremos e não descreve bem nenhum dos dois. Relate a mediana e o p90 juntos, e olhe para o máximo.

No Laboratório 9, a mediana de 95 dias dos controladores das estações, com cinco correções ainda em aberto, é a cifra que a mediana agregada escondia.

9.3 Itens em aberto e viés de sobrevivência

Um erro comum nas medidas de latência é calculá-las apenas sobre os itens concluídos. Se cinco correções para os controladores das estações foram lançadas, mas não instaladas, elas são as mais lentas de todas — e são invisíveis para uma mediana calculada sobre as correções instaladas. Relate sempre quantos itens ainda estão em aberto e há quanto tempo. A orientação do NIST sobre gestão corporativa de patches trata a aplicação de patches como um processo de resposta a riscos com uma tempestividade mensurável, e recomenda métricas que a reflitam (NIST SP 800-40 Rev. 4).

Agregar grupos com comportamentos muito diferentes é a armadilha relacionada. Uma única mediana sobre a TI de escritório, os servidores e os controladores das estações é dominada pelo grupo com mais itens — em geral a TI de escritório — e esconde o grupo de maior consequência.

9.4 Amostras pequenas precisam de intervalos

Os testes em serviços críticos são caros, então as amostras são pequenas: dez exercícios de restauração, oito alertas de teste injetados. "9 de 10 exercícios cumpriram a meta" é um fato; "a nossa taxa de sucesso de restauração é de 90 %" é uma afirmação exagerada. Um intervalo de confiança mostra a faixa de taxas subjacentes compatíveis com os dados. Para proporções de amostras pequenas, o intervalo de escore de Wilson se comporta bem (Wilson, 1927). Para 9 de 10, o intervalo de Wilson de 95 % vai aproximadamente de 0,60 a 0,98: a taxa verdadeira poderia, de forma plausível, ser tão baixa quanto 60 %.

É por isso que a restauração de backup do Laboratório 23, com 9 de 10 exercícios na meta, ainda falha numa regra de afirmação cujo limite inferior precisa chegar a 0,70.

9.5 Exemplo resolvido: latência de patches e exercícios de restauração (sintético)

O relatório mensal da FSTS diz "mediana da latência de patches: 9 dias". O Laboratório 9 a recalcula por grupo. TI corporativa: 12 de 12 correções instaladas, mediana de 5,5 dias, p90 de cerca de 9. Relay/historiador: 6 de 8 instaladas, mediana de 18,5 dias, p90 de cerca de 31,5, duas ainda em aberto. CLP/RTU das estações: apenas 3 de 8 instaladas, mediana de 95 dias, cinco ainda em aberto. A mediana agregada de 9 dias está aritmeticamente correta e é operacionalmente enganosa: ela descreve laptops, e omite as sete correções em aberto — cinco delas nos ativos de maior consequência.

Os controladores das estações recebem patches mais devagar por bons motivos: os fornecedores precisam certificar as correções, e a instalação pode exigir uma visita ao local e uma janela de interrupção acordada com a operação (Capítulo 16). A medida não deve punir isso; deve mostrá-lo, para que os controles compensatórios possam ser justificados durante o período de exposição.

9.6 Atividade prática: medidas honestas

Laboratório 9 (salve como lab09.py, execute com python3 lab09.py):

# Lab 9 - measuring patch latency and a restore drill honestly (offline, standard library only)
# Synthetic: days from vendor fix release to installation, Fallowmere estate, last two quarters.
import math, statistics as st
latency = {"corp IT": [3, 5, 4, 9, 6, 2, 7, 5, 30, 4, 6, 8],
           "relay/historian": [12, 19, 15, 41, 22, 18],
           "station PLC/RTU": [64, 140, 95]}
not_yet = {"corp IT": 0, "relay/historian": 2, "station PLC/RTU": 5}  # fixes released but not installed
def pct(xs, p):
    xs = sorted(xs); k = (len(xs) - 1) * p; f = math.floor(k); c = math.ceil(k)
    return xs[f] + (xs[c] - xs[f]) * (k - f)
for g, xs in latency.items():
    n = len(xs) + not_yet[g]
    print(f"{g:<16} installed {len(xs):>2}/{n:<2} median {st.median(xs):>5.1f} d  p90 {pct(xs, .9):>6.1f} d  mean {st.mean(xs):>5.1f} d")
allx = [x for xs in latency.values() for x in xs]
print(f"pooled (misleading) median {st.median(allx):.1f} d over {len(allx)} installed fixes; {sum(not_yet.values())} still open are invisible to it")
def wilson(k, n, z=1.96):
    p = k / n; d = 1 + z*z/n; c = (p + z*z/(2*n)) / d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n)) / d
    return c - h, c + h
k, n = 9, 10  # restore drills that met the 4-hour target
lo, hi = wilson(k, n)
print(f"restore drills within target: {k}/{n} = {k/n:.0%}, 95% Wilson interval [{lo:.2f}, {hi:.2f}]")

Saída esperada (Python 3.13.5):

corp IT          installed 12/12 median   5.5 d  p90    8.9 d  mean   7.4 d
relay/historian  installed  6/8  median  18.5 d  p90   31.5 d  mean  21.2 d
station PLC/RTU  installed  3/8  median  95.0 d  p90  131.0 d  mean  99.7 d
pooled (misleading) median 9.0 d over 21 installed fixes; 7 still open are invisible to it
restore drills within target: 9/10 = 90%, 95% Wilson interval [0.60, 0.98]

Escreva a linha de relatório que você enviaria no lugar de "mediana da latência de patches: 9 dias". Ela deve caber em duas frases.

Uma linha de duas frases que passaria: "A TI corporativa instalou 12 de 12 correções, mediana de 5,5 dias; relay e historiador, 6 de 8, mediana de 18,5 dias, duas em aberto. Os controladores das estações instalaram 3 de 8, mediana de 95 dias, com cinco correções em aberto sob controles compensatórios e planos com data." Ela é mais longa que "9 dias", mas o leitor agora consegue ver onde está o risco, e os controladores das estações não estão mais escondidos atrás dos laptops do escritório.

9.7 Erros comuns e limites

As medidas descrevem o que foi registrado. Se os dados de origem estiverem incompletos — correções não registradas, exercícios não anotados —, nenhuma estatística vai consertar isso.

No Laboratório 9, a mediana agregada mostra três desses erros de uma vez: sem denominador, itens em aberto excluídos e grupos agregados.

Exercícios — capítulo 9

EX025 — Reescreva a linha do relatório. Objetivo: comunicar uma medida com honestidade. Entradas: a saída do Laboratório 9. Restrições: no máximo duas frases; inclua os denominadores e os itens em aberto. Etapas: escreva-a e depois liste o que você deixou de fora e por quê. Evidência esperada: a linha e uma nota. Rubrica: 3 = medianas ou p90 por grupo com contagens de instaladas/total, correções em aberto das estações mencionadas explicitamente, nenhuma cifra agregada apresentada como destaque; 2 = quase tudo; 1 = repete a mediana agregada; 0 = nada.

EX026 — Envelheça os itens em aberto. Objetivo: incluir os itens em aberto na medida. Entradas: as cinco correções em aberto das estações foram lançadas há 20, 45, 70, 130 e 200 dias; as duas correções em aberto do relay/historiador, há 10 e 35 dias. Restrições: trate a idade de cada correção em aberto como um limite inferior da sua latência. Etapas: (1) combine as latências das instaladas com as idades das em aberto para CLP/RTU das estações; (2) calcule uma mediana que seja um limite inferior; (3) explique por que isso é um limite inferior, e não uma estimativa. Evidência esperada: cálculo e explicação. Rubrica: 3 = valores combinados 20, 45, 64, 70, 95, 130, 140, 200 → limite inferior da mediana de 82,5 dias, corretamente explicado (os itens em aberto só vão envelhecer); 2 = deslize aritmético; 1 = ignora os itens em aberto; 0 = nada.

EX027 — Quantos exercícios? Objetivo: planejar o tamanho da amostra a partir de um intervalo. Entradas: a função de Wilson do Laboratório 9. Restrições: presuma que todo exercício tenha sucesso. Etapas: (1) encontre o menor número de exercícios consecutivos bem-sucedidos para o qual o limite inferior de Wilson de 95 % seja pelo menos 0,80; (2) diga se isso é viável a um exercício por mês e o que você faria em vez disso. Evidência esperada: o número, com a execução que o mostra, e um parágrafo. Rubrica: 3 = 16 exercícios (limite inferior ≈ 0,806; 15 dá ≈ 0,796), reconhecidos como 16 meses a um por mês, com alternativas sensatas, como restaurações parciais menores e mais frequentes ou testes de restauração automatizados; 2 = número certo, sem plano; 1 = chutado; 0 = nada.

Síntese do capítulo

Uma medida é útil quando declara a sua pergunta, população, numerador, denominador, período, fonte e exclusões. Relate medianas com percentis altos para grandezas assimétricas; inclua os itens em aberto; não agregue grupos com consequências diferentes; e acrescente intervalos às taxas de sucesso de amostras pequenas. O objetivo não é um número lisonjeiro, mas um que outra pessoa consiga recalcular e sobre o qual consiga agir.

Respostas comentadas

EX025 — Reescreva a linha do relatório. "Correções de fornecedores instaladas: TI corporativa 12/12 (mediana de 5,5 dias); relay/historiador 6/8 (mediana de 18,5 dias, 2 em aberto); controladores das estações 3/8 (mediana de 95 dias, 5 ainda em aberto, todas sob controles compensatórios). A mediana agregada de 9 dias não é relatada porque mistura grupos e exclui as correções em aberto." Deixados de fora: os valores de p90 e as médias (disponíveis no apêndice do relatório), para manter a manchete curta.

EX026 — Envelheça os itens em aberto. Valores das estações: instaladas 64, 95, 140; idades das em aberto 20, 45, 70, 130, 200. Ordenados: 20, 45, 64, 70, 95, 130, 140, 200; mediana = (70 + 95) / 2 = 82,5 dias. Isto é um limite inferior, porque a latência final de cada correção em aberto será de pelo menos a sua idade atual; a mediana verdadeira só pode subir à medida que as correções em aberto envelhecem. Ela difere da mediana apenas das instaladas (95 dias) — aqui, menor, porque várias correções em aberto são recentes —, o que mostra por que as duas precisam ser relatadas juntas, em vez de se escolher uma.

EX027 — Quantos exercícios? Calculando o limite inferior de Wilson para n sucessos em n: 15/15 dá cerca de 0,796, 16/16 cerca de 0,806. Então são necessários 16 exercícios consecutivos bem-sucedidos — 16 meses, a um exercício por mês. Alternativas: fazer restaurações parciais menores e mais frequentes (uma tabela ou um dia de dados por semana), automatizar os testes de restauração para uma instância de rascunho e manter o exercício completo trimestral; relatar cada tipo separadamente, para que a afirmação corresponda ao teste.