본문으로 건너뛰기

© 2026 Molayo

LangChain헤드라인2026. 06. 15. 15:06

AI 에이전트를 위한 적절한 샌드박스(Sandbox)를 선택하는 방법

요약

AI 에이전트가 코드를 실행할 때 발생할 수 있는 보안 위험을 방지하기 위한 샌드박스 선택 가이드를 제공합니다. 프롬프트 인젝션 공격으로부터 데이터와 시스템을 보호하기 위한 '치명적인 삼중주' 개념과 안전한 실행 환경 구축의 중요성을 다룹니다.

핵심 포인트

  • AI 에이전트의 코드 실행 능력은 유용하지만 보안 위협을 동반함
  • 프롬프트 인젝션은 데이터와 시스템 침해의 주요 경로임
  • 치명적인 삼중주: 민감 데이터 접근, 신뢰할 수 없는 콘텐츠, 외부 통신 능력
  • 2의 규칙: 세 가지 위험 조건이 충족될 경우 완전 자율 실행 금지
  • 샌드박스를 통해 에이전트의 권한을 제한하고 안전한 경계 구축 필요

AI 에이전트(AI agents)는 행동을 취할 수 있을 때 가장 유용하며, 에이전트가 코드를 작성하고 실행할 수 있도록 허용하는 것은 제공할 수 있는 가장 가치 있는 능력 중 하나입니다. 하지만 그러한 자율성에는 보안 위험이 따릅니다. 에이전트가 작성한 코드는 데이터와 시스템에 예상치 못한 위협을 가할 수 있으므로, 해당 코드가 어디에서 실행되는지, 그리고 무엇에 접근할 수 있는지를 제어해야 합니다.

샌드박스(Sandboxes)는 팀에게 그러한 제어권을 제공합니다. 샌드박스는 AI가 생성한 코드를 격리하고, 권한을 제한하며, 에이전트가 실제 작업을 수행할 수 있도록 더 안전한 경계를 구축합니다. 즉, 에이전트가 안전하게 사용할 수 있는 컴퓨터인 셈입니다. 이 가이드에서는 AI 생성 코드를 실행할 때 발생하는 보안 위험과, 에이전트의 유용성을 제한하지 않으면서 데이터와 시스템을 보호할 수 있는 샌드박싱(sandboxing) 접근 방식을 선택하는 방법을 다룹니다.

에이전트의 치명적인 삼중주 (The Agent Lethal Trifecta)

대규모 언어 모델(LLMs)은 소프트웨어 엔지니어링에 탁월하며, 코드 생성 및 실행은 에이전트가 가치를 창출하는 가장 좋은 방법 중 하나입니다. 코드 자체가 결과물이 될 수도 있고, 에이전트가 소프트웨어 엔지니어링 이외의 작업을 수행하는 데 도움이 되는 프로그램을 만들 수도 있습니다. 후자의 흔한 예로는 맞춤형 데이터 분석을 돕기 위해 일회성 스크립트를 작성하는 것이 있습니다. 그러나 위험 요소는 공격자가 프롬프트 인젝션 (prompt injection)을 사용하여 에이전트가 데이터와 시스템을 침해하는 코드를 작성하도록 유도할 수 있다는 점입니다.

현재 프롬프트 인젝션을 방지할 수 있는 확실한 방법은 없으며, 프롬프트 인젝션 공격을 포함하는 신뢰할 수 없는 콘텐츠는 여러 가지 방식으로 에이전트의 컨텍스트 (context)에 도달할 수 있습니다. 최종 사용자 입력, 외부 MCP 서버 응답, 제3자가 작성한 스킬(skills) 등이 몇 가지 흔한 예입니다. 인기 있는 Django 웹 프레임워크의 공동 저자이자 “프롬프트 인젝션 (prompt injection)”이라는 용어를 만든 사이먼 윌리슨(Simon Willison)은 다음 세 가지 조건이 모두 충족될 때 에이전트가 공격자에게 데이터를 도난당하게 될 수 있음을 의미하는 “치명적인 삼중주 (lethal trifecta)”를 통해 그 위험을 요약합니다:

  • 민감한 데이터에 대한 접근 권한
  • 신뢰할 수 없는 콘텐츠에 대한 노출
  • 외부와 통신할 수 있는 능력

