Bubblewrap

Bubblewrap(실행 파일명: bwrap)은 리눅스 환경에서 일반 사용자가 비특권(unprivileged) 샌드박스를 생성할 수 있도록 지원하는 저수준 핵심 유틸리티다. 루트 권한이 없는 사용자가 리눅스 네임스페이스(User, 마운트, PID, IPC, 네트워크)를 활용해 프로세스를 격리하는 데 사용된다.

작동 방식은 다음과 같다.

  • 프로세스 실행을 위해 비어 있는 새로운 VFS(가상 파일 시스템)와 마운트 네임스페이스를 생성한다.
  • tmpfs를 활용해 임시 루트(/) 파일 시스템을 초기화한다.
  • 사용자가 명령어를 통해 명시적으로 허용한 디렉터리나 파일 경로만 샌드박스 내부로 바인드 마운트(bind mount)한다.
  • 네임스페이스 격리 및 마운트 작업이 완료되면 권한을 해제(drop privileges)하고 샌드박스 내부에서 대상 애플리케이션을 실행한다.

다음은 Bubblewrap과 다른 주요 리눅스 애플리케이션 격리 및 컨테이너 도구(Firejail, Docker)를 비교한 데이터다.

특성BubblewrapFirejailDocker
적용 목적데스크톱 애플리케이션 격리 (저수준 툴)데스크톱 애플리케이션 격리 (고수준 툴)백엔드 서비스 및 클라우드 컨테이너
운영 방식단일 바이너리 실행 (백그라운드 데몬 없음)단일 바이너리 실행 (백그라운드 데몬 없음)데몬 기반 (dockerd 프로세스 필수)
권한 요구비특권 User Namespaces 선호SUID 기반 (루트 권한 임시 필요)루트 권한 기반 (Rootless 모드 지원)
추상화 수준수동으로 모든 마운트 지점 및 권한 지정 필요앱별 사전 정의된 보안 프로필 제공컨테이너 이미지 및 Dockerfile 기반
주요 사용처Flatpak, GNOME Desktop, rpm-ostree개별 웹 브라우저, 메신저 등 사용자 앱 격리마이크로서비스, 웹 서버, 데이터베이스

Bubblewrap은 사용자 친화적인 도구가 아니며, 직접 사용하는 것보다 상위 계층 기술의 백엔드로 활용된다. Flatpak 앱 배포 프레임워크가 애플리케이션의 파일 시스템 접근과 시스템 호출을 통제하기 위해 기본 샌드박스 엔진으로 사용하고 있다.

출처:

Entities