2012-11-03 2 views
4

Erlang은 오류 처리 및 프로세스 격리를위한 고급 기능을 제공합니다.Erlang을 사용한 샌드 박스 사용자 코드

사용자가 공유 서버 환경에서 실행되도록 코드를 제출하고 안전하게해야하는 시스템을 구축 중입니다.

요구 사항은 다음과 같습니다 : 각 사용자 프로세스에 대해 개별적으로

  • 제한 CPU 및 메모리 사용량.
  • 사용자 프로세스가 다른 프로세스와 통신하는 것을 금지합니다 (이러한 프로세스를 위해 특별히 설계된 일부 프로세스 제외).
  • 모든 시스템 리소스 (셸, 파일 시스템 등)에 대한 액세스를 금지합니다.
  • 오류나 자원 소비가 많은 경우 사용자 프로세스를 종료하십시오.

Erlang으로 모든 것을 수행하고 성능을 효율적으로 유지할 수 있습니까?

답변

1

과거에 세이프 얼랑 (Safe Erlang)에 대한 작업이 있었고 이에 대한 여러 논문을 찾을 수 있습니다. ErlHive 프로젝트는 흥미로운 방식으로 문제를 해결합니다.

2

일반적으로 Erlang은 사용자가 삽입 할 수있는 샌드 박스 코드를 제공하지 않습니다. 자신의 보호 코드를 작성할 수도 있지만 다소 어렵습니다.

http://www.haskell.org/ghc/docs/7.4.2/html/users_guide/safe-haskell.html

특히 이런 종류의 작업을 수행하도록 설계되었습니다 :

더 나은 선택은 아마 "안전 하스켈"같은 언어 일 것이다.

Erlang이 제공하는 격리는 악성 모듈이 주입되는 것을 방지하기위한 것이 아닙니다. 실제로 분산 된 경우에도 그러한 보호는 없습니다. 두 대의 기계가 연결되자 마자 다른 기계에 할 수있는 작업에는 제한이 없습니다.