Об этом проекте
Hyperlight — это легковесный менеджер виртуальных машин (VMM), предназначенный для встраивания в виде библиотеки внутрь приложений, что позволяет им исполнять недоверенный код внутри изолированных гипервизором микровиртуальных машин. Это sandbox-проект Cloud Native Computing Foundation, и на данный момент он имеет версию до 1.0, поэтому API может меняться между релизами.
Как это работает: хост-приложение создаёт песочницу из гостевого бинарного файла и вызывает функции через границу виртуальной машины почти так же, как локальные функции. Гости — это специально созданные ELF-бинарники, написанные на no_std Rust или C, без гостевого ядра или операционной системы, что обеспечивает низкое время запуска и малый объём памяти. Хост и гость взаимодействуют через типизированные вызовы функций, и гости по умолчанию изолированы и не имеют доступа к файловой системе или сети хоста. Состояние гостя сохраняется между вызовами, а snapshot()/restore() позволяют сохранять и сбрасывать память виртуальной машины, чтобы песочницы можно было переиспользовать без повторного создания виртуальной машины.
Поддерживаемые гипервизоры включают KVM, MSHV и Windows Hypervisor Platform. В README приведён пример хоста, который регистрирует хост-функцию и вызывает гостя, а также пример гостя, использующий макросы, такие как #[host_function] и #[guest_function].
Заявленные сценарии использования включают запуск недоверенного или стороннего кода с изоляцией на уровне гипервизора, создание и удаление песочниц за миллисекунды, выполнение вызовов гостевых функций за микросекунды, встраивание изолированного исполнения в приложение, построение функций-как-сервиса с изоляцией гипервизора и переиспользование песочниц через snapshot и restore. Проект явно указывает, что он не предназначен для виртуализации общего назначения или для запуска полноценных Linux-гостевых рабочих нагрузок, которым требуются системные вызовы, сеть или доступ к файловой системе.
Репозиторий организован в виде библиотек хоста и гостя, обёртки C API, гостевой libc, собранной из picolibc, макросов гостя и компонентов, поддержки трассировки, общего разделяемого кода, определений схем FlatBuffer, инструмента дампа трассировки и тестовых гостевых программ на Rust и C. Связанные проекты включают cargo-hyperlight для сборки и создания заготовок гостей, hyperlight-wasm для модулей WebAssembly, hyperlight-js для JavaScript, hyperlight-sandbox для мультибэкендной песочницы с SDK на Python, .NET и Rust, а также hyperlight-unikraft для запуска Linux-приложений с использованием Unikraft в качестве гостевого ядра. Документация, руководство по участию и сведения о встречах сообщества приведены в репозитории.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.