본문으로 건너뛰기

0004 — CBotBuilder는 웹 호스트에서 샌드박스 컨테이너에서 실행됩니다

컨텍스트​

사용자의 cBot을 빌드한다는 것은 신뢰할 수 없는 MSBuild를 실행한다는 의미입니다 — 빌드 시간에 임의의 코드(대상, 소스 생성기, 복원 스크립트). SDK 컨테이너를 스핀업하려면 Docker 소켓이 필요합니다. 노드는 거래 컨테이너를 실행하고 또한 빌드 권한을 가지고 있어서는 안 됩니다.

결정​

CBotBuilder는 웹 호스트에서 실행됩니다(이미 Docker 소켓이 있음), 일회용 SDK 컨테이너 내:

  • bind-mounted /work 디렉토리(빌드 입력/출력만, 호스트 파일 시스템 아님);
  • 복원 성능을 위한 공유된 app-nuget-cache 볼륨;
  • 복원에 필요한 것 외에는 호스트 네트워크 접근 없음.

따라서 신뢰할 수 없는 MSBuild는 호스트 파일 시스템 또는 네트워크에 접근할 수 없습니다. 대조적으로 실행/백테스트 컨테이너는 NodeScheduler에 의해 선택된 노드에서 실행됩니다.

결과​

  • 빌드 권한(Docker 소켓)은 웹 호스트로 제한됩니다; 노드는 허용된 거래 이미지만 실행합니다.
  • 각 빌드는 일회용 컨테이너에서 격리됩니다 — 악의적인 빌드는 유지되거나 탈출할 수 없습니다.
  • 웹 호스트는 사용 가능한 Docker 소켓이 있어야 합니다; 이는 배포 요구 사항입니다, 선택 사항이 아닙니다.