Mapa da aula
Aula 16 publicada. Mapa, exemplo, EX046.
flowchart TD
N0["16.1 Requisitos testáveis"]
N1["16.2 Rastreabilidade"]
N2["16.3 Interfaces"]
N3["Nota prática"]
N4["16.1b Glossário e aposentadoria"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX046"]
Desenho lógico
flowchart LR
N0["16.1 Requisitos testáveis"]
N1["16.2 Rastreabilidade"]
N2["16.3 Interfaces"]
N3["Nota prática"]
N4["16.1b Glossário e aposentadoria"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX046"]
[16.1 Requisitos testáveis]
|
v
[16.2 Rastreabilidade]
|
v
[16.3 Interfaces]
|
v
[Nota prática]
|
v
[16.1b Glossário e aposentadoria]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX046]
Objetivos de aprendizagem
Você vai (1) escrever requisitos de segurança de TO testáveis; (2) rastrear um requisito até uma regra de conduto e um laboratório; (3) gerir as interfaces entre CLP, SIS, historiador e monitores de segurança.
16.1 Requisitos testáveis
"A planta deve ser segura" não é um requisito. "Nenhum host fora do L1/L2 deverá iniciar escritas nos registradores de retenção do PLC-A; verificado por análise de alcançabilidade e por testes da lista de permissões sobre dados de teste sintéticos" é. Cada requisito precisa de um id, de uma declaração com "deverá", de um método de verificação e de um dono.
Lena atribui a cada requisito do CNHP um id, como R-12, e um dono antes de qualquer trabalho de projeto começar. Um requisito sem método de verificação volta ao autor. Lena também confere se cada um pode ser testado sobre dados de teste sintéticos, porque um requisito que só pode ser verificado escrevendo num controlador em operação não pode ser aceito.
16.2 Rastreabilidade
Matriz: requisito para elemento de projeto para caso de teste para evidência da planta. Quando uma constatação mostra um conduto para o SIS, você sabe qual requisito e qual teste falharam. Sem a matriz, as análises pós-incidente viram busca de culpados.
Lena mantém a matriz como um arquivo no repositório do CNHP, atualizado no mesmo pull request que a política que ela descreve. Cada linha liga um requisito como o R-12 à lista de arestas zoneada, ao teste de alcançabilidade e ao hash mais recente da exportação do firewall. Quando um teste falha, a matriz mostra qual requisito está em risco e quem é o seu dono.
16.3 Interfaces
O PLC-A publica valores de processo; o SIS-B consome sensores dedicados; o historiador consome tags do CLP; o monitor serial consome um tap somente de escuta. Acordem as listas de tags e as taxas de atualização. Uma mudança de interface é uma solicitação de mudança, não uma edição silenciosa durante um lote.
Caso sintético — Ashford Batch Plant. O requisito R-12, "SIS não alcançável a partir do L4", é rastreado até a lista de arestas zoneada, o lab_reach.py e o hash trimestral da exportação do firewall no dossiê.
Lena mantém a lista de tags de cada interface no repositório, com o seu dono e a sua taxa de atualização.
16.4 Erros e limites
As matrizes de rastreabilidade apodrecem se não forem atualizadas no mesmo PR que a política. Mantenha-as ao lado do código.
A integração contínua de Lena reprova um pull request que muda um arquivo de política sem tocar a matriz, o que mantém os dois em sincronia. Cada linha também traz a data da sua última verificação. As linhas não conferidas há um trimestre são sinalizadas na reunião de revisão, porque uma ligação antiga muitas vezes está quebrada. Os donos confirmam cada linha anualmente.
Nota prática
Ponha os ids dos requisitos nos nomes dos objetos do firewall e nos comentários de configuração dos detectores (req=R-12). Poder buscar durante um incidente vale mais do que um slide que um dia mapeou requisitos para módulos.
16.1b Glossário e aposentadoria
Mantenha um glossário de uma página: permissão de trabalho, ConduitSet, lista de permissões, técnica planejada, evidência lacrada. As partes interessadas usam mal "cobertura" e "risco" o tempo todo; o glossário é um artefato de requisitos. A rastreabilidade também cobre a aposentadoria: quando um requisito é retirado, marque-o como substituído, com um ponteiro, em vez de apagar a linha. As constatações históricas ainda citam os ids antigos.
Os SLAs internos entre serviços importam: o monitor pode precisar que o repositório de constatações aceite um evento em até N segundos durante uma condição de parada. Escreva isso como um requisito, com um teste de carga sintético. Sem ele, os avisos de condição de parada chegam depois que a pessoa já ligou para a segurança de processo.
Exercícios
- EX046 — "Deverá". Reescreva "impedir o escritório de tocar o SCADA" como dois requisitos com "deverá". Rubrica: 3 = dois "deverá" testáveis, com método de verificação; 2 = um bom; 1 = ainda vago; 0 = nada.
- EX047 — Rastreio. Para o R-12, nomeie o artefato e o sinal de teste que falha. Rubrica: 3 = arestas zoneadas + L1-SIS em reach(L4); 2 = um; 1 = vago; 0 = nada.
- EX048 — Interface. Liste três campos de um contrato de interface de lista de tags. Rubrica: 3 = nome da tag, tipo/unidades de engenharia, taxa de atualização (ou equivalente); 2 = dois; 1 = um; 0 = nada.
Síntese
Requisitos que você pode testar, ligações que você pode seguir, interfaces que você versiona.