Supabase
권한 부여
upsert를 위한 권한:
- USAGE: 스키마에 접근할 권한 (이미 하신 것)
- INSERT: 새로운 데이터를 넣을 권한
- UPDATE: 기존 데이터를 수정할 권한
- SELECT: 중복 체크를 위해 기존 데이터를 조회할 권한
-- 1. 테이블 레벨에서 권한 부여 (특정 테이블만 지정하거나 ALL TABLES 사용)
GRANT ALL ON ALL TABLES IN SCHEMA public TO anon, authenticated, service_role;
-- 2. 시퀀스(Sequence) 권한 부여 (ID 자동 증가를 위해 필수)
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO anon, authenticated, service_role;
-- 3. 함수 권한 부여 (필요한 경우)
GRANT ALL ON ALL ROUTINES IN SCHEMA public TO anon, authenticated, service_role;-- 1. 스키마에 대한 권한 부여
GRANT USAGE ON SCHEMA public TO anon, authenticated, service_role;
-- 2. 해당 테이블에 대한 모든 권한 부여 (테이블명에 실제 이름을 넣으세요)
GRANT ALL ON TABLE "테이블명" TO anon, authenticated, service_role;
-- 3. API 서버(PostgREST)가 설정을 다시 읽도록 캐시 새로고침
NOTIFY pgrst, 'reload schema';CORS
Supabase에서 접근 도메인을 관리하는 것은 크게 두 가지 관점으로 나뉩니다. 하나는 **어떤 사이트(도메인)에서 내 Supabase API에 접근할 수 있게 할 것인가(CORS/Auth)**이고, 다른 하나는 내 Supabase 프로젝트 자체를 커스텀 도메인으로 연결하는 것입니다.
1. 인증 및 CORS 관리 (Redirect URLs)
사용자가 로그인을 완료한 후 돌아올 도메인이나, 특정 도메인에서만 인증 요청을 보낼 수 있도록 제한하는 설정입니다.
- 설정 위치:
Authentication>URL Configuration - Site URL: 서비스의 메인 도메인을 입력합니다 (예:
https://myapp.com). - Redirect URLs: 소셜 로그인이나 이메일 인증 후 리다이렉트될 수 있는 허용 도메인 목록을 추가합니다. (예:
http://localhost:3000,https://staging.myapp.com) - 효과: 여기에 등록되지 않은 도메인에서 인증 요청을 보내거나 리다이렉트를 시도하면 보안상 차단됩니다.
2. 커스텀 도메인 설정 (Custom Domains)
기본적으로 제공되는 xxxx.supabase.co 대신 api.myapp.com 같은 본인의 도메인을 사용하는 기능입니다.
- 대상: 프로젝트의 API URL 및 인증 메일 발송 주소 등.
- 설정 방법:
Settings>General>Custom Domain - 절차:
- 사용할 서브도메인 입력 (예:
api.example.com). - 제공되는 CNAME 레코드를 본인의 도메인 관리 서비스(Cloudflare, Route53 등)에 등록.
- TXT 레코드를 통해 소유권 인증.
- 사용할 서브도메인 입력 (예:
- 주의사항: 커스텀 도메인은 보통 Pro Plan 이상에서 지원됩니다.
3. 데이터베이스 레벨 접근 제한 (Network Restrictions)
특정 IP 주소에서만 데이터베이스에 직접 접속(Port 5432 등)할 수 있도록 제한하고 싶을 때 사용합니다.
- 설정 위치:
Settings>Network Constraints - 기능: 특정 IP 대역(CIDR)을 화이트리스트에 등록하여 외부로부터의 무분별한 DB 접속을 차단합니다.
- 참고:
supabase-js를 통한 API 호출(PostgREST)은 이 설정의 영향을 받지 않고 HTTP 통신 보안 정책을 따릅니다.
4. Cloudflare와 연동 시 주의사항 (Proxy)
만약 Cloudflare를 사용 중이라면, Supabase 커스텀 도메인 설정 시 Cloudflare의 **Proxy(주황색 구름)**를 끄고 DNS Only 모드로 먼저 인증해야 할 수도 있습니다. 인증 완료 후 다시 프록시를 켤 수 있지만, SSL 인증서 충돌 여부를 확인해야 합니다.
현재 Mac Studio 환경에서 로컬 테스트 중이시라면, Site URL에 http://localhost:3000이나 현재 사용 중인 로컬 포트를 반드시 추가해 두어야 supabase-js 작업 시 도메인 관련 에러를 피할 수 있습니다.
혹시 특정 도메인에서만 supabase-js가 동작하게 만들고 싶은 상황인가요, 아니면 API 주소 자체를 바꾸고 싶은 상황인가요?