Microsoft ha presentato il progetto Hyperlight, che sviluppa un ipervisore progettato per essere integrato nelle applicazioni al fine di eseguire codice non attendibile o che richiede particolare protezione in modo isolato. L'ipervisore è realizzato come una libreria condivisa, che offre l'esecuzione di singole funzioni in micro-macchine virtuali (micro-VM) e gestisce lo scambio di dati con queste funzioni. Il codice del progetto è scritto in Rust e distribuito con licenza Apache 2.0.
Rispetto all'avvio di tradizionali di macchine virtuali Hyperlight consente di ottenere latenze basse e costi operativi minimi. In Hyperlight, le latenze nella creazione delle macchine virtuali sono di 1-2 millisecondi, il che consente di applicare l'isolamento a livello di avvio delle funzioni. A titolo di confronto, l'avvio di una macchina virtuale normale richiede almeno 120 millisecondi, mentre l'avvio di un ambiente sandbox isolato per l'esecuzione di codice WebAssembly utilizzando Wasmtime runtime richiede 0.03 millisecondi.
Per l'isolamento sulla piattaforma Linux è supportato l'uso di hypervisor KVM e mshv (Microsoft Hypervisor in 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 kernel e un sistema operativo separati in macchina virtuale non sono utilizzati. Il contenuto della macchina virtuale è costituito da un programma autonomo avviabile, che include il codice della funzione eseguibile all'interno di un runtime e di un kernel minimale specializzato. Nella macchina virtuale viene utilizzato un frammento di memoria lineare unico e viene assegnato un CPU virtuale, senza mappatura delle risorse e senza separazione in processi.
Il processo di sviluppo si basa sul legame del codice sorgente principale dell'applicazione con la libreria Hyperlight Host, che coordina l'avvio delle macchine virtuali, e il codice delle funzioni eseguibili in modalità isolata (funzioni guest) con la libreria Hyperlight Guest, che fornisce API per l'interazione con la parte esterna dell'applicazione e opportunità per l'esecuzione isolata del codice senza l'ambiente operativo.

Lo strato di interazione fornito tra l'applicazione host e le funzioni isolate consente non solo di chiamare funzioni isolate dalle applicazioni host, ma anche di accedere alle funzioni delle applicazioni host dalle funzioni isolate. L'elenco delle funzioni esterne consentite per essere chiamate dalle funzioni isolate è rigidamente regolamentato. Per impostazione predefinita, l'accesso dalle funzioni isolate è limitato a un'API minima che permette di inviare messaggi all'applicazione host.
In futuro, Microsoft prevede di trasferire il progetto a una organizzazione no-profit, la Cloud Native Computing Foundation (CNCF), per lo sviluppo collaborativo in una piattaforma neutrale, indipendente dai singoli fornitori. 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
