TECH 으로 돌아가기
TECH HACKER NEWS 오늘 9분 읽기 29 READS

루트 권한 없이 띄우는 리눅스 샌드박스 'Drop', gVisor까지 얹은 이유

루트 권한 없이 띄우는 리눅스 샌드박스 'Drop', gVisor까지 얹은 이유
SOURCE IMAGE · HACKER NEWS
루트 권한 없이 띄우는 리눅스 샌드박스 'Drop', gVisor까지 얹은 이유

요즘 AI 코딩 에이전트한테 '이 코드 실행해서 테스트 돌려봐'라고 시키는 게 일상이 됐잖아요. 그런데 잠깐만요, 그 코드가 내 홈 디렉터리를 지우거나 SSH 키를 어디로 보내버리면 어떡하죠? 이런 고민 때문에 '샌드박스'가 다시 뜨거운 주제가 됐는데요, 최근 공개된 'Drop'은 루트 권한 없이(rootless) 리눅스 샌드박스를 띄우고, 원하면 gVisor로 커널 수준 격리까지 걸 수 있는 도구예요. 이 도구 하나를 이해하려면 샌드박스, rootless, gVisor 세 가지 개념을 알아야 하는데, 오늘 그걸 한 번에 정리해 드릴게요.

샌드박스가 뭐길래

이게 뭐냐면, 샌드박스는 말 그대로 '모래놀이터'예요. 아이가 모래놀이터 안에서는 뭘 해도 집이 안 망가지듯, 프로그램을 격리된 공간에 가둬서 밖의 파일이나 네트워크, 다른 프로세스를 건드리지 못하게 하는 거예요. '컨테이너랑 뭐가 달라요?'라고 물으실 수 있는데요, 도커 같은 일반 컨테이너는 호스트와 리눅스 커널을 '공유'해요. 파일 시스템과 프로세스 목록만 따로 보이게 해놓은 거지, 커널에 요청(시스템 콜)을 보내는 통로는 그대로 열려 있어요. 그래서 커널에 취약점이 하나 터지면 컨테이너 안에서 호스트로 빠져나오는 '컨테이너 탈출'이 가능해져요. 신뢰할 수 없는 코드를 돌리기엔 불안한 이유죠.

rootless, 왜 중요한가요

전통적인 도커는 root 권한으로 도는 데몬이 컨테이너를 만들어요. 그래서 도커 그룹에 속한 사용자는 사실상 root나 마찬가지가 돼요. 회사 공용 서버나 CI 러너, 학교 계정처럼 root를 못 받는 환경에서는 아예 못 쓰기도 하고요.

rootless는 리눅스의 '사용자 네임스페이스(user namespace)' 기능으로 이 문제를 풀어요. 이게 뭐냐면, 일반 사용자가 자기만의 가짜 세계를 하나 만들고 그 안에서만 'root인 척' 할 수 있게 해주는 기능이에요. 안에서는 uid 0이지만 밖에서 보면 그냥 내 계정이라, 뭘 해도 호스트 권한은 못 넘어요. 여기에 마운트 네임스페이스로 파일 시스템을 따로 보여주고, 네트워크 네임스페이스로 통신을 끊거나 제한하고, seccomp로 위험한 시스템 콜을 차단하는 식으로 겹겹이 막아요. 플랫팩(Flatpak)이 쓰는 bubblewrap, 구글이 만든 nsjail, Podman의 rootless 모드가 다 이 계열이에요. Drop도 기본적으로 이 계층 위에 서 있다고 보면 돼요. 즉 sudo 없이 내 계정으로 바로 격리 환경을 띄울 수 있다는 뜻이에요.

gVisor, 커널을 하나 더 끼워 넣기

