Hyperlight WASM: 高速で、安全、そしてOS不要
(opensource.microsoft.com)- Hyperlight Wasmは、MicrosoftがCNCFに寄贈した**超軽量仮想マシン(VM)**技術 Hyperlight の最新拡張版で、**WebAssembly(Component Model ベース)**ワークロードを高速かつ安全に実行する
- 従来のVMと異なり、OSや仮想デバイスなしでメモリスライスとCPUのみを公開し、1〜2msの高速な起動時間を実現
- さまざまな言語(C、Rust、Go、Python、JS など)で書かれた wasm コンポーネントをハイパーバイザー保護下で実行可能
Hyperlight Wasmの主な特徴
-
従来のVMより高速な性能
- 従来のVM: デバイス初期化 → カーネル読み込み → OS起動 → アプリケーション実行 (約125ms)
- Hyperlight Wasm: メモリスライスの作成 + Wasm のロードだけで実行可能 (1〜2ms、将来的には <1ms を目標)
- 高速な実行速度はオンデマンドのサーバーレス実行や最小限の warm pool 構成に有利
-
OSなしでも多様な言語を実行可能
- 標準である WASI と WebAssembly Component Model を基盤として、ほとんどの言語で書かれたコンポーネントを実行可能
- wasmtime ランタイムを内蔵し、Python、JavaScript、C# などインタープリタ言語もランタイム同梱の形で実行可能
- 開発者は単に
wasm32-wasip2ターゲット向けにコンパイルするだけで Hyperlight 上で実行可能
-
セキュリティ向上 (二重サンドボックス)
- Wasm サンドボックス + ハイパーバイザー基盤のVMサンドボックスによる二重保護構造
- 攻撃者が wasm から脱出しても、さらに VM サンドボックスを迂回する必要がある
開発例: Rust ベースの UDP Echo サーバー実行
wkgCLI で wasm バイナリをダウンロードしてコンパイル- WASI インターフェース定義ファイル(
.wit)をバイナリに変換してバインディングを生成 hyperlight_component_macroとhost_bindgen!を通じてWasm の import/export インターフェースのバインディングを自動生成- UdpSocket インターフェースの実装を通じて echo サーバーのロジックを定義
hyperlight-wasmサンドボックスを作成して wasm コンポーネントをロードおよび実行-
Ahead-of-Time コンパイル
hyperlight-wasm-aotツールを使って wasm を AOT コンパイルし、実行時間を短縮cargo runでサーバーを実行し、nc -uコマンドで UDP テスト可能
拡張性と今後の計画
- Hyperlight Wasmはx86だけでなく Arm64 アーキテクチャにも対応予定
- 現在は WASI インターフェースを直接実装する必要があるが、今後は基本バインディングを提供予定
- HTTP サーバーなどのシンプルなサービスを素早くサンドボックス化できるようにする計画
オープンソースコミュニティ参加案内
- Hyperlight はApache 2.0 ライセンスで公開された Microsoft のオープンソースプロジェクトで、CNCF Sandbox に登録されている
- Hyperlight Wasmはクラウドネイティブコンピューティングに適した高速で安全な実行環境の提供を目標としている
- GitHub リポジトリを通じてコードの確認および貢献が可能
👉 GitHub リポジトリ: hyperlight-wasm
2件のコメント
Hyperlight - 軽量仮想マシンマネージャー(VMM) | GeekNews
Hacker Newsの意見
数か月前からWebAssemblyを本格的に使って、複数の言語で動作するバックエンド認証ライブラリを作り始めた
数か月前にHyperlightという軽量VMMを発表した
とても期待している
面白そう
すばらしい
すべてのクールで興味深いプロジェクトを見ると、WASMはブラウザ以外のあらゆる場所で成功しているように思える
これをPromoxのセットアップにどう組み込めるか、何かアイデアはある?
インスタンスはどのように起動され、管理されるのか?
基本的には、ハードウェアVM内でプログラムをサンドボックス化するためのVM(wasm)があり、これはユーザー空間プロセス(Linuxプロセス)内でプログラムを分離するための抽象化だということか
ユニカーネル/ライブラリOSなのか?