๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ธฐํƒ€

[supabase] supabase ํ…Œ์ด๋ธ” ๋ณ„ RLS ์—ฌ๋ถ€ ํ™•์ธํ•˜๋Š” ๋ฒ•

by pocket.dev 2025. 11. 13.
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ RLS(Row-Level Security, ํ–‰ ์ˆ˜์ค€ ๋ณด์•ˆ) ์ •์ฑ…: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ • ๋ฐ์ดํ„ฐ ํ–‰์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž๋ณ„, ์—ญํ• ๋ณ„๋กœ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•˜๋Š” ์ •์ฑ…

 

1. RLS ํ™œ์„ฑํ™” ์—ฌ๋ถ€ ํ™•์ธ

Supabase ๋Œ€์‹œ๋ณด๋“œ > ํ”„๋กœ์ ํŠธ > SQL Editor ์— ์ง„์ž…ํ•ด์„œ ์•„๋ž˜ ์ฟผ๋ฆฌ ์ค‘ tablename IN ('', '') ๊ตฌ๋ฌธ์— RLS ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์€ ํ…Œ์ด๋ธ” ๋ช…๋“ค์„ ๋„ฃ๊ณ  ์‹คํ–‰์‹œํ‚ค๋ฉด ๋œ๋‹ค.

SELECT
    schemaname,
    tablename,
    rowsecurity as rls_enabled
FROM pg_tables
WHERE schemaname = 'public'
  AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename;

 

rls_enabled ํ•ญ๋ชฉ์ด true๋กœ ๋˜์–ด์žˆ์œผ๋ฉด RLS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒƒ์ด๊ณ , false๋กœ ๋˜์–ด์žˆ๋‹ค๋ฉด RLS๊ฐ€ ๋น„ํ™œ์„ฑํ™” ๋œ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ด๋ธ” 2๊ฐœ๊ฐ€ ๋ชจ๋‘ RLS์ด ํ™œ์„ฑํ™”๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋‹ค.

 

๋งŒ์•ฝ rls_enabled๊ฐ€ false๋กœ ๋˜์–ด์žˆ๋‹ค๋ฉด RLS๊ฐ€ ๋น„ํ™œ์„ฑํ™” ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ, ํ™œ์„ฑํ™”์‹œ์ผœ์ค˜์•ผ ํ•œ๋‹ค.

-- RLS ํ™œ์„ฑํ™”
ALTER TABLE TABLE_NAME_1 ENABLE ROW LEVEL SECURITY;
ALTER TABLE TABLE_NAME_2 ENABLE ROW LEVEL SECURITY;

-- RLS ํ™œ์„ฑํ™” ์—ฌ๋ถ€ ์žฌํ™•์ธ
SELECT
    schemaname,
    tablename,
    rowsecurity as rls_enabled
FROM pg_tables
WHERE schemaname = 'public'
  AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename;

 

2. ์ •์ฑ… ํ™•์ธ

RLS ํ™œ์„ฑํ™”๊ฐ€ ๋œ ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค๋ฉด, ์ด๋ฒˆ์—๋Š” ์ •์ฑ… ๋‚ด์šฉ์ด ์ œ๋Œ€๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

SELECT
    schemaname,
    tablename,
    policyname,
    cmd,  -- SELECT, INSERT, UPDATE, DELETE
    qual,  -- USING ์กฐ๊ฑด
    with_check  -- WITH CHECK ์กฐ๊ฑด
FROM pg_policies
WHERE schemaname = 'public'
  AND tablename IN ('TABLE_NAME_1', 'TABLE_NAME_2')
ORDER BY tablename, cmd;

 

๊ฐ cmd์— ๋”ฐ๋ผ qual, with_check์ด ์•„๋ž˜์ฒ˜๋Ÿผ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.

 

์ด๋ ‡๊ฒŒ SQL์„ ์‹คํ–‰์‹œ์ผœ์„œ ํ™•์ธ์‹œ์ผœ๋„ ๋˜๊ณ , Supabase ๋Œ€์‹œ๋ณด๋“œ > ํ”„๋กœ์ ํŠธ > Table Editor์—์„œ ํ…Œ์ด๋ธ”์„ ์„ ํƒ ํ›„ RLS Policies ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์„œ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

Table Editor > RLS Policies

 

์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ๋ณด๋ฉด RLS Policies ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋‚˜์˜ค๋Š” ํ™”๋ฉด์ธ๋ฐ, ์ •์ฑ…์ด ์ž˜ ์ ์šฉ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•
Buy Me A Coffee