여기서 한 단계 더 나가는 게 gVisor예요. 구글이 만들어서 오픈소스로 공개한 프로젝트인데, 핵심 아이디어가 재밌어요. 컨테이너 안의 프로그램이 커널에 시스템 콜을 보내면, 그걸 호스트 커널로 바로 보내지 않고 중간에서 가로채요. 그리고 Go 언어로 새로 구현한 '가짜 커널'(Sentry라고 불러요)이 그 요청을 대신 처리해요. 파일 열기, 네트워크 소켓, 프로세스 생성 같은 걸 유저 공간에서 흉내 내는 거죠. 진짜 호스트 커널에는 극히 제한된 몇 가지 요청만 전달돼요.

비유하자면, 손님(프로그램)이 주방(호스트 커널)에 직접 들어가서 요리하는 대신, 중간에 웨이터(Sentry)를 둬서 주문만 받고 웨이터가 대신 만드는 구조예요. 손님이 아무리 난동을 부려도 주방까지는 못 들어가요. 호스트 커널의 공격 표면(attack surface)이 확 줄어드는 거죠.

물론 공짜는 아니에요. 시스템 콜을 매번 가로채서 처리하니까, 파일 I/O나 네트워크가 많은 작업은 눈에 띄게 느려질 수 있어요. 그래서 gVisor는 '필요할 때만 켜는' 옵션으로 설계하는 게 일반적이고, Drop이 gVisor를 '지원'한다고 표현하는 것도 이런 맥락이에요. 가벼운 작업은 네임스페이스 격리만으로, 정말 못 믿을 코드는 gVisor까지 켜서 돌리는 식이죠.

업계에서는 뭘 쓰고 있나요

격리 기술은 크게 세 층으로 나눠 볼 수 있어요.

AI 에이전트 쪽으로 좁히면, Anthropic이 Claude Code에서 쓰는 샌드박스 런타임을 오픈소스로 풀었고, OpenAI Codex CLI도 macOS에서는 Seatbelt, 리눅스에서는 Landlock과 seccomp를 조합한 격리를 써요. 다들 '에이전트가 만든 코드를 어디서 돌릴 것인가'에 답을 내고 있는 셈이에요. Drop의 포지션은 이 중에서 '개인 개발자가 root 없이, 설정 최소로, 필요하면 gVisor까지'라는 실용 노선으로 보여요.

한국 개발자에게 주는 시사점

당장 써볼 만한 곳이 꽤 있어요. 첫째, 로컬에서 AI 에이전트를 돌릴 때예요. 에이전트가 만든 스크립트를 내 계정 그대로 실행하는 대신 샌드박스 안에서 돌리면, 실수로 rm -rf가 나가도 피해가 격리 공간 안에 갇혀요. 둘째, 사내 공용 서버나 root 없는 CI 러너에서 외부 오픈소스를 빌드하거나 테스트할 때예요. npm install 한 번에 수백 개 패키지가 설치 스크립트를 실행하는 시대잖아요. 셋째, 코딩 테스트 채점기나 사용자 코드를 실행하는 서비스를 만든다면 gVisor 옵션이 진짜 의미 있어요.

주의할 점도 있어요. gVisor는 리눅스 전용이라 맥에서는 리눅스 VM 위에서 돌려야 하고, 일부 시스템 콜은 아직 구현이 덜 돼서 특정 프로그램이 안 돌 수 있어요. 그리고 샌드박스는 '피해 범위를 줄이는' 도구지 '안전을 보장하는' 도구가 아니에요. 네트워크를 열어두면 격리 안에서도 데이터는 밖으로 나갈 수 있으니, 네트워크 정책을 같이 챙기셔야 해요.

마무리

한 줄로 정리하면, Drop은 'root 없이 바로 쓰는 격리 환경'에 '필요하면 gVisor로 커널까지 막기'를 얹은 도구고, AI 에이전트가 코드를 실행하는 시대에 이런 계층형 격리는 선택이 아니라 기본기가 되어가고 있어요. 여러분은 에이전트가 만든 코드를 지금 어디서 실행하고 계세요? 그냥 터미널에서 바로 돌리시나요, 아니면 이미 뭔가 격리 장치를 두고 계신가요? 경험 공유해 주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://droprun.sh/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...