← Voltar ao início

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

Plataformas e linguagens: o que suportamos hoje
PlataformaEstado
Servidores virtuais KVM, aarch64Verificado (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 virtuaisvirtio (rede, disco, SCSI, números aleatórios)
RedeIPv4; TCP como servidor (aceita ligações, não abre ligações de saída)
Servidores físicos (bare metal), VMware, Hyper-V, XenNão suportados (ainda)
Linguagem do serviço
Linguagem do serviçoEstado
RustA escolha natural: toda a base está em Rust
CApenas 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, PHPNã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.