OhMyPolicy - Supabase RLS 보안 스캐너

OhMyPolicy 메인 화면

OhMyPolicy는 Supabase 프로젝트의 Row Level Security(RLS) 설정을 즉시 분석해주는 보안 스캐너입니다. URL과 API 키를 입력하면 실제 HTTP 요청으로 각 테이블의 익명 접근 여부를 프로빙하고, 테이블별 상태와 수정 SQL을 리포트로 제공합니다.

🔗 서비스 바로가기

📸 스크린샷

OhMyPolicy 랜딩 페이지

🧩 주요 기능

  • 실시간 스캔 스트리밍: 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: 스캔 로직, 토큰 생성, 보안 유틸리티 유닛 테스트

🔍 작동 원리

  1. 스키마 조회: Service Role 키로 PostgREST OpenAPI 스펙에서 테이블 목록과 컬럼 구조 파싱
  2. 병렬 프로빙: Publishable(anon) 키로 각 테이블에 GET/POST 요청 — 응답 코드로 노출 여부 판별
  3. 상태 분류: read_exposed / write_exposed 조합으로 4단계 상태 분류
  4. 리포트 생성: Fix SQL, Supabase 딥링크, Mermaid ERD를 KV에 저장 후 리포트 페이지로 리다이렉트