Bubblewrap
Bubblewrap(실행 파일명: bwrap)은 리눅스 환경에서 일반 사용자가 비특권(unprivileged) 샌드박스를 생성할 수 있도록 지원하는 저수준 핵심 유틸리티다. 루트 권한이 없는 사용자가 리눅스 네임스페이스(User, 마운트, PID, IPC, 네트워크)를 활용해 프로세스를 격리하는 데 사용된다.
작동 방식은 다음과 같다.
- 프로세스 실행을 위해 비어 있는 새로운 VFS(가상 파일 시스템)와 마운트 네임스페이스를 생성한다.
- tmpfs를 활용해 임시 루트(
/) 파일 시스템을 초기화한다. - 사용자가 명령어를 통해 명시적으로 허용한 디렉터리나 파일 경로만 샌드박스 내부로 바인드 마운트(bind mount)한다.
- 네임스페이스 격리 및 마운트 작업이 완료되면 권한을 해제(drop privileges)하고 샌드박스 내부에서 대상 애플리케이션을 실행한다.
다음은 Bubblewrap과 다른 주요 리눅스 애플리케이션 격리 및 컨테이너 도구(Firejail, Docker)를 비교한 데이터다.
| 특성 | Bubblewrap | Firejail | Docker |
|---|---|---|---|
| 적용 목적 | 데스크톱 애플리케이션 격리 (저수준 툴) | 데스크톱 애플리케이션 격리 (고수준 툴) | 백엔드 서비스 및 클라우드 컨테이너 |
| 운영 방식 | 단일 바이너리 실행 (백그라운드 데몬 없음) | 단일 바이너리 실행 (백그라운드 데몬 없음) | 데몬 기반 (dockerd 프로세스 필수) |
| 권한 요구 | 비특권 User Namespaces 선호 | SUID 기반 (루트 권한 임시 필요) | 루트 권한 기반 (Rootless 모드 지원) |
| 추상화 수준 | 수동으로 모든 마운트 지점 및 권한 지정 필요 | 앱별 사전 정의된 보안 프로필 제공 | 컨테이너 이미지 및 Dockerfile 기반 |
| 주요 사용처 | Flatpak, GNOME Desktop, rpm-ostree | 개별 웹 브라우저, 메신저 등 사용자 앱 격리 | 마이크로서비스, 웹 서버, 데이터베이스 |
Bubblewrap은 사용자 친화적인 도구가 아니며, 직접 사용하는 것보다 상위 계층 기술의 백엔드로 활용된다. Flatpak 앱 배포 프레임워크가 애플리케이션의 파일 시스템 접근과 시스템 호출을 통제하기 위해 기본 샌드박스 엔진으로 사용하고 있다.
출처:
- Containers Organization, “Bubblewrap Documentation”, GitHub Repository. https://github.com/containers/bubblewrap
- ArchWiki, “Bubblewrap”, Arch Linux Wiki. https://wiki.archlinux.org/title/Bubblewrap
- Flatpak Team, “Under the Hood: Sandboxing”, Flatpak Documentation. https://docs.flatpak.org/en/latest/under-the-hood.html