보안 · 신뢰
실제로 적용한 조치만 적었어요. 외부 인증(SOC 2, ISO 등)은 받지 않았어요.
전송과 접근
- 모든 API 트래픽은 HTTPS(Tailscale Funnel)로 오가요.
- API는 접속 키가 있어야 쓸 수 있어요. 키를 채팅이나 공개 저장소에 올리지 않아요.
- 채팅은 IP당 분당 8회로 제한하고, 요청 크기에도 상한을 둬요.
가상 컴퓨터 격리
- 세션마다 별도의 Docker 컨테이너를 써요. 비루트 사용자(10001)로 돌리고, 모든 권한(capabilities)을 빼고 no-new-privileges를 걸어요.
- 루트 파일시스템은 읽기 전용이고, 작업 공간은 tmpfs(384MB)예요.
- 메모리 768MB, CPU 1.5, 프로세스 256개로 제한하고, 명령에는 시간 제한이 있어요. 기본은 네트워크 없음이에요.
- 쓰지 않는 세션은 일정 시간이 지나면 자동으로 지워요.
데이터
- 대화 기록은 브라우저(localStorage)에만 저장돼요.
- 서버는 요청 수 같은 통계만 메모리에 두고, 답변 평가는 질문·답변 일부(최대 300/600자)와 함께 서버 파일에 남겨요.
- 모든 모드의 모델(High: Google Gemma 4 26B-A4B, Medium: OpenAI gpt-oss-20b, Low: Kakao Kanana 1.5 15.7B-A3B)은 우리 서버에서 돌아가고, 대화를 외부 AI API로 보내지 않아요. 단, 웹 검색이나 날씨 같은 도구를 쓰면 검색어가 해당 서비스로 가요.
보안 문제를 찾으셨다면 GitHub 이슈로 알려 주세요.