◇ OpenCyber Academy
Tecnólogo · Capítulo 22 · Português

Capítulo 22 — Segurança de TO, IoT e sistemas ciberfísicos: automação

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 22 — Segurança de TO, IoT e sistemas ciberfísicos: automação

Mapa da aula

Aula 22 publicada. Mapa, exemplo, EX064.

flowchart TD
  N0["22.1 O que automatizar"]
  N1["22.2 Lendo o relatório"]
  N2["22.3 Reporte, não altere"]
  N3["22.4 Agendamento e registro"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX064"]

Desenho lógico

flowchart LR
  N0["22.1 O que automatizar"]
  N1["22.2 Lendo o relatório"]
  N2["22.3 Reporte, não altere"]
  N3["22.4 Agendamento e registro"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX064"]
[22.1 O que automatizar]
    |
    v
[22.2 Lendo o relatório]
    |
    v
[22.3 Reporte, não altere]
    |
    v
[22.4 Agendamento e registro]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX064]

Objetivos de aprendizagem

Você vai (1) automatizar verificações de rotina, como a expiração de certificados; (2) desenhar automações que reportam em vez de alterar sistemas de TO; (3) agendar e registrar tarefas automatizadas; e (4) tratar falhas da própria automação.

22.1 O que automatizar

Boas candidatas são verificações repetitivas com regras claras: expiração de certificados, conclusão de backups, deriva do inventário (o Capítulo 11 executado semanalmente), comparação de fluxos (o Capítulo 12 executado diariamente sobre capturas novas). Más candidatas são ações em controladores ativos; essas continuam manuais e aprovadas.

"""Lab 22: report days until expiry for synthetic IoT logger certificates."""
from datetime import date
today = date(2026, 10, 12)
certs = {"LOG-01": date(2026, 11, 2), "LOG-02": date(2027, 6, 30), "LOG-03": date(2026, 10, 5), "LOG-04": date(2026, 12, 20)}
for dev, exp in sorted(certs.items(), key=lambda kv: kv[1]):
    d = (exp - today).days
    flag = "EXPIRED" if d < 0 else "renew-now" if d <= 30 else "plan" if d <= 90 else "ok"
    print(f"{dev} expires {exp} in {d:4} days -> {flag}")

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

LOG-03 expires 2026-10-05 in   -7 days -> EXPIRED
LOG-01 expires 2026-11-02 in   21 days -> renew-now
LOG-04 expires 2026-12-20 in   69 days -> plan
LOG-02 expires 2027-06-30 in  261 days -> ok

As verificações de Priya começam pela verificação de expiração de certificados acima; a primeira execução encontrou um certificado expirado e um com renovação devida. A verificação lê a expiração do certificado de cada registrador na exportação do fornecedor e classifica os registradores em expirado, renovar agora, planejar e ok. A primeira execução deu LOG-03 expirado, LOG-01 com 21 dias, LOG-04 com 69 dias e LOG-02 ok, com 261 dias.

22.2 Lendo o relatório

O certificado do LOG-03 expirou há uma semana, então esse registrador provavelmente está falhando ao conectar e há leituras faltando. O LOG-01 tem 21 dias restantes e precisa de renovação agora, dados os prazos do fornecedor. O LOG-04 deve ser planejado; o LOG-02 está bem. Ordenar pela data de expiração põe os itens urgentes primeiro. Priya agendou a verificação para as 06:00, diariamente. A primeira execução abriu chamados para o LOG-03 e o LOG-01. O fornecedor confirmou que o LOG-03 tinha parado de enviar dados em 5 de outubro; o gerente de qualidade registrou uma lacuna de sete dias nos registros da nuvem para aquela sala, coberta pelo histórico da sonda do CLP no HIST.

22.3 Reporte, não altere

O script imprime e poderia enviar o relatório por e-mail; ele não renova certificados sozinho. A renovação passa pelo processo do fornecedor, porque uma renovação automática que falhe pela metade poderia deixar um registrador offline. A verificação de Priya abre chamados; ela não age. O LOG-01, com 21 dias restantes, foi renovado pelo processo do fornecedor dentro da semana, e o chamado registra a nova data de expiração. Se o script tivesse tentado renovar o LOG-03 automaticamente e falhado pela metade, a NCS poderia ter perdido um segundo registrador sem saber. Manter o script apenas reportando também significa que ele não precisa de acesso de escrita ao portal do fornecedor, então as suas credenciais valem menos se o host de gerenciamento for comprometido.

22.4 Agendamento e registro

Execute a verificação diariamente a partir de um agendador num host de gerenciamento na VLAN de gerenciamento de TO, grave a saída num log com carimbos de tempo e alerte se a tarefa não tiver rodado. Uma falha silenciosa da automação é pior que nenhuma automação, porque as pessoas param de verificar manualmente. Na NCS, a tarefa roda no host de gerenciamento de TO às 06:00, registra cada execução com o seu carimbo de tempo, e o agendador gera um alerta se nenhuma linha de log aparecer até as 06:15. Esse alerta importa porque a verificação de certificados é hoje a única razão pela qual alguém olha as datas de expiração dos registradores.

Exemplo resolvido (NCS sintética)

Priya agenda a verificação para as 06:00, diariamente. A primeira execução dispara um chamado para o LOG-03 (expirado) e o LOG-01 (renovar agora). O fornecedor confirma que o LOG-03 parou de enviar dados em 5 de outubro; o gerente de qualidade registra uma lacuna de sete dias nos registros da nuvem para aquela sala, coberta pelo histórico da sonda do CLP no HIST.

Caso sintético — Northgate Cold Storage. As datas e os dispositivos são inventados.

Erros e limites

O script usa uma data "de hoje" fixa para que a sua saída seja reproduzível; uma versão de produção usaria a data atual. As datas dos certificados precisam vir dos dispositivos ou do fornecedor, e não de uma tabela digitada à mão.

Exercícios

Síntese

Automatize verificações que reportam com clareza e falham ruidosamente; mantenha as mudanças em dispositivos de TO em mãos humanas e aprovadas.

Continue estudando — capítulo 22 de 30

← Capítulo 21 · Índice de capítulos do curso · Capítulo 23 →

Siga para a próxima lição escrita.