Skip to content

[Auth] PAT 쓰기를 에이전트용 다섯 개로 좁힌다 [ #453 ] - #454

Merged
dldnsgkr merged 1 commit into
developfrom
unhak/pat-write-allowlist
Oct 15, 2026
Merged

dldnsgkr merged 1 commit into
developfrom
unhak/pat-write-allowlist

Conversation

@dldnsgkr

Copy link
Copy Markdown
Collaborator

무엇을

JwtAuthenticationFilter 에 PAT 쓰기 허용 목록을 둔다. WRITE PAT 라도 아래 다섯 개 외의 쓰기(POST/PUT/PATCH/DELETE)는 403.

  • POST /api/v1/projects/{id}/deployments
  • POST /api/v1/deployments/{id}/retry
  • POST /api/v1/projects/{id}/environment-variables
  • PATCH /api/v1/projects/{id}/environment-variables/{id}
  • POST /api/v1/projects/{id}/domains

왜

WRITE PAT 로 승인 자체 통과, PAT 재발급, AI 키·AWS 연결 교체, 프로젝트 삭제가 가능했다. 설계상 막혀 있어야 했지만 MCP 가 도구를 안 만든 것으로만 지켜지고 있었다(#453).

차단 목록이 아니라 허용 목록인 이유: 새 엔드포인트가 기본으로 PAT 에 닫힌다.

영향

  • qeploy login: 브라우저 JWT 로 발급 → 영향 없음
  • 브라우저 로그인: 영향 없음 (테스트로 고정)
  • FE 발급 패널의 WRITE 설명("배포 실행, 환경변수 수정, 도메인 연결까지")은 이미 이 범위와 일치

검증

  • JwtAuthenticationFilterTest 15건 통과, 전체 ./gradlew test 통과
  • 되돌리기: 허용 목록 검사 제거 → 거부/전체경로 테스트 2건 실패. 목록에서 retry 한 줄 제거 → 허용 테스트 + agent-tools 소스 대조 테스트 2건 실패
  • agent-tools 대조 테스트는 클라이언트 소스에서 쓰기 호출을 읽어 5건임을 함께 단언(빈 루프 통과 방지)

Closes #453

🤖 Generated with Claude Code

WRITE PAT 가 브라우저 로그인과 같은 쓰기 권한이어서, 승인 결정·PAT 재발급·AI 키/AWS 연결 교체·삭제가
서버에서 막히지 않았다. "에이전트에 노출하지 않는다" 는 MCP 가 도구를 안 만든 것으로만 지켜졌다.

허용 목록(배포 생성·재시도, 환경변수 추가·수정, 도메인 추가)만 통과시키고 나머지 쓰기는 403.
agent-tools 클라이언트의 쓰기 호출이 목록 밖으로 나가면 테스트가 깨진다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dldnsgkr
dldnsgkr merged commit f3a4428 into develop Oct 15, 2026
1 check passed
@dldnsgkr
dldnsgkr deleted the unhak/pat-write-allowlist branch October 15, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant