Skip to content

fix: 공개 Storage 자산 삭제와 업로드 롤백 처리 #19

Description

@co2plant

우선순위: P2

현재 문제

src/lib/blog-admin.ts는 업로드 즉시 Supabase public URL을 만들지만 자산 교체, URL 초기화, 글 soft-delete 때 Storage 객체와 MediaAsset을 제거하지 않음. Storage 업로드 뒤 DB 트랜잭션이 실패해도 객체를 롤백하지 않음.

영향

한 번 노출된 이미지나 PDF URL을 회수할 수 없고 고아 객체가 계속 누적됨. draft에서 올린 파일도 URL을 알면 공개 접근 가능함.

기대 동작

  • 자산 연결 해제와 글 삭제 시 Storage 수명주기 정책 적용
  • DB 실패 시 업로드 객체 보상 삭제
  • 민감 가능성이 있는 파일은 private bucket과 signed URL 검토
  • 재시도에도 중복 삭제 오류가 발생하지 않도록 멱등 처리

검증 방법

  • 업로드 후 DB 실패를 유도하면 Storage 객체가 남지 않음
  • 자산 교체·초기화·글 삭제 후 기존 URL 접근 정책 확인
  • 삭제 실패를 기록하고 재시도 가능
  • 수정 전에는 고아 객체 테스트가 실패하는지 확인

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions