Гипервизоры обеспечивают существенную безопасность с помощью оборудования. Для дополнительного уровня изоляции в среде гипервизора Hyperlight — легкий менеджер виртуальных машин (VMM), предназначенный для встроенного в приложения — обеспечивает безопасное выполнение ненадежного кода в микро -виртуальных машинах с очень низкой задержкой и минимальными накладными расходом. Для еще большей изоляции и улучшенной задержки двоичные файлы Webassembly (WASM) обеспечивают существенную безопасность с помощью изоляции программного происхождения (SFI).
В этой статье мы смотрим на то, что происходит, когда вы объединяете Webassembly с Hyperlight — моделью, которая интегрирует не только песочницу WASM, а не только песочницу Hypervisor, но и в конгруэнтности, обеспечивая глубину защиты. Песочница WASM работает в песочнице Hypervisor, чтобы выполнить Binary Wasm, сказал мне инженер Microsoft Danilo (Дэн).
На конференции Cloud Native Rejekts в Лондоне в марте Chiarlone и Mikhail Krinkin, который также является инженером Microsoft, обсуждались во время их выступления, «Wasm, Engloy и Hyperlight идут в стручку: не допускается уязвимостей», как Webassembly работает с гипервизорами, использующими гиперзвет в качестве менеджера Micro-VM и используемый случай в облегченных сети Anvoy.
«Основное отличие, которое нужно выделить, — это разница в методах изоляции. Webassembly (WASM), как более новая технология, обеспечивает свой собственный механизм песочницы», — сказал Чиарлон. «Напротив, Hyperlight использует технологии Hypervisor, которые используются в течение длительного времени и часто требуются для запуска стороннего кода в общедоступных облачных средах».
Изоляция всего
При создании приложений Hyperlight у вас есть хозяин и гость. Приглашенные заявки — это то, что работает внутри гипер -светильной песочницы, например, песочница WASM и двоичный файл WASM. По умолчанию приложения Hyperlight не предоставляют функциональности гостю. Для безопасности они полностью уединены от внешнего мира. Из -за этого хозяин должен явно предоставить любую функциональность, которую нуждается гость. В примере выступления хост предоставляет сеть, необходимую для гостя, чтобы передавать данные обратно посланнику.
Конец до конца, взаимодействие выглядит следующим образом: (1) приложение встраивания создает песочницу Hyperlight Wasm, подготовленную для выполнения гостя сетевого фильтра Envoy; (2) приложение встраивания вызывает в изолированном госте для вычисления данных; (3) Гость возвращается в хост после предположительно манипулирования данными каким -то образом.
Hyperlight имеет богатую систему типа, позволяющая общаться между гостем и хозяином. По словам Кринкина, одним из практических соображений является возможность обхода системы указанных типов путем использования векторных байтов для всех данных. По словам Кринкина, такие инструменты, как буферы протокола или плоские буферы, могут быть использованы для сериализации и десериализации, что позволяет разработчикам передавать данные и получать любой желаемый интерфейс, не углубляясь в специфику системы гипер -светлого типа.
Кринкин сказал, что Hyperlight написан в «чистой ржавчине», которая вводит несколько соображений. Например, код шаблона необходим для обеспечения взаимодействия между Rust и C ++, так как вызовы в хосте и гневах происходят двунаправленно. По словам Кринкина, хотя количество шаблонов не является незначительным, оно также не особенно сложно и, следовательно, не является серьезной проблемой.
По словам Кринкина, один удивительный — но в конечном итоге предсказуемый — как и в конечном итоге, что хост -гиперсвет многопоточный. Начиная с версии 0.5.0, Hyperlight порождает новую ветку для выполнения песочницы, устанавливая отношения один к одному между потоком и микро-VM. По словам Кринкина, это создало особые проблемы для посланника, который, как и многие сетевые приложения, является асинхронным и основанным на обратном образе. «Большая часть обработки в посланнике происходит в одном потоке, сводя к минимуму необходимость блокировки», — сказал Кринкин. «Следовательно, доступ к структурам данных Envoy из другого потока является проблематичным, так как посланник в значительной степени полагается на хранение потока.
По словам Кринкина, дополнительный патлер был введен для переосмысления всех обратных вызовов в потоку работника Enguer, обеспечивая правильный доступ к структурам данных Envoy. «Это важное соображение интеграции», — сказал Кринкин.
Несмотря на то, что не является проблемой интеграции, Hyperlight предлагает механизм, называемый «контекст вызовов», где могут быть сделаны несколько вызовов для функций гостей без сброса состояния между каждым вызовом. При контексте вызовов приложение встраивания должно явно назвать «отделку» для сброса состояния.
Без контекста вызовов, когда вызов проводится гостю, и этот гость инициализирует данные, такие как сегменты памяти или другие структуры, — все такое состояние теряется, когда гостевой звонок заканчивается. Любой последующий вызов начинается с чистого сланца. Это налагает ограничения на функциональность, которая в настоящее время может быть помещена в Hyperlight WASM. «Такое поведение легко упустить из виду, но оно значительно влияет на дизайнерские решения», — сказал Кринкин.
Был представлен базовый эталон производительности, чтобы продемонстрировать последствия этих характеристик. По словам Кринкина, в эталоне была включена функция ECHO, которая выполняет минимальную логику: отправка полезной нагрузки случайных данных в фиксированном размере и измерения времени обработки пути для ответа. «Это было повторено несколько раз для расчета средней задержки и изменчивости», — сказал Кринкин. «Размер полезной нагрузки также варьировался для оценки его влияния на производительность».
Для эталона сравнивались несколько реализаций: Hyperlight WASM, гость Hyperlight без WASM (не связано с выполнением Webassembly), и реализация прокси-волны с аналогичной функцией Echo. «Хотя вариант прокси -гиазма не является идеальным сравнением яблок с яблоками, он обеспечивает полезную ориентир»,-сказал Кринкин. «Это различие было очевидным для большинства зрителей сопроводительной презентации, и оно было явно признано».
«Текущая производительность Hyperlight является неоптимальной. Однако это признается в качестве отправной точки, а не пункт назначения. Первоначальное профилирование привело к оптимизации в реализации Hyperlight Native. В частности, в то время как Hyperlight WASM активно вытирает состояние между вызовами — дорогостоящим операцией — гипер -светильник может обойти этот шаг, что приводит к улучшению выполнения примерно 15%», — сказал Кринкин. «Дополнительные возможности оптимизации с низким содержанием зондирования остаются, и некоторые накладные расходы могут также связаться с неоптимальной интеграцией. Результаты эталона показали, что увеличение полезной нагрузки с 128 байтов до 4 килобайтов-увеличение на 30 раз-приводило к большему времени выполнения, хотя эффект был маргинальным по сравнению с общим наполнением системы».
Между тем, недавние показатели разработки в области гиперзгирования показывают значительные улучшения (более 50% на вызове функций гостей) с тех пор, как эти тесты были проведены.
Гиперстная сумма
Во время демонстрации Кринкин достиг того, что, по его словам, «глубокая защита», и реализация была относительно простой, сказал Кринкин. «Тем не менее, производительность в настоящее время отсутствует и представляет основную область для улучшения», — сказал Кринкин.
По словам Кринкина, ведутся работа по разработке A API C для WASM, смягчения интеграции в кодовые базы, не связанные с Rust. (Hyperlight Core предлагает C API C, только не Hyperlight WASM в настоящее время.) Интеграция Hyperlight WASM в качестве дополнительного двигателя по прокси-плазму также планируется. Proxy-Wasm является собственной структурой Envoy для выполнения плагинов Webassembly и уже поддерживает несколько двигателей, таких как V8. Кринкин сказал, что Hyperlight может стать одним из этих поддерживаемых двигателей.
«Производительность станет ключевым направлением. Хотя остается много простых оптимизаций, также потребуется более глубокое профилирование и инструменты. Текущие инструменты не легко обнажают накладные расходы на производительность в гостях, что затрудняет анализ», — сказал Кринкин. Разработка инструментов, чтобы сделать Hyperlight выполнение более прозрачным. Наконец, поскольку предполагаемый случай использования Hyperlight включает в себя относительно небольшие вычисления песочницы, накладные расходы на песочницу становится более значимым, поскольку вычислительная рабочая нагрузка уменьшается — поэтому оптимизация производительности Hyperlight имеет решающее значение ».
С учетом улучшений производительности, Hyperlight отличает себя от предоставления дополнительного уровня изоляции оборудования в дополнение к изоляции программного обеспечения WASM, обеспечивая его с уровнем безопасности, необходимым для определенных сред (например, общедоступных облаков) и предоставляя его инструментами для управления жизненным циклом Micro-VM и выполнения, в то же время легко поднимаясь в любое применение пользователя в качестве библиотеки. Чтобы узнать больше о недавних разработках, ознакомьтесь с хранилищем Hyperlight.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. BC Gain является основателем и главным аналитиком Revecom Media. Его одержимость компьютерами началась, когда он взломал консоль космических захватчиков, чтобы играть весь день за 25 центов в местной видеокаде в начале 1980 -х годов. Затем он … читайте больше от B. Cameron Gain