프로젝트 소개
Hyperlight는 애플리케이션 내부에 라이브러리로 임베드되어 하이퍼바이저 격리 마이크로 가상 머신에서 신뢰할 수 없는 코드를 실행할 수 있게 해주는 경량 Virtual Machine Manager(VMM)입니다. Cloud Native Computing Foundation 샌드박스 프로젝트이며 현재 1.0 이전 단계이므로 릴리스 간에 API가 변경될 수 있습니다.
작동 방식: 호스트 애플리케이션은 게스트 바이너리로 샌드박스를 구축하고 로컬 함수처럼 VM 경계를 넘어 함수를 호출합니다. 게스트는 no_std Rust 또는 C로 작성된 특수 목적 ELF 바이너리로, 게스트 커널이나 운영 체제가 없어 시작 시간과 메모리 사용량을 낮게 유지합니다. 호스트와 게스트는 타입이 지정된 함수 호출을 통해 통신하며, 게스트는 기본적으로 샌드박스 처리되어 호스트 파일 시스템이나 네트워크에 접근할 수 없습니다. 게스트 상태는 호출 간에 유지되며, snapshot()/restore()를 사용하여 VM 메모리를 저장하고 재설정할 수 있어 VM을 다시 만들지 않고도 샌드박스를 재사용할 수 있습니다.
지원되는 하이퍼바이저로는 KVM, MSHV, Windows Hypervisor Platform이 있습니다. README에는 호스트 함수를 등록하고 게스트를 호출하는 호스트 예제와 #[host_function] 및 #[guest_function]과 같은 매크로를 사용하는 게스트 예제가 나와 있습니다.
명시된 사용 사례로는 하이퍼바이저 수준의 격리로 신뢰할 수 없거나 서드파티 코드 실행, 밀리초 단위로 샌드박스 생성 및 제거, 마이크로초 단위로 게스트 함수 호출, 애플리케이션에 샌드박스 실행 임베드, 하이퍼바이저 격리를 통한 functions-as-a-service 구축, 스냅샷 및 복원을 통한 샌드박스 재사용이 있습니다. 이 프로젝트는 범용 가상화나 syscall, 네트워킹 또는 파일 시스템 접근이 필요한 전체 Linux 게스트 워크로드를 실행하기 위한 것이 아니라고 명시적으로 밝히고 있습니다.
저장소는 호스트 및 게스트 라이브러리, C API 래퍼, picolibc로 구축된 게스트 libc, 게스트 및 컴포넌트 매크로, 트레이싱 지원, 공유 공통 코드, FlatBuffer 스키마 정의, 트레이스 덤프 도구, Rust 및 C로 작성된 테스트 게스트 프로그램으로 구성되어 있습니다. 관련 프로젝트로는 게스트 빌드 및 스캐폴딩을 위한 cargo-hyperlight, WebAssembly 모듈을 위한 hyperlight-wasm, JavaScript를 위한 hyperlight-js, Python, .NET 및 Rust SDK를 통한 다중 백엔드 샌드박싱을 위한 hyperlight-sandbox, Unikraft를 게스트 커널로 사용하여 Linux 애플리케이션을 실행하기 위한 hyperlight-unikraft가 있습니다. 문서, 기여 지침 및 커뮤니티 미팅 세부 정보는 저장소에 제공되어 있습니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.