2024년 11월 10일 일요일

수파베이스 로 레벨 보안 설정

간단 내용

수파베이스 로 레벨 보안 설정

상세 내용

테이블 예

CREATE TABLE "PrivatePrompt" (
  "id" serial PRIMARY KEY,
  "name" VARCHAR(255),
  "prompt" TEXT DEFAULT '',
  "help" TEXT DEFAULT '',
  "inputText" TEXT DEFAULT '',
  "result" TEXT DEFAULT '',
  "languageCode" VARCHAR(255) DEFAULT 'ko', -- 언어 (ko, en), public 에서만 사용
  "userId" UUID NOT NULL REFERENCES auth.users (id) ON DELETE CASCADE, -- auth.users 의 id 와 동일
  "date" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
);


정책 예

insert: 로그인 사용자

select: 로그인 사용자

update: 로그인 아이디 와 userId 필드가 같은 사용자

delete: 로그인 아이디 와 userId 필드가 같은 사용자

--PrivatePrompt

create policy "Enable insert for authenticated users only"
on "public"."PrivatePrompt"
for insert to authenticated
with check (
  true
);

--create policy "Enable select for all"
--on "public"."PrivatePrompt"
--for select 
--using (
--  true
--);
create policy "Enable select for authenticated users only"
on "public"."PrivatePrompt"
for select to authenticated
using (
  true
);

create policy "Enable update for users based on userId"
on "public"."PrivatePrompt"
for update 
using (
  (select auth.uid()) = "userId"
);

create policy "Enable delete for users based on userId"
on "public"."PrivatePrompt"
for delete 
using (
  (select auth.uid()) = "userId"
);

ALTER TABLE "PrivatePrompt"
ENABLE ROW LEVEL SECURITY;


Supabase의 Row-Level Security (RLS)는 익명 키 (anon key)와 서비스 키 (service key) 모두에 적용됩니다. 다만, 서비스 키는 더 높은 권한을 가진 키로, RLS를 우회할 수 있습니다.
- 익명 키 (anon key)는 클라이언트에서 직접 사용하기 위해 설계되었고, 보안 목적으로 RLS 정책이 엄격하게 적용됩니다.
- 서비스 키 (service key)는 서버 측에서 사용하기 위해 제공된 것이며, 높은 권한을 가지고 있어 일반적으로 RLS를 무시하고 모든 데이터에 접근할 수 있습니다.


따라서, 클라이언트에서 데이터를 안전하게 제어하려면 익명 키를 사용하고, 서버에서 데이터 접근이 필요할 때 서비스 키를 사용하는 것이 권장됩니다.

강의 동영상

Supabase와 함께 RLS(행 수준 보안)를 사용하여 권한 부여 구현(단계별 가이드) - YouTube


참고 자료


Row Level Security | Supabase Docs
https://supabase.com/docs/guides/database/postgres/row-level-security?utm_source=youtube&utm_medium=social&utm_term=jon&utm_content=Ow_Uzedfohk


Auth | Supabase Docs
https://supabase.com/docs/guides/auth?utm_source=youtube&utm_medium=social&utm_term=jon&utm_content=Ow_Uzedfohk


If you want to expose the anon key publicly you need to enable RLS, otherwise anyone can just read/edit your tables using the anon key and your URL
https://www.reddit.com/r/Supabase/comments/1arc09d/using_supabase_auth_between_a_express_backend_and/


How to Create a Subscription Form with Vanilla JavaScript and Supabase for free | by Antho VDO | Medium
rls (insert)
https://medium.com/@anthony.vdo/how-to-create-a-subscription-form-with-vanilla-javascript-and-supabase-for-free-3f5f992c87ff


AI를 사용하여 Supabase를 사용하는 Postgres에 대한 RLS 정책 활성화 및 생성 - YouTube
https://www.youtube.com/watch?v=hu2SQjvCXIw


Supabase Tutorial #10 - Intro to RLS & Policies - YouTube
https://youtu.be/WAa3a-HxLVs?list=PL4cUxeGkcC9hUb6sHthUEwG7r9VDPBMKO&t=417


Supabase with Vanilla JS - YouTube
https://www.youtube.com/watch?v=mpBaBJEcg04&t=41s

관리

https://github.com/automatethem-prod-web-service/generativeaianywhere-web-app

Sns

https://automatethem.tistory.com/306


https://blog.naver.com/automatethem/223654716191

https://automate-them.blogspot.com/2024/11/blog-post_10.html

댓글 없음:

댓글 쓰기

HTML 미리보기 도구 - 웹 개발을 간편하게 만드는 무료 온라인 유틸리티

HTML 미리보기 도구란 무엇인가요? HTML 미리보기 도구 는 HTML 코드를 작성하면서 실시간으로 결과를 확인할 수 있는 간단하고 유용한 온라인 툴입니다. 이 도구는 웹 개발자는 물론, HTML을 배우는 학생들, 그리고 빠르게 디자인 프로토타입...