Supabase 입문 가이드: Auth, RLS, 데이터베이스를 빠르게 시작하는 법
Dev
마지막 업데이트

Supabase 입문 가이드: Auth, RLS, 데이터베이스를 빠르게 시작하는 법


많은 프론트엔드 개발자는 UI는 빠르게 만들지만, 인증과 저장소, 권한, 데이터베이스 설계가 한꺼번에 들어오면 속도가 급격히 느려집니다.

그래서 Supabase가 매력적입니다. PostgreSQL, Auth, storage, access control을 한곳에서 다룰 수 있기 때문입니다. 다만 schema와 RLS를 초반에 잡지 않으면, 나중에 오히려 더 복잡해집니다.

이 글은 Supabase를 처음 붙일 때 무엇부터 설정해야 하는지, 무엇을 피해야 하는지, 그리고 첫 production 형태의 프로젝트를 어떤 관점으로 봐야 하는지 정리한 가이드입니다.


왜 Supabase가 매력적인가

Supabase는 여러 백엔드 기본 요소를 한 플랫폼에서 해결합니다.

  • PostgreSQL 데이터베이스
  • 인증
  • 스토리지
  • realtime 기능
  • edge functions

사이드 프로젝트나 MVP에서는 이 조합이 초기 설정 부담을 크게 줄여줍니다.

row-level access control이 중요하다는 걸 이미 알고 있다면, Supabase RLS Policy Examples for Beginners를 바로 이어서 보는 것도 좋습니다.

무엇부터 설정할까

초보자에게는 보통 이 순서가 무난합니다.

  1. 프로젝트 생성
  2. 핵심 테이블 설계
  3. Auth 방식 검토
  4. 올바른 API 키 확인
  5. RLS 활성화와 테스트

중요한 건 순서 자체보다, schema와 access rule을 나중 청소 작업처럼 미루지 않는 것입니다.

처음엔 최소 schema부터 시작하기

첫 설정이 복잡해지는 이유 중 하나는, 실제 흐름이 나오기 전부터 제품 전체 모델을 다 설계하려고 하기 때문입니다.

더 좋은 시작점은 이 정도입니다.

  • users 또는 profiles
  • 핵심 테이블 1~2개
  • 명확한 ownership 컬럼
  • 분명한 관계

예를 들면:

create table projects (
  id uuid primary key default gen_random_uuid(),
  owner_id uuid not null references auth.users(id),
  name text not null,
  created_at timestamptz not null default now()
);

이런 구조가 나중에 RLS를 훨씬 더 쉽게 만듭니다.

Auth와 API 키를 섞지 않기

Supabase를 처음 쓸 때 가장 자주 하는 실수 중 하나가 이 구분입니다.

  • anon key는 브라우저에서 RLS와 함께 쓰는 공개 키
  • privileged key는 공개 프론트엔드 코드에 두면 안 되는 키

말로는 단순하지만, 초반에는 이 경계가 자주 흐려집니다. 그러면 접근이 깨지거나, 더 나쁘게는 보안 문제가 생깁니다.

왜 RLS를 초반부터 봐야 하나

RLS는 “나중에 붙이는 보안 옵션”이 아닙니다. 프로젝트 구조를 결정하는 핵심 요소에 가깝습니다.

로그인은 되는데 row access가 너무 열려 있거나 반대로 전부 막혀 있으면, 데모는 되지만 실제 서비스는 되지 않습니다.

초반에 이해해야 할 것은 이 세 가지입니다.

  • RLS가 브라우저 access에 어떤 영향을 주는지
  • ownership policy가 어떻게 동작하는지
  • 인증된 read/write를 어떻게 테스트하는지

아주 단순한 ownership policy 예시

처음부터 복잡한 policy 묶음이 필요한 것은 아닙니다.

alter table projects enable row level security;

create policy "users can read their own projects"
on projects
for select
using (auth.uid() = owner_id);

이 정도만 해도 브라우저 access가 왜 RLS 아래에서만 안전한지 감을 잡기 좋습니다.

어떤 프로젝트에 잘 맞을까

프로젝트 유형적합도이유
사이드 프로젝트 MVP매우 높음Auth, DB, storage를 빠르게 붙일 수 있음
관리자 대시보드높음CRUD와 access control이 비교적 단순함
커뮤니티나 채팅 제품높음Auth와 realtime 조합이 강함
매우 복잡한 백엔드 플랫폼중간더 커스텀한 구조가 맞을 수 있음

Supabase는 모든 것을 직접 만들기보다, 실용적인 백엔드 기능을 빠르게 붙이고 싶을 때 특히 좋습니다.

초반에 자주 하는 실수

1. RLS를 끄고 나중에 붙이기

초반엔 빨라 보여도, 나중에 access rule을 신뢰하기 어려워집니다.

2. 브라우저용 키와 privileged 키를 섞기

접근 오류나 실제 노출 위험으로 이어지는 대표 실수입니다.

3. schema보다 화면부터 만들기

처음엔 생산적으로 보이지만, 관계 변경 비용이 뒤에서 크게 돌아옵니다.

4. Auth만 붙이고 장기 access rule은 생각하지 않기

로그인은 표면일 뿐이고, ownership과 policy 설계가 실제 핵심입니다.

배포 전에 꼭 확인할 것

실전 프로젝트라면 먼저 아래를 확인합니다.

  • 테이블이 실제 데이터 모델과 맞는가
  • API 키가 올바른 위치에서 쓰이는가
  • 필요한 테이블에 RLS가 켜져 있는가
  • 인증된 사용자가 자기 데이터만 읽고 쓸 수 있는가

첫 로그인 성공 화면보다 이런 확인이 훨씬 더 중요합니다.

FAQ

Q. 혼자 만드는 프론트엔드 프로젝트에도 Supabase가 괜찮나요?

네. 오히려 그런 경우에 가장 큰 장점이 드러나는 편입니다.

Q. 기본 설정 다음엔 무엇을 먼저 배워야 하나요?

RLS, ownership rule, schema 설계입니다.

Q. 사이드 프로젝트에서 Supabase와 Firebase 중 뭐가 더 좋나요?

관계형 데이터와 PostgreSQL이 중요하면 Supabase가 더 자연스럽고, 문서형 모델이 더 잘 맞으면 Firebase가 더 단순할 수 있습니다.

먼저 읽어볼 가이드

검색 유입이 많은 핵심 글부터 이어서 보세요.

광고