La società Microsoft ha presentato il progetto Hyperlight, che sviluppa un hypervisor progettato per essere integrato nelle applicazioni con l'obiettivo di eseguire in modo isolato codice non fidato o che richiede protezione speciale. L'hypervisor è implementato come una libreria condivisa, che consente l'esecuzione di singole funzioni in macchine virtuali leggere (micro-VM) e organizza lo scambio di dati con queste funzioni. Il codice del progetto è scritto in linguaggio Rust e distribuito sotto licenza Apache 2.0.
Rispetto all'avvio di tradizionali macchine virtuali Hyperlight consente di ottenere latenze ridotte e costi operativi minimi. In Hyperlight, le latenze nella creazione di macchine virtuali sono di 1-2 millisecondi, il che consente l'isolamento a livello di avvio delle funzioni. A titolo di confronto, l'avvio di una normale macchina virtuale avviene in non meno di 120 millisecondi, mentre l'avvio di un ambiente sandbox isolato per l'esecuzione di codice WebAssembly tramite il runtime Wasmtime richiede 0,03 millisecondi.
Per l'isolamento sulla piattaforma Linux, è supportato l'uso degli hypervisor KVM e mshv (Microsoft Hypervisor su Azure Linux), mentre sulla piattaforma Windows – WHP (Windows Hypervisor Platform) e WSL2 (Windows Subsystem for Linux 2) con KVM. La piattaforma macOS non è attualmente supportata. Un nucleo e un sistema operativo separati in macchina virtuale non vengono utilizzati. L'hardware per la macchina virtuale è costituito da un programma di avvio autonomo, che include il codice della funzione da eseguire racchiuso in un runtime e un kernel minimo specializzato. Nella macchina virtuale viene utilizzato un singolo frammento di memoria lineare e viene assegnata una CPU virtuale, senza mappatura di dispositivi e senza separazione in processi.
Il processo di sviluppo si basa sul collegamento del codice principale dell'applicazione con la libreria Hyperlight Host, che coordina l'avvio delle macchine virtuali, e del codice delle funzioni in modalità isolata (funzioni guest) con la libreria Hyperlight Guest, che fornisce un'API per l'interazione con la parte esterna dell'applicazione e opportunità per l'esecuzione isolata del codice senza un ambiente operativo.

Lo strato fornito per l'interazione tra l'applicazione host e le funzioni isolate consente non solo di invocare funzioni isolate dalle applicazioni host, ma anche di accedere alle funzioni delle applicazioni host dalle funzioni isolate. L'elenco delle funzioni esterne consentite per l'invocazione dalle funzioni isolate è severamente regolamentato. Per impostazione predefinita, l'accesso dalle funzioni isolate è limitato a una API minima, che consente di inviare messaggi all'applicazione host.
In futuro, Microsoft prevede di trasferire il progetto a un'organizzazione non-profit, la Cloud Native Computing Foundation (CNCF), per uno sviluppo collaborativo su una piattaforma neutrale, indipendente dai singoli produttori. L'organizzazione CNCF opera sotto l'egida della Linux Foundation e supervisiona lo sviluppo di progetti come Kubernetes, etcd, Cilium, Containerd, cri-o, Flux, Helm, Istio e gRPC.
Fonte: opennet.ru
