gVisor — программное решение для изоляции рабочих нагрузок, разработанное компанией Google. Оно реализует пользовательское пространство ядра (user-space kernel), перехватывая и обрабатывая системные вызовы приложений с целью создания дополнительного уровня изоляции между приложением и хост-системой. gVisor предназначен для безопасного запуска контейнеров и неподтверждённого кода, сочетая подходы традиционных виртуализационных технологий и механизмов песочницы для минимизации привилегий, доступных исполняемому коду.
Проект возник как ответ на потребность в более лёгкой по накладным расходам альтернативе виртуальным машинам при сохранении высокого уровня безопасности. В отличие от гипервизоров gVisor не эмулирует полный аппаратный стек, а в отличие от простых фильтров системных вызовов реализует собственную среду выполнения, реализующую значительную часть поведения ядра. В результате обеспечивается более строгая изоляция, чем у традиционных контейнерных технологий, при более низкой стоимости по сравнению с полноценной виртуализацией.
- User-space kernel: реализует обработку системных вызовов в пространстве пользователя, уменьшая прямой доступ контейнера к ядру хоста.
- Изоляция процесса: ограничивает воздействие вредоносного или ошибочного кода на остальную систему путём контроля операций ввода-вывода и управления ресурсами.
- Совместимость с контейнерами: проект ориентирован на работу с существующими контейнерными образами и инструментами оркестрации, предоставляя альтернативу без значительной переработки приложений.
- Гибридный подход: сочетает элементы виртуализации и песочницы, обеспечивая баланс между безопасностью и производительностью.
- Конфигурируемость: позволяет настраивать политики безопасности и ограничения для отдельных рабочих нагрузок.
- Аудируемость и минимизация доверия: уменьшает поверхность атаки за счёт явного контролирования системных вызовов и минимизации доверия к хост-ядру.
- Производительность: ориентирован на снижение накладных расходов по сравнению с виртуальными машинами за счёт частичной эмуляции функций ядра и оптимизаций исполнения.
- Типичные сценарии использования: запуск многопользовательских сервисов, выполнение неподтверждённого или третьестороннего кода, усиление безопасности в средах оркестрации контейнеров.