O seu serviço sem sistema operativo
Um unikernel é um único programa autónomo que corre diretamente num servidor virtual (KVM), sem Linux, sem shell e sem processos. Adaptamos o seu serviço a uma base destas e basta arrancá-lo a partir de uma única imagem de disco. A base foi desenvolvida por nós e provada no nosso próprio produto, o broker MQTT urMQTT.
Vantagens
Superfície de ataque reduzida
Uma única imagem ligada estaticamente, sem sistema operativo, shell nem processos de utilizador; abre-se apenas o que o serviço precisa. Os componentes em que não se pode confiar totalmente (por exemplo, uma biblioteca em C) podem correr isolados, num espaço de endereços próprio e sem acesso ao kernel.
Menos manutenção
Não há sistema operativo para atualizar: uma nova versão é uma nova imagem. A imagem tem apenas alguns megabytes.
Menos peças, menos surpresas
O comportamento é definido por um único programa e pela sua configuração; não há serviços em segundo plano, pacotes nem coisas que arrancam sozinhas.
A configuração são dados
As definições e os certificados são empacotados numa configuração validada, verificada em cada arranque; a imagem imprime a impressão digital da sua configuração, para poder verificar que é a que encomendou.
A segurança faz parte da base
TLS 1.3 com autenticação mútua, proteção contra inundações de rede, limites de recursos e um watchdog evitam que um cliente com defeito pare os restantes; o armazenamento é testado com um corte de energia em cada escrita, com cifra de disco opcional.
Verificável e sem dependência
Compilações reprodutíveis, versões assinadas, lista de componentes de software (SBOM), base de código aberto e um pacote de auditoria que também enumera as fraquezas conhecidas.
Serve ambientes pequenos e grandes
O mesmo código corre em servidores virtuais aarch64 e x86_64.
O que oferecemos
Preço de tudo: sob consulta
Avaliação de viabilidade
Analisamos o seu serviço (linguagem, dependências, necessidades de rede e de disco) e dizemos-lhe o que é possível, o que tem de mudar e quanto trabalho dá, antes de se comprometer com qualquer outra coisa.
Adaptação do seu serviço ao unikernel
Portamos o serviço (mais fácil em Rust; bibliotecas C num worker isolado) para a nossa base: rede, TLS, armazenamento, configuração e registo de eventos.
Um piloto no seu servidor
Colocamos o serviço a funcionar na sua infraestrutura (KVM), testamo-lo com o seu tráfego e entregamos um relatório de desempenho.
Suporte e manutenção
Atualizações da imagem, tratamento de vulnerabilidades comunicadas e formação da sua equipa.
urMQTT como produto pronto
Se precisa de um broker MQTT: uma imagem configurada e assinada com os seus certificados.
Um bom candidato e um pior
Bom: um serviço com um único propósito que aceita ligações de rede: um servidor de protocolo, um gateway, um recolhedor de dados, um ponto final TLS, um dispositivo de periferia. Pior: um programa que precisa do ecossistema Linux, de um sistema de ficheiros, de muitos processos ou de um grande número de ligações de saída. A base atual aceita ligações (servidor TCP), não abre ligações TCP de saída e suporta apenas IPv4; as extensões avaliam-se por projeto.
Plataformas e linguagens: o que suportamos hoje
| Plataforma | Estado |
|---|---|
| Servidores virtuais KVM, aarch64 | Verificado (Apple HVF e TCG) |
| Servidores virtuais KVM, x86_64 (UEFI e BIOS) | Executado num VPS KVM real (AMD EPYC), mais testes em emulador; não experimentado em hardware físico |
| Dispositivos virtuais | virtio (rede, disco, SCSI, números aleatórios) |
| Rede | IPv4; TCP como servidor (aceita ligações, não abre ligações de saída) |
| Servidores físicos (bare metal), VMware, Hyper-V, Xen | Não suportados (ainda) |
| Linguagem do serviço | Estado |
|---|---|
| Rust | A escolha natural: toda a base está em Rust |
| C | Apenas como programa isolado com a nossa pequena camada libc (é assim que corre o SQLite); não é POSIX |
| C++ | Possível como C, por provar; avalia-se por projeto |
| Go, Java, Python, Node.js, .NET, PHP | Não suportados: precisam de um sistema operativo. Nesse caso o serviço é reescrito em Rust, ou fica em Linux com um gateway unikernel na periferia |
O que deve saber logo à partida
A base está numa fase inicial (anterior à versão 1.0). Destina-se a servidores virtuais KVM; o x86_64 já correu num VPS KVM real e num emulador, mas não em hardware físico; o Secure Boot é parcial e ainda não foi feita uma auditoria de segurança independente. Por isso oferecemos um piloto com suporte, e não um produto certificado.
Exemplo: urMQTT
Um broker MQTT sobre essa base: TLS 1.3 com autenticação mútua, revogação de certificados sem uma nova imagem, uma base de dados SQLite isolada, cifra de disco opcional. Veja o código-fonte no GitHub ou contacte-nos.