You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
운영 API 노출 경계는 현행 유지한다. server.host: 0.0.0.0, server.auth_token 미설정, allow_insecure_nonloopback_bind: true. 근거: 운영 기기가 Tailscale로 묶여 있고, 같은 로컬 네트워크(집)의 기기도 신뢰한다. (대안 "Tailscale 주소에만 바인드"와 "auth_token 설정"은 기각. 2026년 7월 결정을 재확인한 것.)
이 결정은 코드가 #3870에서 넣은 fail-closed 안전장치를 플래그로 의도적으로 해제한 것이므로, 결정이 문서에 남아 있지 않으면 다음 사람이 사고로 오인한다. 본 이슈는 결정을 문서에 박고, 그 결정과 무관하게 남는 작은 정합 항목을 정리한다.
할 것
결정 기록.docs/source-of-truth.md(또는 docs/security-boundary.md 신설)에 "운영 API는 LAN·Tailscale 신뢰 경계 안에서 토큰 없이 노출한다. allow_insecure_nonloopback_bind: true는 의도된 설정이다. 이 경계를 벗어나는 배포(외부 노출, 공용 네트워크)에서는 auth_token 필수"를 명시. 부팅 시 security: 컨트롤플레인 기본 fail-open — non-loopback bind를 토큰 없이도 허용(경고만) #3870 안전장치가 해제됐을 때 찍는 로그 문구에 이 문서 경로를 넣는다.
API 문서 등재./ws, /tui/*, /hooks/*가 /api/docs 인벤토리(routes/docs/inventory)에 없다. 등재하고, /ws는 ?token= 쿼리 인증, /tui/*·/hooks/*는 "loopback 또는 Bearer" 규칙(routes/auth.rs:34-38)임을 적는다.
/ws 토큰 전달 방식. 현재 URL 쿼리(ws.rs:33-36). 토큰을 쓰는 배포에서는 URL이 로그·프록시에 남으므로 Sec-WebSocket-Protocol 또는 첫 프레임으로 옮긴다. 본 결정(토큰 미사용)에서는 영향 없으므로 P3, 별도 PR 가능.
요청 제한(rate limit)./api/*에 없음. 신뢰 경계 안 노출이므로 본 이슈에서는 하지 않고 기록만 남긴다.
결정 (사용자, 2026-09-05)
운영 API 노출 경계는 현행 유지한다.
server.host: 0.0.0.0,server.auth_token미설정,allow_insecure_nonloopback_bind: true. 근거: 운영 기기가 Tailscale로 묶여 있고, 같은 로컬 네트워크(집)의 기기도 신뢰한다. (대안 "Tailscale 주소에만 바인드"와 "auth_token 설정"은 기각. 2026년 7월 결정을 재확인한 것.)이 결정은 코드가 #3870에서 넣은 fail-closed 안전장치를 플래그로 의도적으로 해제한 것이므로, 결정이 문서에 남아 있지 않으면 다음 사람이 사고로 오인한다. 본 이슈는 결정을 문서에 박고, 그 결정과 무관하게 남는 작은 정합 항목을 정리한다.
할 것
docs/source-of-truth.md(또는docs/security-boundary.md신설)에 "운영 API는 LAN·Tailscale 신뢰 경계 안에서 토큰 없이 노출한다.allow_insecure_nonloopback_bind: true는 의도된 설정이다. 이 경계를 벗어나는 배포(외부 노출, 공용 네트워크)에서는auth_token필수"를 명시. 부팅 시 security: 컨트롤플레인 기본 fail-open — non-loopback bind를 토큰 없이도 허용(경고만) #3870 안전장치가 해제됐을 때 찍는 로그 문구에 이 문서 경로를 넣는다./ws,/tui/*,/hooks/*가/api/docs인벤토리(routes/docs/inventory)에 없다. 등재하고,/ws는?token=쿼리 인증,/tui/*·/hooks/*는 "loopback 또는 Bearer" 규칙(routes/auth.rs:34-38)임을 적는다./ws토큰 전달 방식. 현재 URL 쿼리(ws.rs:33-36). 토큰을 쓰는 배포에서는 URL이 로그·프록시에 남으므로Sec-WebSocket-Protocol또는 첫 프레임으로 옮긴다. 본 결정(토큰 미사용)에서는 영향 없으므로 P3, 별도 PR 가능./api/*에 없음. 신뢰 경계 안 노출이므로 본 이슈에서는 하지 않고 기록만 남긴다.완료 정의
/api/docs에/ws,/tui/*,/hooks/*등재 + 인증 규칙 기재/ws토큰 헤더 이전 (P3, 선택)agentdesk doctor가 "auth_token 미설정 + 비loopback 바인드" 상태를 경고가 아니라 정보로 표시하고 문서 링크를 붙임 (결정된 상태를 매번 경고로 띄우지 않음)관련
01c0c078d8, 운영agentdesk.yamlserver절