7. 보안 및 예외 처리 (Security & Errors)
7.1. HTTP 에러 응답 표준 규격
클라이언트나 서버가 HTTP 오류를 반환할 때, 다음 JSON 포맷을 Body에 포함해야 한다 (MUST).
{
"error_code": "String (e.g., TOKEN_EXPIRED, SESSION_NOT_FOUND, INVALID_PATH)",
"message": "String (휴먼 리더블 디버깅 메시지)"
}
상태 코드 매핑 규칙:
| HTTP 상태 코드 | 사유 |
|---|---|
400 Bad Request |
필수 파라미터 누락, 잘못된 UUID 포맷. |
401 Unauthorized |
토큰 만료, 서명 불일치, WSS Upgrade 티켓 무효. |
403 Forbidden |
White-list 없는 명령어, 인가되지 않은 디렉토리 접근. |
404 Not Found |
존재하지 않는 session_id 제어 시도. |
409 Conflict |
이미 RUNNING 중인 세션에 reattach: false로 초기화 시도. Config Scope의 config_version 역전 감지 (§4.1.4). |
422 Unprocessable Entity |
설정 갱신 시 필드값 형식, 범위, 상호 정합성 위반 (§4.1.7). |
429 Too Many Requests |
rate_limit 초과. |
500 Internal Server Error |
내부 파일 시스템 오류, 바인딩 충돌 등. |
503 Service Unavailable |
초기 설정 동기화 미완료 상태에서 세션 초기화 시도 (§4.1.2). |
7.2. 보안 제약 및 필수 보호 장치 (MUST)
- 경로 검증 (Path Normalization): 클라이언트는 모든 파일/디렉토리 조회 요청 시 경로 내
../등을 정규화하고 인가된workspace_path범위 내인지 반드시 검증해야 한다 (Directory Traversal 방어). - 명령어 및 에이전트 보호 (Whitelisting): 활성화된
agent_name에 매핑된 명령어만 실행 가능해야 하며, 임의의 쉘 스크립트나 바이너리를 원격으로 주입받아 실행하는 시도는 차단해야 한다 (RCE 방어). - 버퍼 관리 및 OOM 방어: WSS 단절 중 자식 프로세스를 유지할 때 발생하는 출력은 버퍼에 저장하되,
max_buffer_size에 도달하면 반드시 사전에 합의된buffer_overflow_policy(RING/DROP)에 따라 강제로 메모리를 관리하여 게이트웨이 다운을 방지해야 한다. - 도구 호출 보안: RAWP-DPS 1.0 적용 시,
tool.catalog.publish에서 고지된 도구만tool.invoke.request에 사용 가능하며, 고지되지 않은 도구의 호출 요청은 클라이언트가 거부해야 한다 (MUST). 자세한 도구 보안 규칙은 RAWP-DPS 1.0 §15를 참조한다.