OhMyPolicy - Supabase RLS 보안 스캐너
OhMyPolicy는 Supabase 프로젝트의 Row Level Security(RLS) 설정을 즉시 분석해주는 보안 스캐너입니다. URL과 API 키를 입력하면 실제 HTTP 요청으로 각 테이블의 익명 접근 여부를 프로빙하고, 테이블별 상태와 수정 SQL을 리포트로 제공합니다.
🔗 서비스 바로가기
📸 스크린샷
🧩 주요 기능
- 실시간 스캔 스트리밍: Server-Sent Events(SSE)로 테이블별 스캔 진행 상황을 실시간 표시
- RLS 상태 분류: No RLS / Public read / Public write / Protected — 판단이 아닌 현황 그대로 표시
- Fix SQL 자동 생성: 노출된 테이블마다 바로 실행 가능한 RLS 정책 SQL 제공
- Supabase 딥링크: “Open in Supabase SQL Editor” 버튼으로 SQL 에디터에 쿼리 자동 주입
- Schema ERD: PostgREST OpenAPI 스펙 파싱으로 Mermaid erDiagram 자동 생성 — MermanDraw 연동
- 키 미저장 보장: API 키는 스캔 실행에만 사용, 저장·로깅 없음
💡 핵심 기술
- Cloudflare Workers + Hono.js: 서버리스 런타임 — SSE 스트리밍, KV 저장, 라우팅
- Cloudflare KV: 스캔 결과 저장 (72시간 TTL)
- PostgREST OpenAPI:
/rest/v1/엔드포인트에서 테이블 스키마 및 컬럼 정보 파싱 - Server-Sent Events: TransformStream 기반 실시간 스캔 진행 스트리밍
- Vitest: 스캔 로직, 토큰 생성, 보안 유틸리티 유닛 테스트
🔍 작동 원리
- 스키마 조회: Service Role 키로 PostgREST OpenAPI 스펙에서 테이블 목록과 컬럼 구조 파싱
- 병렬 프로빙: Publishable(anon) 키로 각 테이블에 GET/POST 요청 — 응답 코드로 노출 여부 판별
- 상태 분류: read_exposed / write_exposed 조합으로 4단계 상태 분류
- 리포트 생성: Fix SQL, Supabase 딥링크, Mermaid ERD를 KV에 저장 후 리포트 페이지로 리다이렉트