Willison의 연구에서 영감을 받아, Meta는 “2의 규칙 (Rule of Two)”을 적용할 것을 제안했습니다. 이는 세 가지 조건(trifecta)이 모두 적용될 경우, 에이전트가 결코 완전히 자율적으로 실행되어서는 안 된다는 것을 의미합니다.

2의 규칙은 이해하기는 쉽지만, 이를 따르는 것은 어렵습니다. 에이전트에게 필요한 도구를 제공한다는 것은 대개 민감한 데이터에 대한 접근 권한과 외부 통신 능력을 모두 부여하는 것을 의미하기 때문입니다. 파운데이션 모델 (Foundation models)과 하네스 엔지니어링 (Harness engineering)의 발전으로 AI 에이전트는 점점 더 많은 컨텍스트 (Context)를 활용할 수 있게 되었지만, 이는 공격자가 프롬프트 인젝션 공격 (Prompt injection attack)을 보낼 확률을 높입니다.

아마도 당신의 에이전트에도 치명적인 세 가지 조건 (Lethal trifecta)이 적용될 것이며, 이는 에이전트가 어떤 데이터로 어떤 행동을 할 수 있는지 제한하는 안전장치가 필요함을 의미합니다. 세 가지 위험 요소를 먼저 좁힌다면 이러한 제어 장치를 성공적으로 구현하는 것이 훨씬 쉬워집니다. 바로 이 지점에서 샌드박스 (Sandbox)가 도움이 됩니다.

에이전트가 할 수 있는 일에 명확한 경계를 설정하기 위해 샌드박스 사용하기

보안이 강화된 샌드박스 솔루션은 에이전트가 치명적인 세 가지 조건에 노출되는 것을 좁히고, 프롬프트 인젝션 공격이 성공했을 때 발생할 수 있는 피해를 제한하기 위해 다음과 같은 기능을 제공합니다:

  • 격리된 파일 시스템 (Isolated filesystem)
  • 제한된 네트워크 접근 (Limited network access)
  • 리소스 제한 (Resource limits)
  • 제어된 재사용성 (Controlled reusability)
  • 호스트 머신으로부터의 커널 수준 격리 (Kernel-level isolation)

시중에는 스스로를 "샌드박스"라고 부르지만 이러한 기능을 기본적으로 제공하지 않는 제품들도 있으므로, 에이전트를 위한 솔루션을 선택하기 전에 잠재적인 솔루션들을 비판적으로 평가해야 합니다. 예를 들어, 오픈 소스인 Kubernetes Agent Sandbox는 컨테이너 간에 커널 수준의 격리가 적용된 클러스터에 배포될 때만 안전하며, 대부분의 Kubernetes 클러스터는 이를 강제하지 않습니다.

격리된 파일 시스템 (Isolated Filesystem)

샌드박스에는 에이전트가 업무를 수행하는 데 필요한 데이터만 포함되어야 하며, 에이전트가 다른 데이터에 접근하려고 시도하는 것을 차단해야 합니다. 이는 민감한 데이터에 대한 노출을 최소화하는 동시에 감사 (Audit)와 제어를 더 용이하게 만듭니다.

제한된 네트워크 접근 (Limited network access)

샌드박스는 에이전트가 인터넷을 통해 어떤 외부 엔드포인트 (Endpoints)로 데이터를 보낼 수 있는지 지정할 수 있어야 합니다. 이는 공격자가 에이전트를 유도하여 민감한 데이터를 유출하더라도, 에이전트가 귀하가 신뢰하는 엔티티 (Entities)에게만 데이터를 보낼 수 있음을 의미합니다.

리소스 제한 (Resource limits)

샌드박스는 에이전트가 얼마나 많은 컴퓨팅 자원 (Compute)과 메모리 (Memory)를 얼마나 오래 사용할 수 있는지 제어할 수 있어야 합니다. 침해된 에이전트가 시스템의 리소스를 과도하게 소비할 수 없어야 합니다.

제어된 재사용성 (Controlled reusability)

샌드박스를 재사용하는 것은 실행 간에 에이전트 상태 (Agent state)를 유지하는 편리한 방법이 될 수 있지만, 이는 공격자가 한 번 샌드박스를 침해하면 그 피해가 지속될 수 있음을 의미합니다. 샌드박스 솔루션은 해당 위험을 감수할 가치가 있는지 귀하가 결정할 수 있게 해야 합니다.

호스트 머신으로부터의 커널 수준 격리 (Kernel-level isolation from the host machine)

