IoT Sentinel — Credenciais Seguras e Channels para Dispositivos Complexos

IoT Sentinel — Credenciais Seguras e Channels para Dispositivos Complexos

Este post é o sexto de uma série de oito partes sobre o IoT Sentinel. Aqui falo sobre armazenamento seguro de credenciais e modelagem de dispositivos complexos.


O problema das credenciais

Você tem 30 dispositivos IoT em casa. Cada um com seu painel de administração, cada um com um usuário e senha diferente. Câmeras IP com admin/admin que você jurou que ia mudar. Smart switches com aquela senha gerada pelo app que ninguém lembra. O roteador com a senha que você definiu há três anos e nunca mais tocou. O PLC com credenciais que vieram de fábrica e que, sim, você deveria ter trocado.

Onde estão essas credenciais hoje? Aposto que a resposta é uma combinação de: planilha no Google Sheets, nota no Notion, arquivo .txt perdido na área de trabalho, post-it colado atrás do monitor, ou a opção mais popular — memória. Cada uma dessas abordagens tem seus problemas óbvios. A planilha é acessível por qualquer pessoa com acesso à sua conta Google. O arquivo de texto está em plain text no disco. O post-it é… um post-it. E a memória falha justamente quando você precisa acessar aquela câmera às 2 da manhã porque o alarme disparou.

Eu precisava de algo que vivesse junto com o inventário dos dispositivos, que fosse criptografado de verdade, e que não dependesse de serviços externos.


Credenciais criptografadas no IoT Sentinel

O Sentinel resolve isso de forma direta. Cada dispositivo (Thing) tem um campo de credenciais com três informações: username, password e notes. O campo de notas é útil para guardar informações extras — tipo “senha do modo AP”, “pin de reset” ou “chave de API do firmware”.

A parte que importa: as credenciais são criptografadas com AES-256-GCM antes de serem persistidas. Esse é o mesmo padrão usado por bancos, serviços de cloud e gerenciadores de senha. A chave de criptografia é gerada automaticamente na primeira inicialização do sistema — 32 bytes aleatórios via crypto.randomBytes — e salva em disco com permissão restrita (0o600, somente o owner lê e escreve). Cada operação de criptografia gera um IV (initialization vector) único de 12 bytes, junto com um authentication tag que garante integridade. Ou seja, mesmo que alguém acesse o banco de dados diretamente, o que vai encontrar é uma string hexadecimal ilegível.

Na prática, o fluxo funciona assim:

  1. Você abre o dispositivo no Sentinel
  2. Vai até a seção de credenciais
  3. Preenche username, password e notas opcionais
  4. Salva

A partir desse ponto, as credenciais nunca aparecem em listagens de dispositivos nem em respostas da API de listagem. Elas só são buscadas e descriptografadas sob demanda, quando você explicitamente acessa a tela de credenciais de um dispositivo específico.

A senha é exibida mascarada com pontos. Não existe opção de “mostrar senha” em texto claro na tela. Em vez disso, há um botão de copiar que joga o valor direto para o clipboard. Você copia, cola onde precisa, e a senha nunca ficou visível para quem estava olhando por cima do seu ombro.


Channels: para dispositivos com múltiplas saídas

Nem todo dispositivo IoT é uma coisa simples com uma função só. Uma câmera tem uma saída de vídeo. Um sensor de temperatura mede uma variável. Mas e um PLC com 26 saídas digitais? E um smart switch com 4 portas Ethernet, cada uma conectando um dispositivo diferente?

Esse tipo de equipamento não cabe no modelo mental de “um dispositivo = uma coisa”. Um PLC é um dispositivo, mas cada saída dele controla algo completamente diferente — a luz da cozinha, o portão da garagem, a irrigação do jardim, a sirene do alarme. Se você registra só o PLC no inventário, perde toda a informação sobre o que cada saída faz.

Para resolver isso, o Sentinel tem o conceito de Channels. Um Channel representa uma porta, saída ou entrada individual de um dispositivo complexo. Cada channel tem os seguintes campos:

  • number: o número da porta/saída física (ex: 1, 2, 14, 26)
  • direction: input, output ou bidirectional
  • name: nome descritivo (ex: “Luz Cozinha”, “Irrigação Jardim”)
  • type: classificação — light, motor, sensor, relay, camera, port ou other
  • description: detalhes adicionais sobre o que aquele channel faz

Outro exemplo prático: um smart switch gerenciável com 4 portas. Cada porta conecta um dispositivo diferente — um access point na porta 1, uma câmera na porta 2, um NAS na porta 3, um Raspberry Pi na porta 4. Sem channels, você sabe que o switch existe, mas não sabe o que está plugado em cada porta. Com channels, essa informação está documentada e acessível.


Caso de uso: mapeando um PLC de automação

Esse cenário é pessoal. Minha formação é em Engenharia de Automação, e já trabalhei com painéis de automação residencial que usam PLCs com dezenas de saídas. O cenário clássico é o seguinte: um PLC com 26 saídas digitais montado dentro de um quadro de automação, com 26 cabos saindo para diferentes pontos da casa. Cada saída controla um circuito — iluminação de ambientes, motor do portão, válvula solenoide da irrigação, acionamento de persianas, sirene.

Antes do Sentinel, a pergunta “qual saída controla a irrigação do jardim?” tinha uma resposta dolorosa: abrir o quadro de automação, identificar o PLC, rastrear o cabo da saída até o borne de conexão, seguir o borne até o circuito de campo. Ou procurar aquele diagrama elétrico que o instalador fez em AutoCAD há cinco anos e que ninguém sabe onde está.

Depois do Sentinel, a resposta é: abrir o navegador, acessar o dispositivo “PLC Quadro Principal”, ir na aba de channels, e ler: “Canal 14 — Irrigação Jardim, output, relay”. Pronto. Sem abrir quadro, sem rastrear cabos, sem procurar documentação perdida.

Isso vale para qualquer pessoa que precise interagir com o sistema. Se um eletricista precisa fazer manutenção, você abre o Sentinel no celular e mostra a lista de channels. Se alguém da família pergunta qual é o circuito que está dando problema, você consulta em segundos. A documentação está viva, atualizada, e acessível de qualquer lugar.


Próximo passo

Com credenciais seguras e dispositivos complexos mapeados, o inventário está completo. Mas inventário estático não responde a pergunta mais importante do dia a dia: “está funcionando agora?”. Na próxima parte, vamos ver como o Sentinel monitora seus dispositivos em tempo real e te avisa quando algo cai.

Parte 7 — Monitoramento Real-Time