콤퓨타지식 AI 에이전트 샌드박스란? 실행 권한을 격리하는 보안 기술
Landlock·Seccomp부터 네트워크 격리까지, AI 에이전트의 시스템 접근을 통제하는 원리
페이지 정보
본문
작성일
AI 에이전트가 터미널 명령을 실행하고 프로젝트 파일을 수정하며 외부 API에 연결한다면, 자연어로 전달한 작업 지침만으로는 시스템 접근을 통제할 수 없다. AI 에이전트 샌드박스(Agent Sandbox)는 실제 프로그램이 실행되는 환경에 접근 제한을 적용해, 모델의 판단과 별개로 허용된 작업 범위를 설정하는 보안 구조다.
샌드박스는 AI가 올바른 결정을 내리게 만드는 기술이 아니라, AI가 실행한 프로그램에 부여되는 권한을 제한하는 기술이다. 파일·프로세스·네트워크·인증정보의 접근 경계를 분리하고, 작업에 필요한 최소 권한만 제공한다. 다만 허용된 행동의 정확성이나 안전성까지 보장하지는 않는다.
01. AI 에이전트 샌드박스의 정의
격리 실행환경(Sandbox)은 프로그램이 접근할 수 있는 자원과 수행할 수 있는 작업을 정책으로 제한하는 실행 영역이다. AI 에이전트 샌드박스는 이 원리를 코딩 에이전트, 웹 자동화 에이전트, 운영 자동화 에이전트처럼 실제 도구를 호출하는 시스템에 적용한다. 핵심 보호 대상은 모델의 텍스트 출력이 아니라, 모델의 판단을 받아 실행되는 프로세스와 그 프로세스의 시스템 접근이다.
에이전트가 “특정 폴더만 수정하라”는 지시를 받더라도, 해당 프로세스에 전체 사용자 계정의 파일 권한이 주어져 있다면 운영체제는 그 지시를 보안 규칙으로 해석하지 않는다. 반대로 파일 접근 정책이 특정 경로만 허용하도록 설정되어 있다면, 에이전트가 다른 파일을 열려고 시도하더라도 해당 접근을 제한할 수 있다. 이것이 자연어 지시와 시스템 수준 권한 통제의 차이다.
프로그램에는 현재 작업에 필요한 자원과 동작에 대해서만 권한을 부여한다. 샌드박스는 이 원칙을 파일 경로, 실행 사용자, 시스템 호출, 외부 연결과 인증정보에 적용하는 수단이다.
02. 실행환경과 신뢰 경계
일반적인 에이전트 샌드박스는 정책을 보관·승인하는 제어 영역(Control Plane), 제한된 프로그램이 실행되는 작업 영역(Workload), 접근 요청을 실제로 차단하거나 허용하는 정책 집행 지점(Policy Enforcement Point)으로 나눠 이해할 수 있다. 모든 제품이 동일한 프로세스 배치를 갖는 것은 아니며, 보안상 중요한 것은 권한이 높은 관리 구성요소가 에이전트의 임의 코드와 동일한 신뢰 경계에 놓이지 않는지 확인하는 것이다.
NVIDIA OpenShell은 이를 구현한 사례다. 공식 아키텍처 문서에는 Gateway가 정책과 상태를 관리하고, 신뢰된 Supervisor가 작업 영역 바깥에서 정책을 집행하며, 별도의 Sandbox 프로세스가 에이전트 자식 프로세스를 실행하는 신뢰 수준 분리가 제시돼 있다. 문서 버전에 따라 구성요소 설명과 배치가 달라질 수 있으므로 특정 제품의 구현을 모든 샌드박스의 표준 구조로 일반화해서는 안 된다.[1]
03. 파일시스템 격리와 Landlock
파일시스템 격리(Filesystem Isolation)는 에이전트가 어떤 파일과 디렉터리를 읽거나 변경할 수 있는지 제한한다. 예를 들어 웹사이트 수정 작업에서는 작업 사본의 이미지 폴더에만 쓰기를 허용하고, 운영 서버 설정 파일이나 다른 고객 프로젝트는 접근 대상에서 제외할 수 있다.
Linux의 Landlock은 권한이 낮은 프로세스도 자신과 자식 프로세스에 추가 접근 제한을 적용할 수 있도록 하는 보안 모듈(LSM)이다. 파일 경로별 접근 규칙을 정의하고 제한된 작업을 실행할 수 있다. 기존 파일 소유권·접근제어 목록(ACL)과 별도로 작동하는 추가 제한이므로, Landlock에서 허용했다고 해서 운영체제의 다른 권한 검사가 생략되지는 않는다.[2]
| 경로 예시 | 읽기 | 쓰기 | 의미 |
|---|---|---|---|
| /workspace/site/assets | 허용 | 허용 | 이미지 수정 작업 범위 |
| /workspace/site/config | 허용 | 차단 | 설정 확인만 허용 |
| /home/other-client | 차단 | 차단 | 다른 고객 자료 접근 제외 |
| /home/user/.ssh | 차단 | 차단 | 개인키 접근 제외 |
위 표는 개념 설명용 가상 정책이며 실제 Landlock 규칙 파일이나 OpenShell 기본 설정이 아니다. 실제 보호 수준은 마운트 구성, 파일 디스크립터 상속, 커널 지원 버전 등과 함께 검증해야 한다.
04. 프로세스 통제와 Seccomp
프로세스 통제(Process Restriction)는 에이전트가 실행하는 명령에 부여되는 사용자 권한과 커널 기능을 제한한다. 여기에는 비루트 사용자 실행, 권한 상승 차단, Linux Capability 축소, 시스템 호출 필터, 네임스페이스 분리 등이 포함될 수 있다.
시스템 호출 필터(Seccomp BPF)는 프로세스가 커널에 요청하는 시스템 호출을 필터링한다. 예를 들어 특정 관리·추적·마운트 관련 호출을 거부하도록 설정할 수 있다. 다만 Seccomp 자체는 완전한 샌드박스가 아니며, 인수 검사만으로 파일 경로나 네트워크 목적지의 모든 의미를 판단할 수도 없다. 파일·네트워크 통제와 별도의 권한 축소가 필요하다.[3]
| 기술 | 통제 대상 | 한계 |
|---|---|---|
| Seccomp BPF | 프로세스의 시스템 호출 | 단독으로 전체 자원 격리를 보장하지 않음 |
| Namespaces | 프로세스가 보는 PID·마운트·네트워크 등 | 호스트 커널을 공유할 수 있음 |
| Linux Capabilities | 루트 권한을 세분화한 특권 | 잘못 남긴 권한은 공격 표면이 됨 |
| Cgroups | CPU·메모리·프로세스 등 자원 사용 | 접근 권한 통제 자체를 대체하지 않음 |
특히 서비스 거부(DoS) 위험을 줄이려면 파일·프로세스 접근 정책과 별도로 CPU·메모리·프로세스 수·실행 시간 등의 자원 상한을 설정해야 한다.
05. 네트워크 격리와 정책 프록시
네트워크 격리(Network Isolation)는 에이전트가 연결할 수 있는 목적지와 포트, 필요하면 HTTP 요청의 경로·메서드까지 제한하는 방식이다. 일반적인 설계에서는 에이전트의 직접 외부 연결을 막고 정책 프록시(Policy Proxy)를 통해 승인된 요청만 내보낸다.
실제 구현에서는 DNS 조회와 연결 대상의 불일치, 사설 주소나 클라우드 메타데이터 주소 접근, 프록시 우회, TLS 암호화로 인한 요청 내용 검사 한계 등을 고려해야 한다. OpenShell의 보안 정책 문서는 목적지·포트·실행 바이너리·선택적인 애플리케이션 계층(L7) 규칙을 사용한다고 설명한다.[4]
06. 인증정보 격리와 권한 갱신
인증정보 격리(Credential Isolation)는 에이전트가 외부 API를 호출하더라도 API 키나 서비스 토큰을 무제한으로 읽거나 재사용하지 못하게 만드는 설계다. 한 방식은 비밀정보를 관리 영역에 보관하고, 승인된 목적지로 나가는 요청에 필요한 인증정보만 프록시가 주입하는 것이다.
그러나 “원본 키를 볼 수 없다”와 “해당 키로 수행 가능한 작업을 오용할 수 없다”는 다른 문제다. 승인된 API가 삭제나 결제 등 민감한 작업을 허용한다면 요청별 권한, 최소 범위 토큰, 사람의 승인, 사용량 제한을 추가로 설계해야 한다.
정적 정책(Static Policy)은 샌드박스 시작 시 적용하는 파일·프로세스 제한처럼 실행 중 확대하기 어려운 통제다. 동적 정책(Dynamic Policy)은 실행 중 네트워크 허용 목록이나 연결 대상을 변경할 수 있는 통제다. OpenShell은 이 둘을 구분하며, 네트워크 정책의 변경은 검증 절차를 거쳐 적용하고 정적 통제 변경에는 작업 영역 재생성이 필요하다고 설명한다.[4]
07. Sandbox·Container·VM의 차이
샌드박스·컨테이너·가상머신은 같은 수준의 개념이 아니다. 샌드박스는 접근을 제한한다는 보안 목적과 정책을 뜻하고, 컨테이너와 가상머신은 주로 프로그램을 실행하고 자원을 분리하는 기반 기술을 뜻한다. 따라서 컨테이너 안에 샌드박스 정책을 적용하거나 가상머신 안에 여러 샌드박스를 배치할 수 있다.
| 구분 | 주요 목적 | 대표적인 분리 방식 | 유의점 |
|---|---|---|---|
| Sandbox | 프로그램의 행동·접근 권한 제한 | 파일·프로세스·네트워크 정책 | 구현에 따라 격리 강도가 달라짐 |
| Container | 애플리케이션 실행환경 패키징·분리 | 네임스페이스·Cgroups 등 | 일반적으로 호스트 커널 공유 |
| VM | 독립된 가상 컴퓨터 실행 | 하이퍼바이저·게스트 OS | 게스트와 호스트 사이의 별도 경계 |
| MicroVM | 경량화된 가상머신 실행 | 축소된 가상 장치와 VMM | VM의 일종이며 보안 정책 설계는 별도 |
컨테이너나 VM을 사용했다는 사실만으로 작업 권한이 최소화되지는 않는다. 반대로 파일 접근 제한만 적용한 샌드박스가 커널 취약점이나 네트워크 우회까지 모두 막아 주는 것도 아니다.
08. 위협 모델과 기술적 한계
샌드박스의 주요 목표는 허용되지 않은 자원 접근과 피해 확산을 제한하는 것이다. 그러나 에이전트가 정상 권한으로 접근할 수 있는 파일을 잘못 수정하거나, 승인된 API로 잘못된 요청을 보내는 문제는 샌드박스만으로 해결되지 않는다.
| 위협 | 샌드박스가 할 수 있는 일 | 남는 문제 |
|---|---|---|
| 미승인 파일 읽기 | 파일 경로별 접근 제한 | 잘못 허용된 경로의 정보 노출 |
| 외부 데이터 유출 | 목적지·포트·요청 제한 | 승인된 목적지를 통한 유출 |
| 위험한 시스템 호출 | Seccomp·권한 축소 | 커널 취약점 및 허용된 호출 악용 |
| 프롬프트 인젝션 | 공격에 따른 시스템 접근 범위 제한 | 모델의 지시 해석 오류 자체는 지속 |
| 허용된 파일의 잘못된 수정 | 다른 파일로의 피해 확산 제한 | 수정 품질·업무 정확성은 별도 검증 |
| 자원 고갈 | Cgroups·시간 제한 등 결합 | 적절한 한도와 모니터링 필요 |
이 때문에 심층 방어(Defense in Depth)가 필요하다. 샌드박스와 함께 코드 검토, 테스트, 배포 승인, 백업·복구, 접근 감사, 최소 범위 인증정보를 결합해야 실제 업무에서의 피해를 줄일 수 있다.
09. 구현 시 검증해야 할 보안 조건
AI 에이전트 샌드박스의 보호 범위를 평가할 때는 “샌드박스 사용 여부”보다 실제 보안 경계와 우회 가능성을 확인하는 편이 정확하다. 다음 항목은 특정 제품의 권장 설정이 아니라 일반적인 기술 검증 질문이다.
| 검증 영역 | 확인할 질문 |
|---|---|
| 실행 권한 | 에이전트가 루트 권한이나 불필요한 Linux Capability를 보유하는가? |
| 파일 접근 | 허용 목록 밖의 파일·마운트·기존 열린 파일 디스크립터 접근이 차단되는가? |
| 네트워크 | 프록시를 거치지 않는 직접 연결·DNS·사설 주소 접근이 제한되는가? |
| 인증정보 | 원본 키가 에이전트에 노출되는가? 승인된 API에서 오용 가능한 권한은 무엇인가? |
| 정책 변경 | 정책 검증 실패나 제어 영역 연결 단절 시 기존 제한이 유지되는가? |
| 관찰과 복구 | 차단 이벤트·작업 내역이 기록되는가? 잘못된 수정은 되돌릴 수 있는가? |
OpenShell과 같은 구현체를 평가할 때는 공식 보안 문서의 실제 집행 위치, 지원하는 런타임과 커널 버전, 기본 정책, 정책 변경 실패 시 동작을 함께 확인해야 한다. 제품 아키텍처가 개정될 수 있으므로 일반 원리와 특정 버전의 구현을 구분하는 것이 중요하다.
AI 에이전트 샌드박스의 본질은 모델의 판단을 신뢰하는 대신 실제 실행 프로세스에 최소 권한을 적용하는 것이다. 파일·프로세스·네트워크·인증정보를 서로 다른 집행 지점에서 제한하고, 관리 영역과 에이전트 작업 영역의 신뢰 경계를 분리한다. 다만 샌드박스는 허용된 작업의 품질과 정확성을 보증하지 않으므로, 별도의 검증·승인·복구 체계가 필요하다.
- AI 에이전트(AI Agent)
- 목표 달성을 위해 모델의 판단에 따라 도구 호출이나 여러 단계의 작업을 수행하는 소프트웨어 시스템.
- 샌드박스(Sandbox)
- 프로그램의 시스템 자원 접근과 실행 권한을 제한하는 격리 실행환경.
- 신뢰 경계(Trust Boundary)
- 서로 다른 권한·신뢰 수준을 가진 구성요소 사이의 보안상 경계.
- 최소 권한 원칙(Least Privilege)
- 작업에 필요한 최소한의 자원과 동작에만 접근을 허용하는 보안 원칙.
- Landlock
- Linux에서 프로세스가 추가 파일 접근 제한 등을 적용할 수 있도록 하는 보안 모듈.
- Seccomp BPF
- Linux 프로세스가 사용할 수 있는 시스템 호출을 필터링하는 기능.
- 네임스페이스(Namespaces)
- 프로세스가 인식하는 시스템 자원의 범위를 분리하는 Linux 기능.
- 정책 프록시(Policy Proxy)
- 외부 연결을 중계하면서 목적지·요청 규칙에 따라 허용 또는 거부하는 구성요소.
- 인증정보 격리(Credential Isolation)
- API 키·토큰 등 비밀정보의 노출과 사용 범위를 분리·제한하는 방식.
- 정적·동적 정책(Static / Dynamic Policy)
- 실행 시작 시 고정되는 제한과 실행 중 검증 후 갱신할 수 있는 제한.
- 심층 방어(Defense in Depth)
- 단일 보안 통제에 의존하지 않고 여러 보호 계층을 결합하는 원칙.
- NVIDIA OpenShell, Sandbox Architecture.
- Linux Kernel, Landlock: unprivileged access control.
- Linux Kernel, Seccomp BPF.
- NVIDIA OpenShell, Security Policy.
- NVIDIA OpenShell, How OpenShell Works.
- Linux man-pages, namespaces(7).
- NVIDIA OpenShell, Security Best Practices.
- 이전글Chrome·Firefox·Edge, 브라우저 업데이트 주기 2주로 단축 26.09.30
- 다음글NVIDIA, AI 에이전트 보안 플랫폼 공개 26.09.29