위의 제어 장치들은 에이전트가 이를 강제하는 시스템을 무력화할 수 없을 때만 작동합니다. 불행히도 운영 체제 (Operating systems)를 구동하는 커널 (Kernels)에는 종종 버그가 포함되어 있으며, 침해된 에이전트는 이를 악용하여 귀하의 머신을 제어하고 데이터를 보호하는 모든 제어 장치를 우회할 수 있습니다. 이에 대한 해결책은 가상화 (Virtualization)입니다. 즉, 샌드박스가 실행 중인 머신을 구동하는 커널과 분리된 자체 커널을 사용하여 실행되는 것을 의미합니다. microVM 기반 솔루션을 사용하면 샌드박스당 전체 가상 머신 (Virtual machine)을 생성하는 비용을 들이지 않고도 커널 격리된 샌드박스를 효율적으로 생성할 수 있습니다.

위의 모든 기능을 갖춘 샌드박스 솔루션이 있다고 해서 침해된 에이전트가 귀하의 데이터와 시스템에 가하는 위험에 대해 진지하게 고민할 필요가 없다는 뜻은 아닙니다. 샌드박스만으로는 치명적인 세 가지 요소 (Lethal trifecta)의 어떤 측면도 완전히 제거할 수 없습니다. 대신, 샌드박스는 민감한 데이터에 대한 접근을 축소하고 외부 통신을 제한하여, 프롬프트 인젝션 (Prompt injection) 위험을 관리하는 것이 귀하의 팀이 자신 있게 해결할 수 있을 만큼 작은 문제로 만들 수 있도록 합니다.

LangSmith Sandboxes: 당사의 엔드 투 엔드 (End-to-end) 에이전트 엔지니어링 플랫폼과 통합된 안전한 코드 실행

우리는 LangChain, LangGraph 및/또는 Deep Agents로 구축한 에이전트를 견고하게 테스트, 배포 및 모니터링할 수 있도록, 우리의 오픈 소스 (Open source) 제품을 보완하는 LangSmith 에이전트 엔지니어링 플랫폼을 개발했습니다. 샌드박스 (Sandbox)는 안전한 에이전트를 구축하는 데 필수적인 경우가 많기 때문에, 우리는 LangSmith 내에 관리형 솔루션을 구축했습니다. 우리는 위에 나열된 베스트 프랙티스 (Best practices)를 따라 제품을 설계했으며 엄격한 침투 테스트 (Penetration testing)를 거쳤습니다. LangSmith Sandboxes는 Monday.com과 같은 기업을 포함하여 모든 규모의 기업에서 사용되고 있습니다.

LangSmith Sandboxes는 각각 자체 파일 시스템을 가진 전용 마이크로 VM (microVM)에 의해 지원되어, 서로 간의 격리뿐만 아니라 기반 인프라 (Infrastructure)로부터 커널 수준 (Kernel-level)의 격리를 제공합니다. 사용자는 시작부터 종료, 그리고 최종적인 파괴에 이르기까지 그 생명 주기 (Lifecycle)를 제어할 수 있으며, 과정 중에 필요한 만큼 재사용할 수 있습니다. 샌드박스 내부에서 실행되는 프로세스가 어떤 네트워크 액세스 (Network access)를 가질지(혹은 갖지 않을지)를 사용자가 결정합니다. 또한 우리는 샌드박스를 떠나는 아웃바운드 트래픽 (Outbound traffic)에 안전한 자격 증명 (Credentials)을 주입하는 권한 부여 프록시 (Authorization proxy)를 포함하고 있습니다. 따라서 신뢰할 수 없는 프로세스가 접근하여 오용할 수 있는 샌드박스 내부에 비밀 정보 (Secrets)를 저장할 필요가 없습니다.

사용자는 이미 우리의 관측성 (Observability), 평가 (Evaluations) 및 배포 (Deployment) 기능과 함께 사용 중인 것과 동일한 API 및 인증 (Authentication)을 사용하여 LangSmith Sandboxes를 관리할 수 있습니다. LangChain, LangGraph 또는 Deep Agents로 구축된 에이전트에 샌드박스 사용을 추가하는 데는 단 몇 줄의 코드만 필요합니다.

에이전트를 유용하면서도 안전하게 유지하기 위해 샌드박스를 사용할 준비가 되었다면, 여기 문서를 따라 오늘 바로 LangSmith Sandboxes로 시작할 수 있습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 LangChain Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0