new row violates row-level security policy
빠른 답변
- 이 오류는 무엇인가요?
- Supabase Storage 업로드에서 403과 new row violates row-level security policy가 함께 표시되는지 확인하고 저장소 객체의 RLS 범위를 식별합니다.
- 이 문서에서 확인할 수 있는 범위는 어디까지인가요?
- Supabase Storage 업로드의 403과 new row violates row-level security policy는 업로드 뒤 객체 메타데이터를 반환하는 SELECT 정책이 없거나 요청 사용자·버킷·경로 조건과 맞지 않을 때 나타날 수 있습니다. 브라우저에 service_role 키를 넣어 해결하지 않습니다.
- 무엇을 먼저 확인해야 하나요?
- HTTP 상태가 403인지 확인합니다.
이 문서의 범위
이 문서는 화면·로그의 오류 원문 또는 상태를 공식 자료와 대조하는 데 사용합니다. 이 문구만으로 실제 원인이나 변경 방법을 확정하지 않으며, 아래 관련 기술 문서에서 적용 환경을 추가로 확인해야 합니다.
현재 증상
- 파일 업로드가 완료되지 않음
- 애플리케이션 오류 메시지
먼저 확인할 항목
HTTP 상태가 403인지 확인합니다.
응답 또는 로그에 `new row violates row-level security policy`가 포함되는지 확인합니다.
업로드 대상 버킷과 객체 경로, 요청 사용자의 인증 상태를 기록합니다.
`storage.objects`에 업로드와 결과 조회를 허용하는 정책이 각각 있는지 확인합니다.
피해야 할 조치
주의
- service_role 키를 브라우저 코드나 공개 로그에 넣지 않습니다.
- RLS를 전체 해제하거나 모든 사용자에게 쓰기를 허용하기 전에 대상 버킷과 경로를 제한합니다.
오류 원문·상태 확인 범위
확인 방법
- 브라우저 Network 또는 서버 로그에서 HTTP 상태가
403인지 확인합니다. - 응답에
new row violates row-level security policy가 있는지 원문 그대로 기록합니다. - 업로드 버킷·경로와 요청 사용자의 인증 상태를 기록합니다.
- Supabase의
storage.objects정책에서 업로드를 허용하는 INSERT 조건과 업로드 결과를 조회하는 SELECT 조건을 각각 비교합니다.
Supabase Storage API가 업로드 뒤 객체 정보를 반환하는 과정에서 SELECT 정책이 요청 조건과 맞지 않으면 INSERT 정책이 있어도 전체 요청이 실패할 수 있습니다. 정책을 바꾸기 전에 대상 버킷과 사용자 조건을 확인하고, service role 키를 클라이언트에 노출하지 마십시오.
참고 자료
Storage error: 403 Forbidden: new row violates row-level security policy on upload (새 창에서 열림)
Supabase · 공식 자료 · 확인 범위: storage-upload-403, select-policy-for-returned-object, storage-objects-rls · 확인일: 2026-07-27