간단 내용
수파베이스 로 레벨 보안 설정
상세 내용
테이블 예
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;
create policy "Enable delete for users based on userId"
on "public"."StaPrivatePrompt"
for delete
using (
(select auth.uid()) = "userId"
);
ALTER TABLE "StaPrivatePrompt"
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
'웹 도구 제작 노트' 카테고리의 다른 글
페이팔 일반/구독 결제 - 사이트에 결제 달기 (0) | 2024.11.21 |
---|---|
Promise 객체 사용 예 (0) | 2024.11.20 |
토스페이먼츠 일반/구독 결제 - 사이트에 결제 달기 (0) | 2024.11.15 |
수파베이스 구글 로그인/회원가입시 테이블에 데이터 추가 (0) | 2024.11.10 |
수파베이스 구글 로그인 설정 (0) | 2024.10.23 |